From 741482a80d5bb5306991781b6b3f58c9bba2d1c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Genevi=C3=A8ve=20Bastien?= Date: Thu, 19 Sep 2024 15:43:47 -0400 Subject: [PATCH] Remove the `format.txt` file This file was accidentally committed long ago and should not be in the project at all --- packages/transition-common/format.txt | 6342 ------------------------- 1 file changed, 6342 deletions(-) delete mode 100644 packages/transition-common/format.txt diff --git a/packages/transition-common/format.txt b/packages/transition-common/format.txt deleted file mode 100644 index 7801fcf3..00000000 --- a/packages/transition-common/format.txt +++ /dev/null @@ -1,6342 +0,0 @@ -yarn run v1.22.19 -$ prettier-eslint $PWD/'src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts' --write --list-different -l trace && eslint --fix . -Trace: prettier-eslint [TRACE]: called format with options: Object { - "eslintPath": undefined, - "filePath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts", - "logLevel": "trace", - "prettierLast": false, - "prettierOptions": Object { - "arrowParens": undefined, - "bracketSpacing": undefined, - "insertPragma": undefined, - "proseWrap": undefined, - "requirePragma": undefined, - "semi": undefined, - "singleQuote": undefined, - "useTabs": undefined, - }, - "prettierPath": undefined, - "text": "import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory - } = result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} -", -} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:61:10) - at MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:60) - at MergeMapSubscriber._tryNext (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:69:27) - at MergeMapSubscriber._next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:59:18) - at MergeMapSubscriber.Subscriber.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subscriber.js:66:18) - at AsyncSubject.Subject.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subject.js:60:25) - at AsyncSubject.complete (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/AsyncSubject.js:53:35) - at handler (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/observable/bindNodeCallback.js:53:33) - at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) -Trace: prettier-eslint [TRACE]: creating ESLint CLI Engine to get the config for "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts" - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at getESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:246:10) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:70:77) - at MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:60) - at MergeMapSubscriber._tryNext (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:69:27) - at MergeMapSubscriber._next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:59:18) - at MergeMapSubscriber.Subscriber.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subscriber.js:66:18) - at AsyncSubject.Subject.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subject.js:60:25) - at AsyncSubject.complete (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/AsyncSubject.js:53:35) - at handler (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/observable/bindNodeCallback.js:53:33) -Trace: prettier-eslint [TRACE]: requiring "eslint" module at "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/eslint/lib/api.js" - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at requireModule (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:369:12) - at getESLint (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:383:7) - at getESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:250:39) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:70:77) - at MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:60) - at MergeMapSubscriber._tryNext (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:69:27) - at MergeMapSubscriber._next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/operators/mergeMap.js:59:18) - at MergeMapSubscriber.Subscriber.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subscriber.js:66:18) - at AsyncSubject.Subject.next (/home/gbastien/Mobilité/sources/transition/node_modules/rxjs/internal/Subject.js:60:25) -prettier-eslint [DEBUG]: getting eslint config for file at "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts" -Trace: prettier-eslint [TRACE]: eslint config for "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts" received Object { - "env": Object {}, - "globals": Object { - "ArrayBuffer": "readonly", - "Atomics": "readonly", - "BigInt": "readonly", - "BigInt64Array": "readonly", - "BigUint64Array": "readonly", - "Buffer": "readonly", - "DataView": "readonly", - "Float32Array": "readonly", - "Float64Array": "readonly", - "GLOBAL": "readonly", - "Int16Array": "readonly", - "Int32Array": "readonly", - "Int8Array": "readonly", - "Intl": "readonly", - "Map": "readonly", - "Promise": "readonly", - "Proxy": "readonly", - "Reflect": "readonly", - "Set": "readonly", - "SharedArrayBuffer": "readonly", - "Symbol": "readonly", - "TextDecoder": "readonly", - "TextEncoder": "readonly", - "URL": "readonly", - "URLSearchParams": "readonly", - "Uint16Array": "readonly", - "Uint32Array": "readonly", - "Uint8Array": "readonly", - "Uint8ClampedArray": "readonly", - "WeakMap": "readonly", - "WeakSet": "readonly", - "WebAssembly": "readonly", - "__dirname": "readonly", - "__filename": "readonly", - "clearImmediate": "readonly", - "clearInterval": "readonly", - "clearTimeout": "readonly", - "console": "readonly", - "exports": "writable", - "global": "readonly", - "globalThis": "readonly", - "module": "readonly", - "process": "readonly", - "queueMicrotask": "readonly", - "require": "readonly", - "root": "readonly", - "setImmediate": "readonly", - "setInterval": "readonly", - "setTimeout": "readonly", - }, - "ignorePatterns": Array [ - "lib/", - "node_modules/", - "**/__tests__", - ], - "noInlineConfig": undefined, - "parser": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": Object { - "ecmaFeatures": Object { - "globalReturn": true, - }, - "ecmaVersion": 2018, - "sourceType": "module", - }, - "plugins": Array [ - "node", - "@typescript-eslint", - ], - "reportUnusedDisableDirectives": undefined, - "rules": Object { - "@typescript-eslint/adjacent-overload-signatures": Array [ - "error", - ], - "@typescript-eslint/ban-ts-comment": Array [ - "error", - ], - "@typescript-eslint/ban-types": Array [ - "error", - ], - "@typescript-eslint/camelcase": Array [ - "off", - ], - "@typescript-eslint/explicit-function-return-type": Array [ - "off", - ], - "@typescript-eslint/explicit-module-boundary-types": Array [ - "off", - ], - "@typescript-eslint/no-array-constructor": Array [ - "error", - ], - "@typescript-eslint/no-empty-function": Array [ - "error", - ], - "@typescript-eslint/no-empty-interface": Array [ - "error", - ], - "@typescript-eslint/no-explicit-any": Array [ - "warn", - ], - "@typescript-eslint/no-extra-non-null-assertion": Array [ - "error", - ], - "@typescript-eslint/no-extra-semi": Array [ - "error", - ], - "@typescript-eslint/no-inferrable-types": Array [ - "error", - ], - "@typescript-eslint/no-loss-of-precision": Array [ - "error", - ], - "@typescript-eslint/no-misused-new": Array [ - "error", - ], - "@typescript-eslint/no-namespace": Array [ - "error", - ], - "@typescript-eslint/no-non-null-asserted-optional-chain": Array [ - "error", - ], - "@typescript-eslint/no-non-null-assertion": Array [ - "warn", - ], - "@typescript-eslint/no-this-alias": Array [ - "error", - ], - "@typescript-eslint/no-unnecessary-type-constraint": Array [ - "error", - ], - "@typescript-eslint/no-unused-vars": Array [ - "warn", - Object { - "args": "after-used", - "argsIgnorePattern": "^_", - "ignoreRestSiblings": false, - "vars": "all", - }, - ], - "@typescript-eslint/no-use-before-define": Array [ - "off", - ], - "@typescript-eslint/no-var-requires": Array [ - "warn", - ], - "@typescript-eslint/no-warning-comments": Array [ - "off", - ], - "@typescript-eslint/prefer-as-const": Array [ - "error", - ], - "@typescript-eslint/prefer-namespace-keyword": Array [ - "error", - ], - "@typescript-eslint/triple-slash-reference": Array [ - "error", - ], - "arrow-parens": Array [ - "error", - "always", - ], - "block-scoped-var": Array [ - "error", - ], - "brace-style": Array [ - "warn", - "1tbs", - Object { - "allowSingleLine": true, - }, - ], - "constructor-super": Array [ - "warn", - ], - "eol-last": Array [ - "error", - ], - "eqeqeq": Array [ - "error", - ], - "for-direction": Array [ - "error", - ], - "getter-return": Array [ - "off", - ], - "indent": Array [ - "warn", - 4, - Object { - "SwitchCase": 0, - "VariableDeclarator": 0, - "flatTernaryExpressions": false, - "ignoreComments": false, - "offsetTernaryExpressions": false, - }, - ], - "linebreak-style": Array [ - "error", - "unix", - ], - "no-array-constructor": Array [ - "off", - ], - "no-async-promise-executor": Array [ - "error", - ], - "no-case-declarations": Array [ - "error", - ], - "no-class-assign": Array [ - "error", - ], - "no-compare-neg-zero": Array [ - "error", - ], - "no-cond-assign": Array [ - "warn", - ], - "no-const-assign": Array [ - "warn", - ], - "no-constant-condition": Array [ - "warn", - ], - "no-control-regex": Array [ - "error", - ], - "no-debugger": Array [ - "error", - ], - "no-delete-var": Array [ - "error", - ], - "no-dupe-args": Array [ - "off", - ], - "no-dupe-class-members": Array [ - "off", - ], - "no-dupe-else-if": Array [ - "warn", - ], - "no-dupe-keys": Array [ - "warn", - ], - "no-duplicate-case": Array [ - "error", - ], - "no-empty": Array [ - "warn", - ], - "no-empty-character-class": Array [ - "error", - ], - "no-empty-function": Array [ - "error", - ], - "no-empty-pattern": Array [ - "error", - ], - "no-ex-assign": Array [ - "error", - ], - "no-extra-boolean-cast": Array [ - "error", - ], - "no-extra-semi": Array [ - "off", - ], - "no-fallthrough": Array [ - "error", - ], - "no-func-assign": Array [ - "off", - ], - "no-global-assign": Array [ - "error", - ], - "no-import-assign": Array [ - "warn", - ], - "no-inner-declarations": Array [ - "error", - ], - "no-invalid-regexp": Array [ - "error", - ], - "no-irregular-whitespace": Array [ - "warn", - ], - "no-loss-of-precision": Array [ - "off", - ], - "no-misleading-character-class": Array [ - "error", - ], - "no-mixed-spaces-and-tabs": Array [ - "warn", - ], - "no-new-symbol": Array [ - "off", - ], - "no-nonoctal-decimal-escape": Array [ - "error", - ], - "no-obj-calls": Array [ - "off", - ], - "no-octal": Array [ - "error", - ], - "no-process-exit": Array [ - "error", - ], - "no-prototype-builtins": Array [ - "error", - ], - "no-redeclare": Array [ - "off", - ], - "no-regex-spaces": Array [ - "error", - ], - "no-restricted-properties": Array [ - "error", - Object { - "object": "describe", - "property": "only", - }, - Object { - "object": "it", - "property": "only", - }, - ], - "no-self-assign": Array [ - "error", - ], - "no-setter-return": Array [ - "off", - ], - "no-shadow-restricted-names": Array [ - "error", - ], - "no-sparse-arrays": Array [ - "error", - ], - "no-this-before-super": Array [ - "warn", - ], - "no-trailing-spaces": Array [ - "error", - ], - "no-undef": Array [ - "off", - ], - "no-unexpected-multiline": Array [ - "warn", - ], - "no-unreachable": Array [ - "off", - ], - "no-unsafe-finally": Array [ - "error", - ], - "no-unsafe-negation": Array [ - "off", - ], - "no-unsafe-optional-chaining": Array [ - "error", - ], - "no-unused-labels": Array [ - "error", - ], - "no-unused-vars": Array [ - "off", - ], - "no-useless-backreference": Array [ - "error", - ], - "no-useless-catch": Array [ - "error", - ], - "no-useless-escape": Array [ - "warn", - ], - "no-var": Array [ - "error", - ], - "no-with": Array [ - "error", - ], - "node/no-deprecated-api": Array [ - "error", - ], - "node/no-empty-function": Array [ - "off", - ], - "node/no-exports-assign": Array [ - "error", - ], - "node/no-extraneous-import": Array [ - "error", - ], - "node/no-extraneous-require": Array [ - "error", - ], - "node/no-missing-import": Array [ - "off", - ], - "node/no-missing-require": Array [ - "error", - ], - "node/no-unpublished-bin": Array [ - "error", - ], - "node/no-unpublished-import": Array [ - "error", - ], - "node/no-unpublished-require": Array [ - "error", - ], - "node/no-unsupported-features/es-builtins": Array [ - "error", - ], - "node/no-unsupported-features/es-syntax": Array [ - "off", - Object { - "ignores": Array [], - }, - ], - "node/no-unsupported-features/node-builtins": Array [ - "error", - ], - "node/process-exit-as-throw": Array [ - "error", - ], - "node/shebang": Array [ - "off", - ], - "object-curly-spacing": Array [ - "warn", - "always", - ], - "prefer-arrow-callback": Array [ - "error", - ], - "prefer-const": Array [ - "error", - ], - "prefer-rest-params": Array [ - "error", - ], - "prefer-spread": Array [ - "error", - ], - "prettier/prettier": Array [ - "off", - ], - "quotes": Array [ - "warn", - "single", - ], - "require-atomic-updates": Array [ - "off", - ], - "require-yield": Array [ - "error", - ], - "semi": Array [ - "error", - "always", - ], - "use-isnan": Array [ - "error", - ], - "valid-typeof": Array [ - "off", - ], - }, - "settings": Object {}, -} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at getESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:255:12) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:70:71) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: requiring "prettier" module at "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier/index.js" - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at requireModule (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:369:12) - at getPrettierConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:269:45) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:73:6) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -prettier-eslint [DEBUG]: turning off unfixable rules -Trace: prettier-eslint [TRACE]: turning off rule: {"accessor-pairs":{"meta":{"type":"suggestion","docs":{"description":"enforce getter and setter pairs in objects and classes","recommended":false,"url":"https://eslint.org/docs/rules/accessor-pairs"},"schema":[{"type":"object","properties":{"getWithoutSet":{"type":"boolean","default":false},"setWithoutGet":{"type":"boolean","default":true},"enforceForClassMembers":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"missingGetterInPropertyDescriptor":"Getter is not present in property descriptor.","missingSetterInPropertyDescriptor":"Setter is not present in property descriptor.","missingGetterInObjectLiteral":"Getter is not present for {{ name }}.","missingSetterInObjectLiteral":"Setter is not present for {{ name }}.","missingGetterInClass":"Getter is not present for class {{ name }}.","missingSetterInClass":"Setter is not present for class {{ name }}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"array-callback-return":{"meta":{"type":"problem","docs":{"description":"enforce `return` statements in callbacks of array methods","recommended":false,"url":"https://eslint.org/docs/rules/array-callback-return"},"schema":[{"type":"object","properties":{"allowImplicit":{"type":"boolean","default":false},"checkForEach":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"expectedAtEnd":"{{arrayMethodName}}() expects a value to be returned at the end of {{name}}.","expectedInside":"{{arrayMethodName}}() expects a return value from {{name}}.","expectedReturnValue":"{{arrayMethodName}}() expects a return value from {{name}}.","expectedNoReturnValue":"{{arrayMethodName}}() expects no useless return value from {{name}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"block-scoped-var":{"meta":{"type":"suggestion","docs":{"description":"enforce the use of variables within the scope they are defined","recommended":false,"url":"https://eslint.org/docs/rules/block-scoped-var"},"schema":[],"messages":{"outOfScope":"'{{name}}' used outside of binding context."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"callback-return":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"require `return` statements after callbacks","recommended":false,"url":"https://eslint.org/docs/rules/callback-return"},"schema":[{"type":"array","items":{"type":"string"}}],"messages":{"missingReturn":"Expected return with your callback function."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"camelcase":{"meta":{"type":"suggestion","docs":{"description":"enforce camelcase naming convention","recommended":false,"url":"https://eslint.org/docs/rules/camelcase"},"schema":[{"type":"object","properties":{"ignoreDestructuring":{"type":"boolean","default":false},"ignoreImports":{"type":"boolean","default":false},"ignoreGlobals":{"type":"boolean","default":false},"properties":{"enum":["always","never"]},"allow":{"type":"array","items":[{"type":"string"}],"minItems":0,"uniqueItems":true}},"additionalProperties":false}],"messages":{"notCamelCase":"Identifier '{{name}}' is not in camel case.","notCamelCasePrivate":"#{{name}} is not in camel case."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"class-methods-use-this":{"meta":{"type":"suggestion","docs":{"description":"enforce that class methods utilize `this`","recommended":false,"url":"https://eslint.org/docs/rules/class-methods-use-this"},"schema":[{"type":"object","properties":{"exceptMethods":{"type":"array","items":{"type":"string"}},"enforceForClassFields":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"missingThis":"Expected 'this' to be used by class {{name}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"complexity":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum cyclomatic complexity allowed in a program","recommended":false,"url":"https://eslint.org/docs/rules/complexity"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"maximum":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0}},"additionalProperties":false}]}],"messages":{"complex":"{{name}} has a complexity of {{complexity}}. Maximum allowed is {{max}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"consistent-return":{"meta":{"type":"suggestion","docs":{"description":"require `return` statements to either always or never specify values","recommended":false,"url":"https://eslint.org/docs/rules/consistent-return"},"schema":[{"type":"object","properties":{"treatUndefinedAsUnspecified":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"missingReturn":"Expected to return a value at the end of {{name}}.","missingReturnValue":"{{name}} expected a return value.","unexpectedReturnValue":"{{name}} expected no return value."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"consistent-this":{"meta":{"type":"suggestion","docs":{"description":"enforce consistent naming when capturing the current execution context","recommended":false,"url":"https://eslint.org/docs/rules/consistent-this"},"schema":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"messages":{"aliasNotAssignedToThis":"Designated alias '{{name}}' is not assigned to 'this'.","unexpectedAlias":"Unexpected alias '{{name}}' for 'this'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"constructor-super":{"meta":{"type":"problem","docs":{"description":"require `super()` calls in constructors","recommended":true,"url":"https://eslint.org/docs/rules/constructor-super"},"schema":[],"messages":{"missingSome":"Lacked a call of 'super()' in some code paths.","missingAll":"Expected to call 'super()'.","duplicate":"Unexpected duplicate 'super()'.","badSuper":"Unexpected 'super()' because 'super' is not a constructor.","unexpected":"Unexpected 'super()'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"default-case":{"meta":{"type":"suggestion","docs":{"description":"require `default` cases in `switch` statements","recommended":false,"url":"https://eslint.org/docs/rules/default-case"},"schema":[{"type":"object","properties":{"commentPattern":{"type":"string"}},"additionalProperties":false}],"messages":{"missingDefaultCase":"Expected a default case."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"default-case-last":{"meta":{"type":"suggestion","docs":{"description":"enforce default clauses in switch statements to be last","recommended":false,"url":"https://eslint.org/docs/rules/default-case-last"},"schema":[],"messages":{"notLast":"Default clause should be the last clause."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"default-param-last":{"meta":{"type":"suggestion","docs":{"description":"enforce default parameters to be last","recommended":false,"url":"https://eslint.org/docs/rules/default-param-last"},"schema":[],"messages":{"shouldBeLast":"Default parameters should be last."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"for-direction":{"meta":{"type":"problem","docs":{"description":"enforce \"for\" loop update clause moving the counter in the right direction.","recommended":true,"url":"https://eslint.org/docs/rules/for-direction"},"fixable":null,"schema":[],"messages":{"incorrectDirection":"The update clause in this loop moves the variable in the wrong direction."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"func-name-matching":{"meta":{"type":"suggestion","docs":{"description":"require function names to match the name of the variable or property to which they are assigned","recommended":false,"url":"https://eslint.org/docs/rules/func-name-matching"},"schema":{"anyOf":[{"type":"array","additionalItems":false,"items":[{"enum":["always","never"]},{"type":"object","properties":{"considerPropertyDescriptor":{"type":"boolean"},"includeCommonJSModuleExports":{"type":"boolean"}},"additionalProperties":false}]},{"type":"array","additionalItems":false,"items":[{"type":"object","properties":{"considerPropertyDescriptor":{"type":"boolean"},"includeCommonJSModuleExports":{"type":"boolean"}},"additionalProperties":false}]}]},"messages":{"matchProperty":"Function name `{{funcName}}` should match property name `{{name}}`.","matchVariable":"Function name `{{funcName}}` should match variable name `{{name}}`.","notMatchProperty":"Function name `{{funcName}}` should not match property name `{{name}}`.","notMatchVariable":"Function name `{{funcName}}` should not match variable name `{{name}}`."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"func-names":{"meta":{"type":"suggestion","docs":{"description":"require or disallow named `function` expressions","recommended":false,"url":"https://eslint.org/docs/rules/func-names"},"schema":{"definitions":{"value":{"enum":["always","as-needed","never"]}},"items":[{"$ref":"#/definitions/value"},{"type":"object","properties":{"generators":{"$ref":"#/definitions/value"}},"additionalProperties":false}]},"messages":{"unnamed":"Unexpected unnamed {{name}}.","named":"Unexpected named {{name}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"func-style":{"meta":{"type":"suggestion","docs":{"description":"enforce the consistent use of either `function` declarations or expressions","recommended":false,"url":"https://eslint.org/docs/rules/func-style"},"schema":[{"enum":["declaration","expression"]},{"type":"object","properties":{"allowArrowFunctions":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"expression":"Expected a function expression.","declaration":"Expected a function declaration."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"getter-return":{"meta":{"type":"problem","docs":{"description":"enforce `return` statements in getters","recommended":true,"url":"https://eslint.org/docs/rules/getter-return"},"fixable":null,"schema":[{"type":"object","properties":{"allowImplicit":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"expected":"Expected to return a value in {{name}}.","expectedAlways":"Expected {{name}} to always return a value."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"global-require":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"require `require()` calls to be placed at top-level module scope","recommended":false,"url":"https://eslint.org/docs/rules/global-require"},"schema":[],"messages":{"unexpected":"Unexpected require()."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"grouped-accessor-pairs":{"meta":{"type":"suggestion","docs":{"description":"require grouped accessor pairs in object literals and classes","recommended":false,"url":"https://eslint.org/docs/rules/grouped-accessor-pairs"},"schema":[{"enum":["anyOrder","getBeforeSet","setBeforeGet"]}],"messages":{"notGrouped":"Accessor pair {{ formerName }} and {{ latterName }} should be grouped.","invalidOrder":"Expected {{ latterName }} to be before {{ formerName }}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"guard-for-in":{"meta":{"type":"suggestion","docs":{"description":"require `for-in` loops to include an `if` statement","recommended":false,"url":"https://eslint.org/docs/rules/guard-for-in"},"schema":[],"messages":{"wrap":"The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"handle-callback-err":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"require error handling in callbacks","recommended":false,"url":"https://eslint.org/docs/rules/handle-callback-err"},"schema":[{"type":"string"}],"messages":{"expected":"Expected error to be handled."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"id-blacklist":{"meta":{"deprecated":true,"replacedBy":["id-denylist"],"type":"suggestion","docs":{"description":"disallow specified identifiers","recommended":false,"url":"https://eslint.org/docs/rules/id-blacklist"},"schema":{"type":"array","items":{"type":"string"},"uniqueItems":true},"messages":{"restricted":"Identifier '{{name}}' is restricted."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"id-denylist":{"meta":{"type":"suggestion","docs":{"description":"disallow specified identifiers","recommended":false,"url":"https://eslint.org/docs/rules/id-denylist"},"schema":{"type":"array","items":{"type":"string"},"uniqueItems":true},"messages":{"restricted":"Identifier '{{name}}' is restricted.","restrictedPrivate":"Identifier '#{{name}}' is restricted."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"id-length":{"meta":{"type":"suggestion","docs":{"description":"enforce minimum and maximum identifier lengths","recommended":false,"url":"https://eslint.org/docs/rules/id-length"},"schema":[{"type":"object","properties":{"min":{"type":"integer","default":2},"max":{"type":"integer"},"exceptions":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"exceptionPatterns":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"properties":{"enum":["always","never"]}},"additionalProperties":false}],"messages":{"tooShort":"Identifier name '{{name}}' is too short (< {{min}}).","tooShortPrivate":"Identifier name '#{{name}}' is too short (< {{min}}).","tooLong":"Identifier name '{{name}}' is too long (> {{max}}).","tooLongPrivate":"Identifier name #'{{name}}' is too long (> {{max}})."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"id-match":{"meta":{"type":"suggestion","docs":{"description":"require identifiers to match a specified regular expression","recommended":false,"url":"https://eslint.org/docs/rules/id-match"},"schema":[{"type":"string"},{"type":"object","properties":{"properties":{"type":"boolean","default":false},"classFields":{"type":"boolean","default":false},"onlyDeclarations":{"type":"boolean","default":false},"ignoreDestructuring":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"notMatch":"Identifier '{{name}}' does not match the pattern '{{pattern}}'.","notMatchPrivate":"Identifier '#{{name}}' does not match the pattern '{{pattern}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"init-declarations":{"meta":{"type":"suggestion","docs":{"description":"require or disallow initialization in variable declarations","recommended":false,"url":"https://eslint.org/docs/rules/init-declarations"},"schema":{"anyOf":[{"type":"array","items":[{"enum":["always"]}],"minItems":0,"maxItems":1},{"type":"array","items":[{"enum":["never"]},{"type":"object","properties":{"ignoreForLoopInit":{"type":"boolean"}},"additionalProperties":false}],"minItems":0,"maxItems":2}]},"messages":{"initialized":"Variable '{{idName}}' should be initialized on declaration.","notInitialized":"Variable '{{idName}}' should not be initialized on declaration."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"line-comment-position":{"meta":{"type":"layout","docs":{"description":"enforce position of line comments","recommended":false,"url":"https://eslint.org/docs/rules/line-comment-position"},"schema":[{"oneOf":[{"enum":["above","beside"]},{"type":"object","properties":{"position":{"enum":["above","beside"]},"ignorePattern":{"type":"string"},"applyDefaultPatterns":{"type":"boolean"},"applyDefaultIgnorePatterns":{"type":"boolean"}},"additionalProperties":false}]}],"messages":{"above":"Expected comment to be above code.","beside":"Expected comment to be beside code."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-classes-per-file":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum number of classes per file","recommended":false,"url":"https://eslint.org/docs/rules/max-classes-per-file"},"schema":[{"oneOf":[{"type":"integer","minimum":1},{"type":"object","properties":{"ignoreExpressions":{"type":"boolean"},"max":{"type":"integer","minimum":1}},"additionalProperties":false}]}],"messages":{"maximumExceeded":"File has too many classes ({{ classCount }}). Maximum allowed is {{ max }}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-depth":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum depth that blocks can be nested","recommended":false,"url":"https://eslint.org/docs/rules/max-depth"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"maximum":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0}},"additionalProperties":false}]}],"messages":{"tooDeeply":"Blocks are nested too deeply ({{depth}}). Maximum allowed is {{maxDepth}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-len":{"meta":{"type":"layout","docs":{"description":"enforce a maximum line length","recommended":false,"url":"https://eslint.org/docs/rules/max-len"},"schema":[{"anyOf":[{"type":"object","properties":{"code":{"type":"integer","minimum":0},"comments":{"type":"integer","minimum":0},"tabWidth":{"type":"integer","minimum":0},"ignorePattern":{"type":"string"},"ignoreComments":{"type":"boolean"},"ignoreStrings":{"type":"boolean"},"ignoreUrls":{"type":"boolean"},"ignoreTemplateLiterals":{"type":"boolean"},"ignoreRegExpLiterals":{"type":"boolean"},"ignoreTrailingComments":{"type":"boolean"}},"additionalProperties":false},{"type":"integer","minimum":0}]},{"anyOf":[{"type":"object","properties":{"code":{"type":"integer","minimum":0},"comments":{"type":"integer","minimum":0},"tabWidth":{"type":"integer","minimum":0},"ignorePattern":{"type":"string"},"ignoreComments":{"type":"boolean"},"ignoreStrings":{"type":"boolean"},"ignoreUrls":{"type":"boolean"},"ignoreTemplateLiterals":{"type":"boolean"},"ignoreRegExpLiterals":{"type":"boolean"},"ignoreTrailingComments":{"type":"boolean"}},"additionalProperties":false},{"type":"integer","minimum":0}]},{"type":"object","properties":{"code":{"type":"integer","minimum":0},"comments":{"type":"integer","minimum":0},"tabWidth":{"type":"integer","minimum":0},"ignorePattern":{"type":"string"},"ignoreComments":{"type":"boolean"},"ignoreStrings":{"type":"boolean"},"ignoreUrls":{"type":"boolean"},"ignoreTemplateLiterals":{"type":"boolean"},"ignoreRegExpLiterals":{"type":"boolean"},"ignoreTrailingComments":{"type":"boolean"}},"additionalProperties":false}],"messages":{"max":"This line has a length of {{lineLength}}. Maximum allowed is {{maxLength}}.","maxComment":"This line has a comment length of {{lineLength}}. Maximum allowed is {{maxCommentLength}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-lines":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum number of lines per file","recommended":false,"url":"https://eslint.org/docs/rules/max-lines"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"max":{"type":"integer","minimum":0},"skipComments":{"type":"boolean"},"skipBlankLines":{"type":"boolean"}},"additionalProperties":false}]}],"messages":{"exceed":"File has too many lines ({{actual}}). Maximum allowed is {{max}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-lines-per-function":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum number of lines of code in a function","recommended":false,"url":"https://eslint.org/docs/rules/max-lines-per-function"},"schema":[{"oneOf":[{"type":"object","properties":{"max":{"type":"integer","minimum":0},"skipComments":{"type":"boolean"},"skipBlankLines":{"type":"boolean"},"IIFEs":{"type":"boolean"}},"additionalProperties":false},{"type":"integer","minimum":1}]}],"messages":{"exceed":"{{name}} has too many lines ({{lineCount}}). Maximum allowed is {{maxLines}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-nested-callbacks":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum depth that callbacks can be nested","recommended":false,"url":"https://eslint.org/docs/rules/max-nested-callbacks"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"maximum":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0}},"additionalProperties":false}]}],"messages":{"exceed":"Too many nested callbacks ({{num}}). Maximum allowed is {{max}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-params":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum number of parameters in function definitions","recommended":false,"url":"https://eslint.org/docs/rules/max-params"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"maximum":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0}},"additionalProperties":false}]}],"messages":{"exceed":"{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-statements":{"meta":{"type":"suggestion","docs":{"description":"enforce a maximum number of statements allowed in function blocks","recommended":false,"url":"https://eslint.org/docs/rules/max-statements"},"schema":[{"oneOf":[{"type":"integer","minimum":0},{"type":"object","properties":{"maximum":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0}},"additionalProperties":false}]},{"type":"object","properties":{"ignoreTopLevelFunctions":{"type":"boolean"}},"additionalProperties":false}],"messages":{"exceed":"{{name}} has too many statements ({{count}}). Maximum allowed is {{max}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"max-statements-per-line":{"meta":{"type":"layout","docs":{"description":"enforce a maximum number of statements allowed per line","recommended":false,"url":"https://eslint.org/docs/rules/max-statements-per-line"},"schema":[{"type":"object","properties":{"max":{"type":"integer","minimum":1,"default":1}},"additionalProperties":false}],"messages":{"exceed":"This line has {{numberOfStatementsOnThisLine}} {{statements}}. Maximum allowed is {{maxStatementsPerLine}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"new-cap":{"meta":{"type":"suggestion","docs":{"description":"require constructor names to begin with a capital letter","recommended":false,"url":"https://eslint.org/docs/rules/new-cap"},"schema":[{"type":"object","properties":{"newIsCap":{"type":"boolean","default":true},"capIsNew":{"type":"boolean","default":true},"newIsCapExceptions":{"type":"array","items":{"type":"string"}},"newIsCapExceptionPattern":{"type":"string"},"capIsNewExceptions":{"type":"array","items":{"type":"string"}},"capIsNewExceptionPattern":{"type":"string"},"properties":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"upper":"A function with a name starting with an uppercase letter should only be used as a constructor.","lower":"A constructor name should not start with a lowercase letter."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-alert":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `alert`, `confirm`, and `prompt`","recommended":false,"url":"https://eslint.org/docs/rules/no-alert"},"schema":[],"messages":{"unexpected":"Unexpected {{name}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-array-constructor":{"meta":{"type":"suggestion","docs":{"description":"disallow `Array` constructors","recommended":false,"url":"https://eslint.org/docs/rules/no-array-constructor"},"schema":[],"messages":{"preferLiteral":"The array literal notation [] is preferable."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-async-promise-executor":{"meta":{"type":"problem","docs":{"description":"disallow using an async function as a Promise executor","recommended":true,"url":"https://eslint.org/docs/rules/no-async-promise-executor"},"fixable":null,"schema":[],"messages":{"async":"Promise executor functions should not be async."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-await-in-loop":{"meta":{"type":"problem","docs":{"description":"disallow `await` inside of loops","recommended":false,"url":"https://eslint.org/docs/rules/no-await-in-loop"},"schema":[],"messages":{"unexpectedAwait":"Unexpected `await` inside a loop."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-bitwise":{"meta":{"type":"suggestion","docs":{"description":"disallow bitwise operators","recommended":false,"url":"https://eslint.org/docs/rules/no-bitwise"},"schema":[{"type":"object","properties":{"allow":{"type":"array","items":{"enum":["^","|","&","<<",">>",">>>","^=","|=","&=","<<=",">>=",">>>=","~"]},"uniqueItems":true},"int32Hint":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpected":"Unexpected use of '{{operator}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-buffer-constructor":{"meta":{"deprecated":true,"replacedBy":[],"type":"problem","docs":{"description":"disallow use of the `Buffer()` constructor","recommended":false,"url":"https://eslint.org/docs/rules/no-buffer-constructor"},"schema":[],"messages":{"deprecated":"{{expr}} is deprecated. Use Buffer.from(), Buffer.alloc(), or Buffer.allocUnsafe() instead."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-caller":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `arguments.caller` or `arguments.callee`","recommended":false,"url":"https://eslint.org/docs/rules/no-caller"},"schema":[],"messages":{"unexpected":"Avoid arguments.{{prop}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-case-declarations":{"meta":{"type":"suggestion","docs":{"description":"disallow lexical declarations in case clauses","recommended":true,"url":"https://eslint.org/docs/rules/no-case-declarations"},"schema":[],"messages":{"unexpected":"Unexpected lexical declaration in case block."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-catch-shadow":{"meta":{"type":"suggestion","docs":{"description":"disallow `catch` clause parameters from shadowing variables in the outer scope","recommended":false,"url":"https://eslint.org/docs/rules/no-catch-shadow"},"replacedBy":["no-shadow"],"deprecated":true,"schema":[],"messages":{"mutable":"Value of '{{name}}' may be overwritten in IE 8 and earlier."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-class-assign":{"meta":{"type":"problem","docs":{"description":"disallow reassigning class members","recommended":true,"url":"https://eslint.org/docs/rules/no-class-assign"},"schema":[],"messages":{"class":"'{{name}}' is a class."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-compare-neg-zero":{"meta":{"type":"problem","docs":{"description":"disallow comparing against -0","recommended":true,"url":"https://eslint.org/docs/rules/no-compare-neg-zero"},"fixable":null,"schema":[],"messages":{"unexpected":"Do not use the '{{operator}}' operator to compare against -0."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-cond-assign":{"meta":{"type":"problem","docs":{"description":"disallow assignment operators in conditional expressions","recommended":true,"url":"https://eslint.org/docs/rules/no-cond-assign"},"schema":[{"enum":["except-parens","always"]}],"messages":{"unexpected":"Unexpected assignment within {{type}}.","missing":"Expected a conditional expression and instead saw an assignment."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-console":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `console`","recommended":false,"url":"https://eslint.org/docs/rules/no-console"},"schema":[{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}},"additionalProperties":false}],"messages":{"unexpected":"Unexpected console statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-const-assign":{"meta":{"type":"problem","docs":{"description":"disallow reassigning `const` variables","recommended":true,"url":"https://eslint.org/docs/rules/no-const-assign"},"schema":[],"messages":{"const":"'{{name}}' is constant."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-constant-binary-expression":{"meta":{"type":"problem","docs":{"description":"disallow expressions where the operation doesn't affect the value","recommended":false,"url":"https://eslint.org/docs/rules/no-constant-binary-expression"},"schema":[],"messages":{"constantBinaryOperand":"Unexpected constant binary expression. Compares constantly with the {{otherSide}}-hand side of the `{{operator}}`.","constantShortCircuit":"Unexpected constant {{property}} on the left-hand side of a `{{operator}}` expression.","alwaysNew":"Unexpected comparison to newly constructed object. These two values can never be equal.","bothAlwaysNew":"Unexpected comparison of two newly constructed objects. These two values can never be equal."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-constant-condition":{"meta":{"type":"problem","docs":{"description":"disallow constant expressions in conditions","recommended":true,"url":"https://eslint.org/docs/rules/no-constant-condition"},"schema":[{"type":"object","properties":{"checkLoops":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"unexpected":"Unexpected constant condition."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-constructor-return":{"meta":{"type":"problem","docs":{"description":"disallow returning value from constructor","recommended":false,"url":"https://eslint.org/docs/rules/no-constructor-return"},"schema":{},"fixable":null,"messages":{"unexpected":"Unexpected return statement in constructor."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-continue":{"meta":{"type":"suggestion","docs":{"description":"disallow `continue` statements","recommended":false,"url":"https://eslint.org/docs/rules/no-continue"},"schema":[],"messages":{"unexpected":"Unexpected use of continue statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-control-regex":{"meta":{"type":"problem","docs":{"description":"disallow control characters in regular expressions","recommended":true,"url":"https://eslint.org/docs/rules/no-control-regex"},"schema":[],"messages":{"unexpected":"Unexpected control character(s) in regular expression: {{controlChars}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-debugger":{"meta":{"type":"problem","docs":{"description":"disallow the use of `debugger`","recommended":true,"url":"https://eslint.org/docs/rules/no-debugger"},"fixable":null,"schema":[],"messages":{"unexpected":"Unexpected 'debugger' statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-delete-var":{"meta":{"type":"suggestion","docs":{"description":"disallow deleting variables","recommended":true,"url":"https://eslint.org/docs/rules/no-delete-var"},"schema":[],"messages":{"unexpected":"Variables should not be deleted."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-dupe-args":{"meta":{"type":"problem","docs":{"description":"disallow duplicate arguments in `function` definitions","recommended":true,"url":"https://eslint.org/docs/rules/no-dupe-args"},"schema":[],"messages":{"unexpected":"Duplicate param '{{name}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-dupe-class-members":{"meta":{"type":"problem","docs":{"description":"disallow duplicate class members","recommended":true,"url":"https://eslint.org/docs/rules/no-dupe-class-members"},"schema":[],"messages":{"unexpected":"Duplicate name '{{name}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-dupe-else-if":{"meta":{"type":"problem","docs":{"description":"disallow duplicate conditions in if-else-if chains","recommended":true,"url":"https://eslint.org/docs/rules/no-dupe-else-if"},"schema":[],"messages":{"unexpected":"This branch can never execute. Its condition is a duplicate or covered by previous conditions in the if-else-if chain."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-dupe-keys":{"meta":{"type":"problem","docs":{"description":"disallow duplicate keys in object literals","recommended":true,"url":"https://eslint.org/docs/rules/no-dupe-keys"},"schema":[],"messages":{"unexpected":"Duplicate key '{{name}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-duplicate-case":{"meta":{"type":"problem","docs":{"description":"disallow duplicate case labels","recommended":true,"url":"https://eslint.org/docs/rules/no-duplicate-case"},"schema":[],"messages":{"unexpected":"Duplicate case label."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-duplicate-imports":{"meta":{"type":"problem","docs":{"description":"disallow duplicate module imports","recommended":false,"url":"https://eslint.org/docs/rules/no-duplicate-imports"},"schema":[{"type":"object","properties":{"includeExports":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"import":"'{{module}}' import is duplicated.","importAs":"'{{module}}' import is duplicated as export.","export":"'{{module}}' export is duplicated.","exportAs":"'{{module}}' export is duplicated as import."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-empty":{"meta":{"type":"suggestion","docs":{"description":"disallow empty block statements","recommended":true,"url":"https://eslint.org/docs/rules/no-empty"},"schema":[{"type":"object","properties":{"allowEmptyCatch":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpected":"Empty {{type}} statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-empty-character-class":{"meta":{"type":"problem","docs":{"description":"disallow empty character classes in regular expressions","recommended":true,"url":"https://eslint.org/docs/rules/no-empty-character-class"},"schema":[],"messages":{"unexpected":"Empty class."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-empty-function":{"meta":{"type":"suggestion","docs":{"description":"disallow empty functions","recommended":false,"url":"https://eslint.org/docs/rules/no-empty-function"},"schema":[{"type":"object","properties":{"allow":{"type":"array","items":{"enum":["functions","arrowFunctions","generatorFunctions","methods","generatorMethods","getters","setters","constructors","asyncFunctions","asyncMethods"]},"uniqueItems":true}},"additionalProperties":false}],"messages":{"unexpected":"Unexpected empty {{name}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-empty-pattern":{"meta":{"type":"problem","docs":{"description":"disallow empty destructuring patterns","recommended":true,"url":"https://eslint.org/docs/rules/no-empty-pattern"},"schema":[],"messages":{"unexpected":"Unexpected empty {{type}} pattern."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-eq-null":{"meta":{"type":"suggestion","docs":{"description":"disallow `null` comparisons without type-checking operators","recommended":false,"url":"https://eslint.org/docs/rules/no-eq-null"},"schema":[],"messages":{"unexpected":"Use '===' to compare with null."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-eval":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `eval()`","recommended":false,"url":"https://eslint.org/docs/rules/no-eval"},"schema":[{"type":"object","properties":{"allowIndirect":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpected":"eval can be harmful."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-ex-assign":{"meta":{"type":"problem","docs":{"description":"disallow reassigning exceptions in `catch` clauses","recommended":true,"url":"https://eslint.org/docs/rules/no-ex-assign"},"schema":[],"messages":{"unexpected":"Do not assign to the exception parameter."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-extend-native":{"meta":{"type":"suggestion","docs":{"description":"disallow extending native types","recommended":false,"url":"https://eslint.org/docs/rules/no-extend-native"},"schema":[{"type":"object","properties":{"exceptions":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}],"messages":{"unexpected":"{{builtin}} prototype is read only, properties should not be added."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-fallthrough":{"meta":{"type":"problem","docs":{"description":"disallow fallthrough of `case` statements","recommended":true,"url":"https://eslint.org/docs/rules/no-fallthrough"},"schema":[{"type":"object","properties":{"commentPattern":{"type":"string","default":""}},"additionalProperties":false}],"messages":{"case":"Expected a 'break' statement before 'case'.","default":"Expected a 'break' statement before 'default'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-func-assign":{"meta":{"type":"problem","docs":{"description":"disallow reassigning `function` declarations","recommended":true,"url":"https://eslint.org/docs/rules/no-func-assign"},"schema":[],"messages":{"isAFunction":"'{{name}}' is a function."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-global-assign":{"meta":{"type":"suggestion","docs":{"description":"disallow assignments to native objects or read-only global variables","recommended":true,"url":"https://eslint.org/docs/rules/no-global-assign"},"schema":[{"type":"object","properties":{"exceptions":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}],"messages":{"globalShouldNotBeModified":"Read-only global '{{name}}' should not be modified."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-implicit-globals":{"meta":{"type":"suggestion","docs":{"description":"disallow declarations in the global scope","recommended":false,"url":"https://eslint.org/docs/rules/no-implicit-globals"},"schema":[{"type":"object","properties":{"lexicalBindings":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"globalNonLexicalBinding":"Unexpected {{kind}} declaration in the global scope, wrap in an IIFE for a local variable, assign as global property for a global variable.","globalLexicalBinding":"Unexpected {{kind}} declaration in the global scope, wrap in a block or in an IIFE.","globalVariableLeak":"Global variable leak, declare the variable if it is intended to be local.","assignmentToReadonlyGlobal":"Unexpected assignment to read-only global variable.","redeclarationOfReadonlyGlobal":"Unexpected redeclaration of read-only global variable."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-implied-eval":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `eval()`-like methods","recommended":false,"url":"https://eslint.org/docs/rules/no-implied-eval"},"schema":[],"messages":{"impliedEval":"Implied eval. Consider passing a function instead of a string."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-import-assign":{"meta":{"type":"problem","docs":{"description":"disallow assigning to imported bindings","recommended":true,"url":"https://eslint.org/docs/rules/no-import-assign"},"schema":[],"messages":{"readonly":"'{{name}}' is read-only.","readonlyMember":"The members of '{{name}}' are read-only."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-inline-comments":{"meta":{"type":"suggestion","docs":{"description":"disallow inline comments after code","recommended":false,"url":"https://eslint.org/docs/rules/no-inline-comments"},"schema":[{"type":"object","properties":{"ignorePattern":{"type":"string"}},"additionalProperties":false}],"messages":{"unexpectedInlineComment":"Unexpected comment inline with code."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-inner-declarations":{"meta":{"type":"problem","docs":{"description":"disallow variable or `function` declarations in nested blocks","recommended":true,"url":"https://eslint.org/docs/rules/no-inner-declarations"},"schema":[{"enum":["functions","both"]}],"messages":{"moveDeclToRoot":"Move {{type}} declaration to {{body}} root."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-invalid-regexp":{"meta":{"type":"problem","docs":{"description":"disallow invalid regular expression strings in `RegExp` constructors","recommended":true,"url":"https://eslint.org/docs/rules/no-invalid-regexp"},"schema":[{"type":"object","properties":{"allowConstructorFlags":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}],"messages":{"regexMessage":"{{message}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-invalid-this":{"meta":{"type":"suggestion","docs":{"description":"disallow use of `this` in contexts where the value of `this` is `undefined`","recommended":false,"url":"https://eslint.org/docs/rules/no-invalid-this"},"schema":[{"type":"object","properties":{"capIsConstructor":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"unexpectedThis":"Unexpected 'this'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-irregular-whitespace":{"meta":{"type":"problem","docs":{"description":"disallow irregular whitespace","recommended":true,"url":"https://eslint.org/docs/rules/no-irregular-whitespace"},"schema":[{"type":"object","properties":{"skipComments":{"type":"boolean","default":false},"skipStrings":{"type":"boolean","default":true},"skipTemplates":{"type":"boolean","default":false},"skipRegExps":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"noIrregularWhitespace":"Irregular whitespace not allowed."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-iterator":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of the `__iterator__` property","recommended":false,"url":"https://eslint.org/docs/rules/no-iterator"},"schema":[],"messages":{"noIterator":"Reserved name '__iterator__'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-label-var":{"meta":{"type":"suggestion","docs":{"description":"disallow labels that share a name with a variable","recommended":false,"url":"https://eslint.org/docs/rules/no-label-var"},"schema":[],"messages":{"identifierClashWithLabel":"Found identifier with same name as label."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-labels":{"meta":{"type":"suggestion","docs":{"description":"disallow labeled statements","recommended":false,"url":"https://eslint.org/docs/rules/no-labels"},"schema":[{"type":"object","properties":{"allowLoop":{"type":"boolean","default":false},"allowSwitch":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedLabel":"Unexpected labeled statement.","unexpectedLabelInBreak":"Unexpected label in break statement.","unexpectedLabelInContinue":"Unexpected label in continue statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-lone-blocks":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary nested blocks","recommended":false,"url":"https://eslint.org/docs/rules/no-lone-blocks"},"schema":[],"messages":{"redundantBlock":"Block is redundant.","redundantNestedBlock":"Nested block is redundant."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-loop-func":{"meta":{"type":"suggestion","docs":{"description":"disallow function declarations that contain unsafe references inside loop statements","recommended":false,"url":"https://eslint.org/docs/rules/no-loop-func"},"schema":[],"messages":{"unsafeRefs":"Function declared in a loop contains unsafe references to variable(s) {{ varNames }}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-loss-of-precision":{"meta":{"type":"problem","docs":{"description":"disallow literal numbers that lose precision","recommended":true,"url":"https://eslint.org/docs/rules/no-loss-of-precision"},"schema":[],"messages":{"noLossOfPrecision":"This number literal will lose precision at runtime."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-magic-numbers":{"meta":{"type":"suggestion","docs":{"description":"disallow magic numbers","recommended":false,"url":"https://eslint.org/docs/rules/no-magic-numbers"},"schema":[{"type":"object","properties":{"detectObjects":{"type":"boolean","default":false},"enforceConst":{"type":"boolean","default":false},"ignore":{"type":"array","items":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^[+-]?(?:0|[1-9][0-9]*)n$"}]},"uniqueItems":true},"ignoreArrayIndexes":{"type":"boolean","default":false},"ignoreDefaultValues":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"useConst":"Number constants declarations must use 'const'.","noMagic":"No magic number: {{raw}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-misleading-character-class":{"meta":{"type":"problem","docs":{"description":"disallow characters which are made with multiple code points in character class syntax","recommended":true,"url":"https://eslint.org/docs/rules/no-misleading-character-class"},"hasSuggestions":true,"schema":[],"messages":{"surrogatePairWithoutUFlag":"Unexpected surrogate pair in character class. Use 'u' flag.","combiningClass":"Unexpected combined character in character class.","emojiModifier":"Unexpected modified Emoji in character class.","regionalIndicatorSymbol":"Unexpected national flag in character class.","zwj":"Unexpected joined character sequence in character class.","suggestUnicodeFlag":"Add unicode 'u' flag to regex."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-mixed-operators":{"meta":{"type":"suggestion","docs":{"description":"disallow mixed binary operators","recommended":false,"url":"https://eslint.org/docs/rules/no-mixed-operators"},"schema":[{"type":"object","properties":{"groups":{"type":"array","items":{"type":"array","items":{"enum":["+","-","*","/","%","**","&","|","^","~","<<",">>",">>>","==","!=","===","!==",">",">=","<","<=","&&","||","in","instanceof","?:","??"]},"minItems":2,"uniqueItems":true},"uniqueItems":true},"allowSamePrecedence":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"unexpectedMixedOperator":"Unexpected mix of '{{leftOperator}}' and '{{rightOperator}}'. Use parentheses to clarify the intended order of operations."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-mixed-requires":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow `require` calls to be mixed with regular variable declarations","recommended":false,"url":"https://eslint.org/docs/rules/no-mixed-requires"},"schema":[{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"grouping":{"type":"boolean"},"allowCall":{"type":"boolean"}},"additionalProperties":false}]}],"messages":{"noMixRequire":"Do not mix 'require' and other declarations.","noMixCoreModuleFileComputed":"Do not mix core, module, file and computed requires."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-mixed-spaces-and-tabs":{"meta":{"type":"layout","docs":{"description":"disallow mixed spaces and tabs for indentation","recommended":true,"url":"https://eslint.org/docs/rules/no-mixed-spaces-and-tabs"},"schema":[{"enum":["smart-tabs",true,false]}],"messages":{"mixedSpacesAndTabs":"Mixed spaces and tabs."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-multi-assign":{"meta":{"type":"suggestion","docs":{"description":"disallow use of chained assignment expressions","recommended":false,"url":"https://eslint.org/docs/rules/no-multi-assign"},"schema":[{"type":"object","properties":{"ignoreNonDeclaration":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedChain":"Unexpected chained assignment."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-multi-str":{"meta":{"type":"suggestion","docs":{"description":"disallow multiline strings","recommended":false,"url":"https://eslint.org/docs/rules/no-multi-str"},"schema":[],"messages":{"multilineString":"Multiline support is limited to browsers supporting ES5 only."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-native-reassign":{"meta":{"type":"suggestion","docs":{"description":"disallow assignments to native objects or read-only global variables","recommended":false,"url":"https://eslint.org/docs/rules/no-native-reassign"},"deprecated":true,"replacedBy":["no-global-assign"],"schema":[{"type":"object","properties":{"exceptions":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}],"messages":{"nativeReassign":"Read-only global '{{name}}' should not be modified."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-negated-condition":{"meta":{"type":"suggestion","docs":{"description":"disallow negated conditions","recommended":false,"url":"https://eslint.org/docs/rules/no-negated-condition"},"schema":[],"messages":{"unexpectedNegated":"Unexpected negated condition."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-negated-in-lhs":{"meta":{"type":"problem","docs":{"description":"disallow negating the left operand in `in` expressions","recommended":false,"url":"https://eslint.org/docs/rules/no-negated-in-lhs"},"replacedBy":["no-unsafe-negation"],"deprecated":true,"schema":[],"messages":{"negatedLHS":"The 'in' expression's left operand is negated."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-nested-ternary":{"meta":{"type":"suggestion","docs":{"description":"disallow nested ternary expressions","recommended":false,"url":"https://eslint.org/docs/rules/no-nested-ternary"},"schema":[],"messages":{"noNestedTernary":"Do not nest ternary expressions."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new":{"meta":{"type":"suggestion","docs":{"description":"disallow `new` operators outside of assignments or comparisons","recommended":false,"url":"https://eslint.org/docs/rules/no-new"},"schema":[],"messages":{"noNewStatement":"Do not use 'new' for side effects."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new-func":{"meta":{"type":"suggestion","docs":{"description":"disallow `new` operators with the `Function` object","recommended":false,"url":"https://eslint.org/docs/rules/no-new-func"},"schema":[],"messages":{"noFunctionConstructor":"The Function constructor is eval."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new-object":{"meta":{"type":"suggestion","docs":{"description":"disallow `Object` constructors","recommended":false,"url":"https://eslint.org/docs/rules/no-new-object"},"schema":[],"messages":{"preferLiteral":"The object literal notation {} is preferable."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new-require":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow `new` operators with calls to `require`","recommended":false,"url":"https://eslint.org/docs/rules/no-new-require"},"schema":[],"messages":{"noNewRequire":"Unexpected use of new with require."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new-symbol":{"meta":{"type":"problem","docs":{"description":"disallow `new` operators with the `Symbol` object","recommended":true,"url":"https://eslint.org/docs/rules/no-new-symbol"},"schema":[],"messages":{"noNewSymbol":"`Symbol` cannot be called as a constructor."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-new-wrappers":{"meta":{"type":"suggestion","docs":{"description":"disallow `new` operators with the `String`, `Number`, and `Boolean` objects","recommended":false,"url":"https://eslint.org/docs/rules/no-new-wrappers"},"schema":[],"messages":{"noConstructor":"Do not use {{fn}} as a constructor."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-nonoctal-decimal-escape":{"meta":{"type":"suggestion","docs":{"description":"disallow `\\8` and `\\9` escape sequences in string literals","recommended":true,"url":"https://eslint.org/docs/rules/no-nonoctal-decimal-escape"},"hasSuggestions":true,"schema":[],"messages":{"decimalEscape":"Don't use '{{decimalEscape}}' escape sequence.","refactor":"Replace '{{original}}' with '{{replacement}}'. This maintains the current functionality.","escapeBackslash":"Replace '{{original}}' with '{{replacement}}' to include the actual backslash character."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-obj-calls":{"meta":{"type":"problem","docs":{"description":"disallow calling global object properties as functions","recommended":true,"url":"https://eslint.org/docs/rules/no-obj-calls"},"schema":[],"messages":{"unexpectedCall":"'{{name}}' is not a function.","unexpectedRefCall":"'{{name}}' is reference to '{{ref}}', which is not a function."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-octal":{"meta":{"type":"suggestion","docs":{"description":"disallow octal literals","recommended":true,"url":"https://eslint.org/docs/rules/no-octal"},"schema":[],"messages":{"noOctal":"Octal literals should not be used."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-octal-escape":{"meta":{"type":"suggestion","docs":{"description":"disallow octal escape sequences in string literals","recommended":false,"url":"https://eslint.org/docs/rules/no-octal-escape"},"schema":[],"messages":{"octalEscapeSequence":"Don't use octal: '\\{{sequence}}'. Use '\\u....' instead."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-param-reassign":{"meta":{"type":"suggestion","docs":{"description":"disallow reassigning `function` parameters","recommended":false,"url":"https://eslint.org/docs/rules/no-param-reassign"},"schema":[{"oneOf":[{"type":"object","properties":{"props":{"enum":[false]}},"additionalProperties":false},{"type":"object","properties":{"props":{"enum":[true]},"ignorePropertyModificationsFor":{"type":"array","items":{"type":"string"},"uniqueItems":true},"ignorePropertyModificationsForRegex":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}]}],"messages":{"assignmentToFunctionParam":"Assignment to function parameter '{{name}}'.","assignmentToFunctionParamProp":"Assignment to property of function parameter '{{name}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-path-concat":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow string concatenation with `__dirname` and `__filename`","recommended":false,"url":"https://eslint.org/docs/rules/no-path-concat"},"schema":[],"messages":{"usePathFunctions":"Use path.join() or path.resolve() instead of + to create paths."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-plusplus":{"meta":{"type":"suggestion","docs":{"description":"disallow the unary operators `++` and `--`","recommended":false,"url":"https://eslint.org/docs/rules/no-plusplus"},"schema":[{"type":"object","properties":{"allowForLoopAfterthoughts":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedUnaryOp":"Unary operator '{{operator}}' used."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-process-env":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow the use of `process.env`","recommended":false,"url":"https://eslint.org/docs/rules/no-process-env"},"schema":[],"messages":{"unexpectedProcessEnv":"Unexpected use of process.env."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-process-exit":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow the use of `process.exit()`","recommended":false,"url":"https://eslint.org/docs/rules/no-process-exit"},"schema":[],"messages":{"noProcessExit":"Don't use process.exit(); throw an error instead."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-promise-executor-return":{"meta":{"type":"problem","docs":{"description":"disallow returning values from Promise executor functions","recommended":false,"url":"https://eslint.org/docs/rules/no-promise-executor-return"},"schema":[],"messages":{"returnsValue":"Return values from promise executor functions cannot be read."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-proto":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of the `__proto__` property","recommended":false,"url":"https://eslint.org/docs/rules/no-proto"},"schema":[],"messages":{"unexpectedProto":"The '__proto__' property is deprecated."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-prototype-builtins":{"meta":{"type":"problem","docs":{"description":"disallow calling some `Object.prototype` methods directly on objects","recommended":true,"url":"https://eslint.org/docs/rules/no-prototype-builtins"},"schema":[],"messages":{"prototypeBuildIn":"Do not access Object.prototype method '{{prop}}' from target object."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-redeclare":{"meta":{"type":"suggestion","docs":{"description":"disallow variable redeclaration","recommended":true,"url":"https://eslint.org/docs/rules/no-redeclare"},"messages":{"redeclared":"'{{id}}' is already defined.","redeclaredAsBuiltin":"'{{id}}' is already defined as a built-in global variable.","redeclaredBySyntax":"'{{id}}' is already defined by a variable declaration."},"schema":[{"type":"object","properties":{"builtinGlobals":{"type":"boolean","default":true}},"additionalProperties":false}]}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-exports":{"meta":{"type":"suggestion","docs":{"description":"disallow specified names in exports","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-exports"},"schema":[{"type":"object","properties":{"restrictedNamedExports":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false}],"messages":{"restrictedNamed":"'{{name}}' is restricted from being used as an exported name."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-globals":{"meta":{"type":"suggestion","docs":{"description":"disallow specified global variables","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-globals"},"schema":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"}},"required":["name"],"additionalProperties":false}]},"uniqueItems":true,"minItems":0},"messages":{"defaultMessage":"Unexpected use of '{{name}}'.","customMessage":"Unexpected use of '{{name}}'. {{customMessage}}"}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-imports":{"meta":{"type":"suggestion","docs":{"description":"disallow specified modules when loaded by `import`","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-imports"},"messages":{"path":"'{{importSource}}' import is restricted from being used.","pathWithCustomMessage":"'{{importSource}}' import is restricted from being used. {{customMessage}}","patterns":"'{{importSource}}' import is restricted from being used by a pattern.","patternWithCustomMessage":"'{{importSource}}' import is restricted from being used by a pattern. {{customMessage}}","everything":"* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted.","everythingWithCustomMessage":"* import is invalid because '{{importNames}}' from '{{importSource}}' is restricted. {{customMessage}}","importName":"'{{importName}}' import from '{{importSource}}' is restricted.","importNameWithCustomMessage":"'{{importName}}' import from '{{importSource}}' is restricted. {{customMessage}}"},"schema":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string","minLength":1},"importNames":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"required":["name"]}]},"uniqueItems":true},{"type":"array","items":[{"type":"object","properties":{"paths":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string","minLength":1},"importNames":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"required":["name"]}]},"uniqueItems":true},"patterns":{"anyOf":[{"type":"array","items":{"type":"string"},"uniqueItems":true},{"type":"array","items":{"type":"object","properties":{"group":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"message":{"type":"string","minLength":1},"caseSensitive":{"type":"boolean"}},"additionalProperties":false,"required":["group"]},"uniqueItems":true}]}},"additionalProperties":false}],"additionalItems":false}]}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-modules":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow specified modules when loaded by `require`","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-modules"},"schema":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string","minLength":1}},"additionalProperties":false,"required":["name"]}]},"uniqueItems":true},{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string","minLength":1}},"additionalProperties":false,"required":["name"]}]},"uniqueItems":true},"patterns":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"additionalProperties":false},"additionalItems":false}]},"messages":{"defaultMessage":"'{{name}}' module is restricted from being used.","customMessage":"'{{name}}' module is restricted from being used. {{customMessage}}","patternMessage":"'{{name}}' module is restricted from being used by a pattern."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-properties":{"meta":{"type":"suggestion","docs":{"description":"disallow certain properties on certain objects","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-properties"},"schema":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"object":{"type":"string"},"property":{"type":"string"},"message":{"type":"string"}},"additionalProperties":false,"required":["object"]},{"type":"object","properties":{"object":{"type":"string"},"property":{"type":"string"},"message":{"type":"string"}},"additionalProperties":false,"required":["property"]}]},"uniqueItems":true},"messages":{"restrictedObjectProperty":"'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}","restrictedProperty":"'{{propertyName}}' is restricted from being used.{{message}}"}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-restricted-syntax":{"meta":{"type":"suggestion","docs":{"description":"disallow specified syntax","recommended":false,"url":"https://eslint.org/docs/rules/no-restricted-syntax"},"schema":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","properties":{"selector":{"type":"string"},"message":{"type":"string"}},"required":["selector"],"additionalProperties":false}]},"uniqueItems":true,"minItems":0},"messages":{"restrictedSyntax":"{{message}}"}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-return-assign":{"meta":{"type":"suggestion","docs":{"description":"disallow assignment operators in `return` statements","recommended":false,"url":"https://eslint.org/docs/rules/no-return-assign"},"schema":[{"enum":["except-parens","always"]}],"messages":{"returnAssignment":"Return statement should not contain assignment.","arrowAssignment":"Arrow function should not return assignment."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-return-await":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary `return await`","recommended":false,"url":"https://eslint.org/docs/rules/no-return-await"},"fixable":null,"schema":[],"messages":{"redundantUseOfAwait":"Redundant use of `await` on a return value."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-script-url":{"meta":{"type":"suggestion","docs":{"description":"disallow `javascript:` urls","recommended":false,"url":"https://eslint.org/docs/rules/no-script-url"},"schema":[],"messages":{"unexpectedScriptURL":"Script URL is a form of eval."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-self-assign":{"meta":{"type":"problem","docs":{"description":"disallow assignments where both sides are exactly the same","recommended":true,"url":"https://eslint.org/docs/rules/no-self-assign"},"schema":[{"type":"object","properties":{"props":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"selfAssignment":"'{{name}}' is assigned to itself."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-self-compare":{"meta":{"type":"problem","docs":{"description":"disallow comparisons where both sides are exactly the same","recommended":false,"url":"https://eslint.org/docs/rules/no-self-compare"},"schema":[],"messages":{"comparingToSelf":"Comparing to itself is potentially pointless."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-sequences":{"meta":{"type":"suggestion","docs":{"description":"disallow comma operators","recommended":false,"url":"https://eslint.org/docs/rules/no-sequences"},"schema":[{"properties":{"allowInParentheses":{"type":"boolean","default":true}},"additionalProperties":false}],"messages":{"unexpectedCommaExpression":"Unexpected use of comma operator."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-setter-return":{"meta":{"type":"problem","docs":{"description":"disallow returning values from setters","recommended":true,"url":"https://eslint.org/docs/rules/no-setter-return"},"schema":[],"messages":{"returnsValue":"Setter cannot return a value."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-shadow":{"meta":{"type":"suggestion","docs":{"description":"disallow variable declarations from shadowing variables declared in the outer scope","recommended":false,"url":"https://eslint.org/docs/rules/no-shadow"},"schema":[{"type":"object","properties":{"builtinGlobals":{"type":"boolean","default":false},"hoist":{"enum":["all","functions","never"],"default":"functions"},"allow":{"type":"array","items":{"type":"string"}},"ignoreOnInitialization":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"noShadow":"'{{name}}' is already declared in the upper scope on line {{shadowedLine}} column {{shadowedColumn}}.","noShadowGlobal":"'{{name}}' is already a global variable."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-shadow-restricted-names":{"meta":{"type":"suggestion","docs":{"description":"disallow identifiers from shadowing restricted names","recommended":true,"url":"https://eslint.org/docs/rules/no-shadow-restricted-names"},"schema":[],"messages":{"shadowingRestrictedName":"Shadowing of global property '{{name}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-sparse-arrays":{"meta":{"type":"problem","docs":{"description":"disallow sparse arrays","recommended":true,"url":"https://eslint.org/docs/rules/no-sparse-arrays"},"schema":[],"messages":{"unexpectedSparseArray":"Unexpected comma in middle of array."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-sync":{"meta":{"deprecated":true,"replacedBy":[],"type":"suggestion","docs":{"description":"disallow synchronous methods","recommended":false,"url":"https://eslint.org/docs/rules/no-sync"},"schema":[{"type":"object","properties":{"allowAtRootLevel":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"noSync":"Unexpected sync method: '{{propertyName}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-tabs":{"meta":{"type":"layout","docs":{"description":"disallow all tabs","recommended":false,"url":"https://eslint.org/docs/rules/no-tabs"},"schema":[{"type":"object","properties":{"allowIndentationTabs":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedTab":"Unexpected tab character."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-template-curly-in-string":{"meta":{"type":"problem","docs":{"description":"disallow template literal placeholder syntax in regular strings","recommended":false,"url":"https://eslint.org/docs/rules/no-template-curly-in-string"},"schema":[],"messages":{"unexpectedTemplateExpression":"Unexpected template string expression."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-ternary":{"meta":{"type":"suggestion","docs":{"description":"disallow ternary operators","recommended":false,"url":"https://eslint.org/docs/rules/no-ternary"},"schema":[],"messages":{"noTernaryOperator":"Ternary operator used."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-this-before-super":{"meta":{"type":"problem","docs":{"description":"disallow `this`/`super` before calling `super()` in constructors","recommended":true,"url":"https://eslint.org/docs/rules/no-this-before-super"},"schema":[],"messages":{"noBeforeSuper":"'{{kind}}' is not allowed before 'super()'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-throw-literal":{"meta":{"type":"suggestion","docs":{"description":"disallow throwing literals as exceptions","recommended":false,"url":"https://eslint.org/docs/rules/no-throw-literal"},"schema":[],"messages":{"object":"Expected an error object to be thrown.","undef":"Do not throw undefined."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-undef":{"meta":{"type":"problem","docs":{"description":"disallow the use of undeclared variables unless mentioned in `/*global */` comments","recommended":true,"url":"https://eslint.org/docs/rules/no-undef"},"schema":[{"type":"object","properties":{"typeof":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"undef":"'{{name}}' is not defined."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-undefined":{"meta":{"type":"suggestion","docs":{"description":"disallow the use of `undefined` as an identifier","recommended":false,"url":"https://eslint.org/docs/rules/no-undefined"},"schema":[],"messages":{"unexpectedUndefined":"Unexpected use of undefined."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-underscore-dangle":{"meta":{"type":"suggestion","docs":{"description":"disallow dangling underscores in identifiers","recommended":false,"url":"https://eslint.org/docs/rules/no-underscore-dangle"},"schema":[{"type":"object","properties":{"allow":{"type":"array","items":{"type":"string"}},"allowAfterThis":{"type":"boolean","default":false},"allowAfterSuper":{"type":"boolean","default":false},"allowAfterThisConstructor":{"type":"boolean","default":false},"enforceInMethodNames":{"type":"boolean","default":false},"allowFunctionParams":{"type":"boolean","default":true},"enforceInClassFields":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedUnderscore":"Unexpected dangling '_' in '{{identifier}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unexpected-multiline":{"meta":{"type":"problem","docs":{"description":"disallow confusing multiline expressions","recommended":true,"url":"https://eslint.org/docs/rules/no-unexpected-multiline"},"schema":[],"messages":{"function":"Unexpected newline between function and ( of function call.","property":"Unexpected newline between object and [ of property access.","taggedTemplate":"Unexpected newline between template tag and template literal.","division":"Unexpected newline between numerator and division operator."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unmodified-loop-condition":{"meta":{"type":"problem","docs":{"description":"disallow unmodified loop conditions","recommended":false,"url":"https://eslint.org/docs/rules/no-unmodified-loop-condition"},"schema":[],"messages":{"loopConditionNotModified":"'{{name}}' is not modified in this loop."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unreachable":{"meta":{"type":"problem","docs":{"description":"disallow unreachable code after `return`, `throw`, `continue`, and `break` statements","recommended":true,"url":"https://eslint.org/docs/rules/no-unreachable"},"schema":[],"messages":{"unreachableCode":"Unreachable code."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unreachable-loop":{"meta":{"type":"problem","docs":{"description":"disallow loops with a body that allows only one iteration","recommended":false,"url":"https://eslint.org/docs/rules/no-unreachable-loop"},"schema":[{"type":"object","properties":{"ignore":{"type":"array","items":{"enum":["WhileStatement","DoWhileStatement","ForStatement","ForInStatement","ForOfStatement"]},"uniqueItems":true}},"additionalProperties":false}],"messages":{"invalid":"Invalid loop. Its body allows only one iteration."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unsafe-finally":{"meta":{"type":"problem","docs":{"description":"disallow control flow statements in `finally` blocks","recommended":true,"url":"https://eslint.org/docs/rules/no-unsafe-finally"},"schema":[],"messages":{"unsafeUsage":"Unsafe usage of {{nodeType}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unsafe-negation":{"meta":{"type":"problem","docs":{"description":"disallow negating the left operand of relational operators","recommended":true,"url":"https://eslint.org/docs/rules/no-unsafe-negation"},"hasSuggestions":true,"schema":[{"type":"object","properties":{"enforceForOrderingRelations":{"type":"boolean","default":false}},"additionalProperties":false}],"fixable":null,"messages":{"unexpected":"Unexpected negating the left operand of '{{operator}}' operator.","suggestNegatedExpression":"Negate '{{operator}}' expression instead of its left operand. This changes the current behavior.","suggestParenthesisedNegation":"Wrap negation in '()' to make the intention explicit. This preserves the current behavior."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unsafe-optional-chaining":{"meta":{"type":"problem","docs":{"description":"disallow use of optional chaining in contexts where the `undefined` value is not allowed","recommended":true,"url":"https://eslint.org/docs/rules/no-unsafe-optional-chaining"},"schema":[{"type":"object","properties":{"disallowArithmeticOperators":{"type":"boolean","default":false}},"additionalProperties":false}],"fixable":null,"messages":{"unsafeOptionalChain":"Unsafe usage of optional chaining. If it short-circuits with 'undefined' the evaluation will throw TypeError.","unsafeArithmetic":"Unsafe arithmetic operation on optional chaining. It can result in NaN."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unused-expressions":{"meta":{"type":"suggestion","docs":{"description":"disallow unused expressions","recommended":false,"url":"https://eslint.org/docs/rules/no-unused-expressions"},"schema":[{"type":"object","properties":{"allowShortCircuit":{"type":"boolean","default":false},"allowTernary":{"type":"boolean","default":false},"allowTaggedTemplates":{"type":"boolean","default":false},"enforceForJSX":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unusedExpression":"Expected an assignment or function call and instead saw an expression."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unused-private-class-members":{"meta":{"type":"problem","docs":{"description":"disallow unused private class members","recommended":false,"url":"https://eslint.org/docs/rules/no-unused-private-class-members"},"schema":[],"messages":{"unusedPrivateClassMember":"'{{classMemberName}}' is defined but never used."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-unused-vars":{"meta":{"type":"problem","docs":{"description":"disallow unused variables","recommended":true,"url":"https://eslint.org/docs/rules/no-unused-vars"},"schema":[{"oneOf":[{"enum":["all","local"]},{"type":"object","properties":{"vars":{"enum":["all","local"]},"varsIgnorePattern":{"type":"string"},"args":{"enum":["all","after-used","none"]},"ignoreRestSiblings":{"type":"boolean"},"argsIgnorePattern":{"type":"string"},"caughtErrors":{"enum":["all","none"]},"caughtErrorsIgnorePattern":{"type":"string"},"destructuredArrayIgnorePattern":{"type":"string"}},"additionalProperties":false}]}],"messages":{"unusedVar":"'{{varName}}' is {{action}} but never used{{additional}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-use-before-define":{"meta":{"type":"problem","docs":{"description":"disallow the use of variables before they are defined","recommended":false,"url":"https://eslint.org/docs/rules/no-use-before-define"},"schema":[{"oneOf":[{"enum":["nofunc"]},{"type":"object","properties":{"functions":{"type":"boolean"},"classes":{"type":"boolean"},"variables":{"type":"boolean"},"allowNamedExports":{"type":"boolean"}},"additionalProperties":false}]}],"messages":{"usedBeforeDefined":"'{{name}}' was used before it was defined."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-backreference":{"meta":{"type":"problem","docs":{"description":"disallow useless backreferences in regular expressions","recommended":true,"url":"https://eslint.org/docs/rules/no-useless-backreference"},"schema":[],"messages":{"nested":"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}' from within that group.","forward":"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}' which appears later in the pattern.","backward":"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}' which appears before in the same lookbehind.","disjunctive":"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}' which is in another alternative.","intoNegativeLookaround":"Backreference '{{ bref }}' will be ignored. It references group '{{ group }}' which is in a negative lookaround."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-call":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary calls to `.call()` and `.apply()`","recommended":false,"url":"https://eslint.org/docs/rules/no-useless-call"},"schema":[],"messages":{"unnecessaryCall":"Unnecessary '.{{name}}()'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-catch":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary `catch` clauses","recommended":true,"url":"https://eslint.org/docs/rules/no-useless-catch"},"schema":[],"messages":{"unnecessaryCatchClause":"Unnecessary catch clause.","unnecessaryCatch":"Unnecessary try/catch wrapper."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-concat":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary concatenation of literals or template literals","recommended":false,"url":"https://eslint.org/docs/rules/no-useless-concat"},"schema":[],"messages":{"unexpectedConcat":"Unexpected string concatenation of literals."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-constructor":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary constructors","recommended":false,"url":"https://eslint.org/docs/rules/no-useless-constructor"},"schema":[],"messages":{"noUselessConstructor":"Useless constructor."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-useless-escape":{"meta":{"type":"suggestion","docs":{"description":"disallow unnecessary escape characters","recommended":true,"url":"https://eslint.org/docs/rules/no-useless-escape"},"hasSuggestions":true,"messages":{"unnecessaryEscape":"Unnecessary escape character: \\{{character}}.","removeEscape":"Remove the `\\`. This maintains the current functionality.","escapeBackslash":"Replace the `\\` with `\\\\` to include the actual backslash character."},"schema":[]}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-void":{"meta":{"type":"suggestion","docs":{"description":"disallow `void` operators","recommended":false,"url":"https://eslint.org/docs/rules/no-void"},"messages":{"noVoid":"Expected 'undefined' and instead saw 'void'."},"schema":[{"type":"object","properties":{"allowAsStatement":{"type":"boolean","default":false}},"additionalProperties":false}]}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-warning-comments":{"meta":{"type":"suggestion","docs":{"description":"disallow specified warning terms in comments","recommended":false,"url":"https://eslint.org/docs/rules/no-warning-comments"},"schema":[{"type":"object","properties":{"terms":{"type":"array","items":{"type":"string"}},"location":{"enum":["start","anywhere"]}},"additionalProperties":false}],"messages":{"unexpectedComment":"Unexpected '{{matchedTerm}}' comment: '{{comment}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"no-with":{"meta":{"type":"suggestion","docs":{"description":"disallow `with` statements","recommended":true,"url":"https://eslint.org/docs/rules/no-with"},"schema":[],"messages":{"unexpectedWith":"Unexpected use of 'with' statement."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-named-capture-group":{"meta":{"type":"suggestion","docs":{"description":"enforce using named capture group in regular expression","recommended":false,"url":"https://eslint.org/docs/rules/prefer-named-capture-group"},"schema":[],"messages":{"required":"Capture group '{{group}}' should be converted to a named or non-capturing group."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-promise-reject-errors":{"meta":{"type":"suggestion","docs":{"description":"require using Error objects as Promise rejection reasons","recommended":false,"url":"https://eslint.org/docs/rules/prefer-promise-reject-errors"},"fixable":null,"schema":[{"type":"object","properties":{"allowEmptyReject":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"rejectAnError":"Expected the Promise rejection reason to be an Error."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-reflect":{"meta":{"type":"suggestion","docs":{"description":"require `Reflect` methods where applicable","recommended":false,"url":"https://eslint.org/docs/rules/prefer-reflect"},"deprecated":true,"replacedBy":[],"schema":[{"type":"object","properties":{"exceptions":{"type":"array","items":{"enum":["apply","call","delete","defineProperty","getOwnPropertyDescriptor","getPrototypeOf","setPrototypeOf","isExtensible","getOwnPropertyNames","preventExtensions"]},"uniqueItems":true}},"additionalProperties":false}],"messages":{"preferReflect":"Avoid using {{existing}}, instead use {{substitute}}."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-regex-literals":{"meta":{"type":"suggestion","docs":{"description":"disallow use of the `RegExp` constructor in favor of regular expression literals","recommended":false,"url":"https://eslint.org/docs/rules/prefer-regex-literals"},"hasSuggestions":true,"schema":[{"type":"object","properties":{"disallowRedundantWrapping":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"unexpectedRegExp":"Use a regular expression literal instead of the 'RegExp' constructor.","replaceWithLiteral":"Replace with an equivalent regular expression literal.","unexpectedRedundantRegExp":"Regular expression literal is unnecessarily wrapped within a 'RegExp' constructor.","unexpectedRedundantRegExpWithFlags":"Use regular expression literal with flags instead of the 'RegExp' constructor."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-rest-params":{"meta":{"type":"suggestion","docs":{"description":"require rest parameters instead of `arguments`","recommended":false,"url":"https://eslint.org/docs/rules/prefer-rest-params"},"schema":[],"messages":{"preferRestParams":"Use the rest parameters instead of 'arguments'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"prefer-spread":{"meta":{"type":"suggestion","docs":{"description":"require spread operators instead of `.apply()`","recommended":false,"url":"https://eslint.org/docs/rules/prefer-spread"},"schema":[],"fixable":null,"messages":{"preferSpread":"Use the spread operator instead of '.apply()'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"radix":{"meta":{"type":"suggestion","docs":{"description":"enforce the consistent use of the radix argument when using `parseInt()`","recommended":false,"url":"https://eslint.org/docs/rules/radix"},"hasSuggestions":true,"schema":[{"enum":["always","as-needed"]}],"messages":{"missingParameters":"Missing parameters.","redundantRadix":"Redundant radix parameter.","missingRadix":"Missing radix parameter.","invalidRadix":"Invalid radix parameter, must be an integer between 2 and 36.","addRadixParameter10":"Add radix parameter `10` for parsing decimal numbers."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"require-atomic-updates":{"meta":{"type":"problem","docs":{"description":"disallow assignments that can lead to race conditions due to usage of `await` or `yield`","recommended":false,"url":"https://eslint.org/docs/rules/require-atomic-updates"},"fixable":null,"schema":[{"type":"object","properties":{"allowProperties":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"nonAtomicUpdate":"Possible race condition: `{{value}}` might be reassigned based on an outdated value of `{{value}}`.","nonAtomicObjectUpdate":"Possible race condition: `{{value}}` might be assigned based on an outdated state of `{{object}}`."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"require-await":{"meta":{"type":"suggestion","docs":{"description":"disallow async functions which have no `await` expression","recommended":false,"url":"https://eslint.org/docs/rules/require-await"},"schema":[],"messages":{"missingAwait":"{{name}} has no 'await' expression."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"require-jsdoc":{"meta":{"type":"suggestion","docs":{"description":"require JSDoc comments","recommended":false,"url":"https://eslint.org/docs/rules/require-jsdoc"},"schema":[{"type":"object","properties":{"require":{"type":"object","properties":{"ClassDeclaration":{"type":"boolean","default":false},"MethodDefinition":{"type":"boolean","default":false},"FunctionDeclaration":{"type":"boolean","default":true},"ArrowFunctionExpression":{"type":"boolean","default":false},"FunctionExpression":{"type":"boolean","default":false}},"additionalProperties":false,"default":{}}},"additionalProperties":false}],"deprecated":true,"replacedBy":[],"messages":{"missingJSDocComment":"Missing JSDoc comment."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"require-unicode-regexp":{"meta":{"type":"suggestion","docs":{"description":"enforce the use of `u` flag on RegExp","recommended":false,"url":"https://eslint.org/docs/rules/require-unicode-regexp"},"messages":{"requireUFlag":"Use the 'u' flag."},"schema":[]}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"require-yield":{"meta":{"type":"suggestion","docs":{"description":"require generator functions to contain `yield`","recommended":true,"url":"https://eslint.org/docs/rules/require-yield"},"schema":[],"messages":{"missingYield":"This generator function does not have 'yield'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"sort-keys":{"meta":{"type":"suggestion","docs":{"description":"require object keys to be sorted","recommended":false,"url":"https://eslint.org/docs/rules/sort-keys"},"schema":[{"enum":["asc","desc"]},{"type":"object","properties":{"caseSensitive":{"type":"boolean","default":true},"natural":{"type":"boolean","default":false},"minKeys":{"type":"integer","minimum":2,"default":2}},"additionalProperties":false}],"messages":{"sortKeys":"Expected object keys to be in {{natural}}{{insensitive}}{{order}}ending order. '{{thisName}}' should be before '{{prevName}}'."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"symbol-description":{"meta":{"type":"suggestion","docs":{"description":"require symbol descriptions","recommended":false,"url":"https://eslint.org/docs/rules/symbol-description"},"fixable":null,"schema":[],"messages":{"expected":"Expected Symbol to have a description."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"use-isnan":{"meta":{"type":"problem","docs":{"description":"require calls to `isNaN()` when checking for `NaN`","recommended":true,"url":"https://eslint.org/docs/rules/use-isnan"},"schema":[{"type":"object","properties":{"enforceForSwitchCase":{"type":"boolean","default":true},"enforceForIndexOf":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"comparisonWithNaN":"Use the isNaN function to compare with NaN.","switchNaN":"'switch(NaN)' can never match a case clause. Use Number.isNaN instead of the switch.","caseNaN":"'case NaN' can never match. Use Number.isNaN before the switch.","indexOfNaN":"Array prototype method '{{ methodName }}' cannot find NaN."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"valid-typeof":{"meta":{"type":"problem","docs":{"description":"enforce comparing `typeof` expressions against valid strings","recommended":true,"url":"https://eslint.org/docs/rules/valid-typeof"},"hasSuggestions":true,"schema":[{"type":"object","properties":{"requireStringLiterals":{"type":"boolean","default":false}},"additionalProperties":false}],"messages":{"invalidValue":"Invalid typeof comparison value.","notString":"Typeof comparisons should be to string literals.","suggestString":"Use `\"{{type}}\"` instead of `{{type}}`."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: turning off rule: {"vars-on-top":{"meta":{"type":"suggestion","docs":{"description":"require `var` declarations be placed at the top of their containing scope","recommended":false,"url":"https://eslint.org/docs/rules/vars-on-top"},"schema":[],"messages":{"top":"All 'var' declarations must be at the top of the function scope."}}}} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at Object. (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:99:14) - at Map.forEach () - at getRelevantESLintConfig (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:91:9) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:78:18) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: The semi rule is configured with a non-object value of always. Using that value. - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at getRuleValue (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:330:14) - at ruleValue (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:59:25) - at configureOptions (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:152:29) - at /home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:136:63 - at Array.reduce () - at getPrettierOptionsFromESLintRules (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:136:38) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:79:20) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) -Trace: prettier-eslint [TRACE]: The indent rule is configured with a non-object value of 4. Using that value. - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at getRuleValue (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:330:14) - at ruleValue (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:63:25) - at configureOptions (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:152:29) - at /home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:136:63 - at Array.reduce () - at getPrettierOptionsFromESLintRules (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:136:38) - at getOptionsForFormatting (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:79:20) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:74:64) - at processTicksAndRejections (node:internal/process/task_queues:96:5) -prettier-eslint [DEBUG]: The useTabs rule is not configured, let prettier decide -prettier-eslint [DEBUG]: The jsxBracketSameLine rule is not configured, let prettier decide -prettier-eslint [DEBUG]: inferred options: Object { - "eslintConfig": Object { - "cwd": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap", - "env": Object {}, - "fix": true, - "globals": Object { - "ArrayBuffer": "readonly", - "Atomics": "readonly", - "BigInt": "readonly", - "BigInt64Array": "readonly", - "BigUint64Array": "readonly", - "Buffer": "readonly", - "DataView": "readonly", - "Float32Array": "readonly", - "Float64Array": "readonly", - "GLOBAL": "readonly", - "Int16Array": "readonly", - "Int32Array": "readonly", - "Int8Array": "readonly", - "Intl": "readonly", - "Map": "readonly", - "Promise": "readonly", - "Proxy": "readonly", - "Reflect": "readonly", - "Set": "readonly", - "SharedArrayBuffer": "readonly", - "Symbol": "readonly", - "TextDecoder": "readonly", - "TextEncoder": "readonly", - "URL": "readonly", - "URLSearchParams": "readonly", - "Uint16Array": "readonly", - "Uint32Array": "readonly", - "Uint8Array": "readonly", - "Uint8ClampedArray": "readonly", - "WeakMap": "readonly", - "WeakSet": "readonly", - "WebAssembly": "readonly", - "__dirname": "readonly", - "__filename": "readonly", - "clearImmediate": "readonly", - "clearInterval": "readonly", - "clearTimeout": "readonly", - "console": "readonly", - "exports": "writable", - "global": "readonly", - "globalThis": "readonly", - "module": "readonly", - "process": "readonly", - "queueMicrotask": "readonly", - "require": "readonly", - "root": "readonly", - "setImmediate": "readonly", - "setInterval": "readonly", - "setTimeout": "readonly", - }, - "ignorePatterns": Array [ - "lib/", - "node_modules/", - "**/__tests__", - ], - "noInlineConfig": undefined, - "parser": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/@typescript-eslint/parser/dist/index.js", - "parserOptions": Object { - "ecmaFeatures": Object { - "globalReturn": true, - }, - "ecmaVersion": 2018, - "sourceType": "module", - }, - "plugins": Array [ - "node", - "@typescript-eslint", - ], - "reportUnusedDisableDirectives": undefined, - "rules": Object { - "@typescript-eslint/adjacent-overload-signatures": Array [ - "error", - ], - "@typescript-eslint/ban-ts-comment": Array [ - "error", - ], - "@typescript-eslint/ban-types": Array [ - "error", - ], - "@typescript-eslint/camelcase": Array [ - "off", - ], - "@typescript-eslint/explicit-function-return-type": Array [ - "off", - ], - "@typescript-eslint/explicit-module-boundary-types": Array [ - "off", - ], - "@typescript-eslint/no-array-constructor": Array [ - "error", - ], - "@typescript-eslint/no-empty-function": Array [ - "error", - ], - "@typescript-eslint/no-empty-interface": Array [ - "error", - ], - "@typescript-eslint/no-explicit-any": Array [ - "warn", - ], - "@typescript-eslint/no-extra-non-null-assertion": Array [ - "error", - ], - "@typescript-eslint/no-extra-semi": Array [ - "error", - ], - "@typescript-eslint/no-inferrable-types": Array [ - "error", - ], - "@typescript-eslint/no-loss-of-precision": Array [ - "error", - ], - "@typescript-eslint/no-misused-new": Array [ - "error", - ], - "@typescript-eslint/no-namespace": Array [ - "error", - ], - "@typescript-eslint/no-non-null-asserted-optional-chain": Array [ - "error", - ], - "@typescript-eslint/no-non-null-assertion": Array [ - "warn", - ], - "@typescript-eslint/no-this-alias": Array [ - "error", - ], - "@typescript-eslint/no-unnecessary-type-constraint": Array [ - "error", - ], - "@typescript-eslint/no-unused-vars": Array [ - "warn", - Object { - "args": "after-used", - "argsIgnorePattern": "^_", - "ignoreRestSiblings": false, - "vars": "all", - }, - ], - "@typescript-eslint/no-use-before-define": Array [ - "off", - ], - "@typescript-eslint/no-var-requires": Array [ - "warn", - ], - "@typescript-eslint/no-warning-comments": Array [ - "off", - ], - "@typescript-eslint/prefer-as-const": Array [ - "error", - ], - "@typescript-eslint/prefer-namespace-keyword": Array [ - "error", - ], - "@typescript-eslint/triple-slash-reference": Array [ - "error", - ], - "accessor-pairs": Array [ - "off", - ], - "array-callback-return": Array [ - "off", - ], - "arrow-parens": Array [ - "error", - "always", - ], - "block-scoped-var": Array [ - "off", - ], - "brace-style": Array [ - "warn", - "1tbs", - Object { - "allowSingleLine": true, - }, - ], - "callback-return": Array [ - "off", - ], - "camelcase": Array [ - "off", - ], - "class-methods-use-this": Array [ - "off", - ], - "complexity": Array [ - "off", - ], - "consistent-return": Array [ - "off", - ], - "consistent-this": Array [ - "off", - ], - "constructor-super": Array [ - "off", - ], - "default-case": Array [ - "off", - ], - "default-case-last": Array [ - "off", - ], - "default-param-last": Array [ - "off", - ], - "eol-last": Array [ - "error", - ], - "eqeqeq": Array [ - "error", - ], - "for-direction": Array [ - "off", - ], - "func-name-matching": Array [ - "off", - ], - "func-names": Array [ - "off", - ], - "func-style": Array [ - "off", - ], - "getter-return": Array [ - "off", - ], - "global-require": Array [ - "off", - ], - "grouped-accessor-pairs": Array [ - "off", - ], - "guard-for-in": Array [ - "off", - ], - "handle-callback-err": Array [ - "off", - ], - "id-blacklist": Array [ - "off", - ], - "id-denylist": Array [ - "off", - ], - "id-length": Array [ - "off", - ], - "id-match": Array [ - "off", - ], - "indent": Array [ - "warn", - 4, - Object { - "SwitchCase": 0, - "VariableDeclarator": 0, - "flatTernaryExpressions": false, - "ignoreComments": false, - "offsetTernaryExpressions": false, - }, - ], - "init-declarations": Array [ - "off", - ], - "line-comment-position": Array [ - "off", - ], - "linebreak-style": Array [ - "error", - "unix", - ], - "max-classes-per-file": Array [ - "off", - ], - "max-depth": Array [ - "off", - ], - "max-len": Array [ - "off", - ], - "max-lines": Array [ - "off", - ], - "max-lines-per-function": Array [ - "off", - ], - "max-nested-callbacks": Array [ - "off", - ], - "max-params": Array [ - "off", - ], - "max-statements": Array [ - "off", - ], - "max-statements-per-line": Array [ - "off", - ], - "new-cap": Array [ - "off", - ], - "no-alert": Array [ - "off", - ], - "no-array-constructor": Array [ - "off", - ], - "no-async-promise-executor": Array [ - "off", - ], - "no-await-in-loop": Array [ - "off", - ], - "no-bitwise": Array [ - "off", - ], - "no-buffer-constructor": Array [ - "off", - ], - "no-caller": Array [ - "off", - ], - "no-case-declarations": Array [ - "off", - ], - "no-catch-shadow": Array [ - "off", - ], - "no-class-assign": Array [ - "off", - ], - "no-compare-neg-zero": Array [ - "off", - ], - "no-cond-assign": Array [ - "off", - ], - "no-console": Array [ - "off", - ], - "no-const-assign": Array [ - "off", - ], - "no-constant-binary-expression": Array [ - "off", - ], - "no-constant-condition": Array [ - "off", - ], - "no-constructor-return": Array [ - "off", - ], - "no-continue": Array [ - "off", - ], - "no-control-regex": Array [ - "off", - ], - "no-debugger": Array [ - "off", - ], - "no-delete-var": Array [ - "off", - ], - "no-dupe-args": Array [ - "off", - ], - "no-dupe-class-members": Array [ - "off", - ], - "no-dupe-else-if": Array [ - "off", - ], - "no-dupe-keys": Array [ - "off", - ], - "no-duplicate-case": Array [ - "off", - ], - "no-duplicate-imports": Array [ - "off", - ], - "no-empty": Array [ - "off", - ], - "no-empty-character-class": Array [ - "off", - ], - "no-empty-function": Array [ - "off", - ], - "no-empty-pattern": Array [ - "off", - ], - "no-eq-null": Array [ - "off", - ], - "no-eval": Array [ - "off", - ], - "no-ex-assign": Array [ - "off", - ], - "no-extend-native": Array [ - "off", - ], - "no-extra-boolean-cast": Array [ - "error", - ], - "no-extra-semi": Array [ - "off", - ], - "no-fallthrough": Array [ - "off", - ], - "no-func-assign": Array [ - "off", - ], - "no-global-assign": Array [ - "off", - ], - "no-implicit-globals": Array [ - "off", - ], - "no-implied-eval": Array [ - "off", - ], - "no-import-assign": Array [ - "off", - ], - "no-inline-comments": Array [ - "off", - ], - "no-inner-declarations": Array [ - "off", - ], - "no-invalid-regexp": Array [ - "off", - ], - "no-invalid-this": Array [ - "off", - ], - "no-irregular-whitespace": Array [ - "off", - ], - "no-iterator": Array [ - "off", - ], - "no-label-var": Array [ - "off", - ], - "no-labels": Array [ - "off", - ], - "no-lone-blocks": Array [ - "off", - ], - "no-loop-func": Array [ - "off", - ], - "no-loss-of-precision": Array [ - "off", - ], - "no-magic-numbers": Array [ - "off", - ], - "no-misleading-character-class": Array [ - "off", - ], - "no-mixed-operators": Array [ - "off", - ], - "no-mixed-requires": Array [ - "off", - ], - "no-mixed-spaces-and-tabs": Array [ - "off", - ], - "no-multi-assign": Array [ - "off", - ], - "no-multi-str": Array [ - "off", - ], - "no-native-reassign": Array [ - "off", - ], - "no-negated-condition": Array [ - "off", - ], - "no-negated-in-lhs": Array [ - "off", - ], - "no-nested-ternary": Array [ - "off", - ], - "no-new": Array [ - "off", - ], - "no-new-func": Array [ - "off", - ], - "no-new-object": Array [ - "off", - ], - "no-new-require": Array [ - "off", - ], - "no-new-symbol": Array [ - "off", - ], - "no-new-wrappers": Array [ - "off", - ], - "no-nonoctal-decimal-escape": Array [ - "off", - ], - "no-obj-calls": Array [ - "off", - ], - "no-octal": Array [ - "off", - ], - "no-octal-escape": Array [ - "off", - ], - "no-param-reassign": Array [ - "off", - ], - "no-path-concat": Array [ - "off", - ], - "no-plusplus": Array [ - "off", - ], - "no-process-env": Array [ - "off", - ], - "no-process-exit": Array [ - "off", - ], - "no-promise-executor-return": Array [ - "off", - ], - "no-proto": Array [ - "off", - ], - "no-prototype-builtins": Array [ - "off", - ], - "no-redeclare": Array [ - "off", - ], - "no-regex-spaces": Array [ - "error", - ], - "no-restricted-exports": Array [ - "off", - ], - "no-restricted-globals": Array [ - "off", - ], - "no-restricted-imports": Array [ - "off", - ], - "no-restricted-modules": Array [ - "off", - ], - "no-restricted-properties": Array [ - "off", - ], - "no-restricted-syntax": Array [ - "off", - ], - "no-return-assign": Array [ - "off", - ], - "no-return-await": Array [ - "off", - ], - "no-script-url": Array [ - "off", - ], - "no-self-assign": Array [ - "off", - ], - "no-self-compare": Array [ - "off", - ], - "no-sequences": Array [ - "off", - ], - "no-setter-return": Array [ - "off", - ], - "no-shadow": Array [ - "off", - ], - "no-shadow-restricted-names": Array [ - "off", - ], - "no-sparse-arrays": Array [ - "off", - ], - "no-sync": Array [ - "off", - ], - "no-tabs": Array [ - "off", - ], - "no-template-curly-in-string": Array [ - "off", - ], - "no-ternary": Array [ - "off", - ], - "no-this-before-super": Array [ - "off", - ], - "no-throw-literal": Array [ - "off", - ], - "no-trailing-spaces": Array [ - "error", - ], - "no-undef": Array [ - "off", - ], - "no-undefined": Array [ - "off", - ], - "no-underscore-dangle": Array [ - "off", - ], - "no-unexpected-multiline": Array [ - "off", - ], - "no-unmodified-loop-condition": Array [ - "off", - ], - "no-unreachable": Array [ - "off", - ], - "no-unreachable-loop": Array [ - "off", - ], - "no-unsafe-finally": Array [ - "off", - ], - "no-unsafe-negation": Array [ - "off", - ], - "no-unsafe-optional-chaining": Array [ - "off", - ], - "no-unused-expressions": Array [ - "off", - ], - "no-unused-labels": Array [ - "error", - ], - "no-unused-private-class-members": Array [ - "off", - ], - "no-unused-vars": Array [ - "off", - ], - "no-use-before-define": Array [ - "off", - ], - "no-useless-backreference": Array [ - "off", - ], - "no-useless-call": Array [ - "off", - ], - "no-useless-catch": Array [ - "off", - ], - "no-useless-concat": Array [ - "off", - ], - "no-useless-constructor": Array [ - "off", - ], - "no-useless-escape": Array [ - "off", - ], - "no-var": Array [ - "error", - ], - "no-void": Array [ - "off", - ], - "no-warning-comments": Array [ - "off", - ], - "no-with": Array [ - "off", - ], - "node/no-deprecated-api": Array [ - "error", - ], - "node/no-empty-function": Array [ - "off", - ], - "node/no-exports-assign": Array [ - "error", - ], - "node/no-extraneous-import": Array [ - "error", - ], - "node/no-extraneous-require": Array [ - "error", - ], - "node/no-missing-import": Array [ - "off", - ], - "node/no-missing-require": Array [ - "error", - ], - "node/no-unpublished-bin": Array [ - "error", - ], - "node/no-unpublished-import": Array [ - "error", - ], - "node/no-unpublished-require": Array [ - "error", - ], - "node/no-unsupported-features/es-builtins": Array [ - "error", - ], - "node/no-unsupported-features/es-syntax": Array [ - "off", - Object { - "ignores": Array [], - }, - ], - "node/no-unsupported-features/node-builtins": Array [ - "error", - ], - "node/process-exit-as-throw": Array [ - "error", - ], - "node/shebang": Array [ - "off", - ], - "object-curly-spacing": Array [ - "warn", - "always", - ], - "prefer-arrow-callback": Array [ - "error", - ], - "prefer-const": Array [ - "error", - ], - "prefer-named-capture-group": Array [ - "off", - ], - "prefer-promise-reject-errors": Array [ - "off", - ], - "prefer-reflect": Array [ - "off", - ], - "prefer-regex-literals": Array [ - "off", - ], - "prefer-rest-params": Array [ - "off", - ], - "prefer-spread": Array [ - "off", - ], - "prettier/prettier": Array [ - "off", - ], - "quotes": Array [ - "warn", - "single", - ], - "radix": Array [ - "off", - ], - "require-atomic-updates": Array [ - "off", - ], - "require-await": Array [ - "off", - ], - "require-jsdoc": Array [ - "off", - ], - "require-unicode-regexp": Array [ - "off", - ], - "require-yield": Array [ - "off", - ], - "semi": Array [ - "error", - "always", - ], - "sort-keys": Array [ - "off", - ], - "symbol-description": Array [ - "off", - ], - "use-isnan": Array [ - "off", - ], - "valid-typeof": Array [ - "off", - ], - "vars-on-top": Array [ - "off", - ], - }, - "settings": Object {}, - "useEslintrc": false, - }, - "eslintPath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/eslint/lib/api.js", - "filePath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts", - "logLevel": "trace", - "prettierLast": false, - "prettierOptions": Object { - "arrowParens": "always", - "bracketSpacing": true, - "filepath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts", - "insertPragma": undefined, - "printWidth": 120, - "proseWrap": undefined, - "requirePragma": undefined, - "semi": true, - "singleQuote": true, - "tabWidth": 4, - "trailingComma": "none", - "useTabs": undefined, - }, - "prettierPath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier/index.js", - "text": "import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory - } = result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} -", -} -prettier-eslint [DEBUG]: calling prettier on text -Trace: prettier-eslint [TRACE]: prettier input: - - import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory - } = result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at prettify (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:119:12) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:20) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: requiring "prettier" module at "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier/index.js" - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at requireModule (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:369:12) - at prettify (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:124:47) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:20) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: calling prettier.format with the text and prettierOptions - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at prettify (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:127:14) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:20) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: prettier: output === input false - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at prettify (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:129:14) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:20) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: prettier output: - - import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { accessiblePlacesCountByCategory, accessiblePlacesCountByDetailedCategory } = - result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at prettify (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:130:14) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:20) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: requiring "eslint" module at "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/eslint/lib/api.js" - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at requireModule (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:369:12) - at getESLint (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/utils.js:383:7) - at eslintFix (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:176:41) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:10) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: calling cliEngine.executeOnText with the text - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at eslintFix (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:179:14) - at format (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:113:10) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: executeOnText returned the following report: Array [ - Object { - "errorCount": 0, - "fatalErrorCount": 0, - "filePath": "/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts", - "fixableErrorCount": 0, - "fixableWarningCount": 0, - "messages": Array [ - Object { - "column": 8, - "endColumn": 13, - "endLine": 14, - "line": 14, - "message": "'_uniq' is defined but never used.", - "messageId": "unusedVar", - "nodeType": "Identifier", - "ruleId": "@typescript-eslint/no-unused-vars", - "severity": 1, - }, - Object { - "column": 10, - "endColumn": 20, - "endLine": 24, - "line": 24, - "message": "'_toInteger' is defined but never used.", - "messageId": "unusedVar", - "nodeType": "Identifier", - "ruleId": "@typescript-eslint/no-unused-vars", - "severity": 1, - }, - Object { - "column": 45, - "endColumn": 48, - "endLine": 41, - "line": 41, - "message": "Unexpected any. Specify a different type.", - "messageId": "unexpectedAny", - "nodeType": "TSAnyKeyword", - "ruleId": "@typescript-eslint/no-explicit-any", - "severity": 1, - "suggestions": Array [ - Object { - "desc": "Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.", - "fix": Object { - "range": Array [ - 1708, - 1711, - ], - "text": "unknown", - }, - "messageId": "suggestUnknown", - }, - Object { - "desc": "Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", - "fix": Object { - "range": Array [ - 1708, - 1711, - ], - "text": "never", - }, - "messageId": "suggestNever", - }, - ], - }, - Object { - "column": 20, - "endColumn": 23, - "endLine": 43, - "line": 43, - "message": "Unexpected any. Specify a different type.", - "messageId": "unexpectedAny", - "nodeType": "TSAnyKeyword", - "ruleId": "@typescript-eslint/no-explicit-any", - "severity": 1, - "suggestions": Array [ - Object { - "desc": "Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.", - "fix": Object { - "range": Array [ - 1796, - 1799, - ], - "text": "unknown", - }, - "messageId": "suggestUnknown", - }, - Object { - "desc": "Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", - "fix": Object { - "range": Array [ - 1796, - 1799, - ], - "text": "never", - }, - "messageId": "suggestNever", - }, - ], - }, - Object { - "column": 24, - "endColumn": 27, - "endLine": 66, - "line": 66, - "message": "Unexpected any. Specify a different type.", - "messageId": "unexpectedAny", - "nodeType": "TSAnyKeyword", - "ruleId": "@typescript-eslint/no-explicit-any", - "severity": 1, - "suggestions": Array [ - Object { - "desc": "Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.", - "fix": Object { - "range": Array [ - 2511, - 2514, - ], - "text": "unknown", - }, - "messageId": "suggestUnknown", - }, - Object { - "desc": "Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", - "fix": Object { - "range": Array [ - 2511, - 2514, - ], - "text": "never", - }, - "messageId": "suggestNever", - }, - ], - }, - Object { - "column": 30, - "endColumn": 50, - "endLine": 186, - "line": 186, - "message": "'additionalProperties' is assigned a value but never used.", - "messageId": "unusedVar", - "nodeType": "Identifier", - "ruleId": "@typescript-eslint/no-unused-vars", - "severity": 1, - }, - Object { - "column": 28, - "endColumn": 31, - "endLine": 314, - "line": 314, - "message": "Unexpected any. Specify a different type.", - "messageId": "unexpectedAny", - "nodeType": "TSAnyKeyword", - "ruleId": "@typescript-eslint/no-explicit-any", - "severity": 1, - "suggestions": Array [ - Object { - "desc": "Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.", - "fix": Object { - "range": Array [ - 12713, - 12716, - ], - "text": "unknown", - }, - "messageId": "suggestUnknown", - }, - Object { - "desc": "Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.", - "fix": Object { - "range": Array [ - 12713, - 12716, - ], - "text": "never", - }, - "messageId": "suggestNever", - }, - ], - }, - ], - "source": "import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { accessiblePlacesCountByCategory, accessiblePlacesCountByDetailedCategory } = - result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} -", - "suppressedMessages": Array [], - "usedDeprecatedRules": Array [], - "warningCount": 7, - }, -] - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at eslintFix (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:184:14) - at processTicksAndRejections (node:internal/process/task_queues:96:5) -Trace: prettier-eslint [TRACE]: eslint --fix: output === input true - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at eslintFix (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:190:14) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -Trace: prettier-eslint [TRACE]: eslint --fix output: - - import { - featureCollection as turfFeatureCollection, - lineString as turfLineString, - multiLineString as turfMultiLineString, - circle as turfCircle, - area as turfArea, - polygonToLine as turfPolygonToLine - //multiPolygon as turfMultiPolygon -} from '@turf/turf'; -import { Feature, FeatureCollection, Point, MultiPolygon, MultiLineString } from 'geojson'; -import polygonClipping from 'polygon-clipping'; -import _cloneDeep from 'lodash.clonedeep'; -import _sum from 'lodash.sum'; -import _uniq from 'lodash.uniq'; - -import TransitAccessibilityMapRouting from './TransitAccessibilityMapRouting'; -import TrError from 'chaire-lib-common/lib/utils/TrError'; -import { routingServiceManager as trRoutingServiceManager } from 'chaire-lib-common/lib/services/trRouting/TrRoutingServiceManager'; -import { - TrRoutingResultAccessibilityMap, - AccessibilityMapQueryOptions -} from 'chaire-lib-common/lib/services/trRouting/TrRoutingService'; -import { secondsSinceMidnightToTimeStr } from 'chaire-lib-common/lib/utils/DateTimeUtils'; -import { _toInteger, _isBlank } from 'chaire-lib-common/lib/utils/LodashExtensions'; -import serviceLocator from 'chaire-lib-common/lib/utils/ServiceLocator'; -import { - TransitAccessibilityMapResultByNode, - TransitAccessibilityMapWithPolygonResult, - TransitAccessibilityMapResult -} from './TransitAccessibilityMapResult'; - -export interface TransitMapCalculationOptions { - isCancelled?: (() => boolean) | false; - port?: number; - /** - * Additional properties to add to each accessibility polygon calculated - * - * @type {{ [key: string]: any }} - * @memberof TransitMapCalculationOptions - */ - additionalProperties?: { [key: string]: any }; - accessibleNodes?: { ids: string[]; durations: number[] }; - [key: string]: any; -} - -const getDurations = (maxDuration: number, numberOfPolygons: number): number[] => { - const durations = [maxDuration]; - for (let i = numberOfPolygons - 1; i > 0; i--) { - durations.push(Math.ceil((i * maxDuration) / numberOfPolygons)); - } - return durations; -}; - -const getTimes = (time: number, delta?: number, deltaInterval?: number) => { - const deltaNb = delta ? delta : 0; - const deltaIntervalNb = deltaInterval ? (deltaInterval <= 0 ? 60 : deltaInterval) : 60; - const times: number[] = []; - for (let i = time - deltaNb; i <= time + deltaNb; i += deltaIntervalNb) { - if (i >= 0) { - times.push(i); - } - } - return times; -}; - -const isNumber = (val: any): val is number => { - return Number.isFinite(val); -}; - -const getAttributesOrDefault = (routing: TransitAccessibilityMapRouting) => { - const attributes = routing.getAttributes(); - if (!attributes.locationGeojson) { - throw 'There should be a valid location'; - } - return { - departureTimeSecondsSinceMidnight: attributes.departureTimeSecondsSinceMidnight, - departureTime: isNumber(attributes.departureTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.departureTimeSecondsSinceMidnight) - : '', - arrivalTimeSecondsSinceMidnight: attributes.arrivalTimeSecondsSinceMidnight, - arrivalTime: isNumber(attributes.arrivalTimeSecondsSinceMidnight) - ? secondsSinceMidnightToTimeStr(attributes.arrivalTimeSecondsSinceMidnight) - : '', - maxTotalTravelTimeSeconds: attributes.maxTotalTravelTimeSeconds || 900, - numberOfPolygons: attributes.numberOfPolygons || 1, - deltaSeconds: attributes.deltaSeconds || 0, - deltaIntervalSeconds: attributes.deltaIntervalSeconds || 60, - locationGeojson: attributes.locationGeojson, - minWaitingTimeSeconds: attributes.minWaitingTimeSeconds || 180, - maxAccessEgressTravelTimeSeconds: attributes.maxAccessEgressTravelTimeSeconds || 900, - maxTransferTravelTimeSeconds: attributes.maxTransferTravelTimeSeconds || 900, - walkingSpeedMps: attributes.walkingSpeedMps || 5.0 / 3.6, - walkingSpeedFactor: attributes.walkingSpeedFactor, - scenarioId: attributes.scenarioId, - locationColor: attributes.locationColor, - placeName: attributes.placeName - }; -}; - -const getDefaultGeojsonPolygon = (locationColor) => - ({ - type: 'Feature', - properties: { - color: locationColor - }, - geometry: { - type: 'MultiPolygon', - coordinates: [] - } - } as Feature); - -export class TransitAccessibilityMapCalculator { - private static generateQuery( - query: { - minWaitingTime: number; - maxAccessTravelTime: number; - maxEgressTravelTime: number; - maxTransferTravelTime: number; - scenarioId: string; - }, - options: { - timeSecondsSinceMidnight: number; - maxTravelTimeSeconds: number; - timeOfTripType: 'departure' | 'arrival'; - location: Feature; - accessibleNodes?: { ids: string[]; durations: number[] }; - } - ): AccessibilityMapQueryOptions { - const params: AccessibilityMapQueryOptions = { - ...query, - maxTravelTime: options.maxTravelTimeSeconds, - location: options.location, - timeOfTrip: options.timeSecondsSinceMidnight, - timeOfTripType: options.timeOfTripType - }; - if (options.accessibleNodes) { - params.accessibleNodes = options.accessibleNodes; - } - return params; - } - - private static async clipPolygon( - nodeCircles, - isCancelled: (() => boolean) | false = false - ): Promise { - // return f.union(nodeCircles); - // TODO This is a much slower version of the simple above line, dividing the work, but allowing the user to cancel the request... - return new Promise((resolve, reject) => { - const pieces = 20; - const splitSize = Math.ceil(nodeCircles.length / pieces); - let clipped: polygonClipping.MultiPolygon = []; - const clipFunc = (previous, i) => { - const toClip = previous.concat(nodeCircles.slice(i * pieces, (i + 1) * pieces)); - clipped = polygonClipping.union(toClip); - if (isCancelled && isCancelled()) { - reject('Cancelled'); - return; - } - if (i < splitSize - 1) { - setTimeout(() => clipFunc(clipped, i + 1), 0); - } else { - resolve(clipped); - } - }; - clipFunc(clipped, 0); - }); - } - - // FIXME: Type the options - static async calculate( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - if (updatePreferences) { - routing.updateRoutingPrefs(); - } - - const attributes = getAttributesOrDefault(routing); - const durations = getDurations(attributes.maxTotalTravelTimeSeconds, attributes.numberOfPolygons); - const departureTime = attributes.departureTimeSecondsSinceMidnight; - const arrivalTime = attributes.arrivalTimeSecondsSinceMidnight; - const specifiedTime = !_isBlank(departureTime) ? (departureTime as number) : (arrivalTime as number); - const times = getTimes(specifiedTime, attributes.deltaSeconds, attributes.deltaIntervalSeconds); - - const { isCancelled, additionalProperties, accessibleNodes, ...queryOptions } = options; - const promises: Promise[] = []; - let specifiedTimeIndex = 0; - const trRoutingService = trRoutingServiceManager.getService(); - - const baseQuery = { - minWaitingTime: attributes.minWaitingTimeSeconds, - maxAccessTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxEgressTravelTime: attributes.maxAccessEgressTravelTimeSeconds, - maxTransferTravelTime: attributes.maxTransferTravelTimeSeconds, - scenarioId: attributes.scenarioId as string - // TODO needed? - // maxFirstWaitingTime: routing.get('maxFirstWaitingTimeSeconds', undefined) - }; - for (let i = 0, countI = times.length; i < countI; i++) { - const time = times[i]; - if (time === specifiedTime) { - specifiedTimeIndex = i; - } - const query = this.generateQuery(baseQuery, { - location: attributes.locationGeojson, - timeSecondsSinceMidnight: time, - maxTravelTimeSeconds: durations[0], - timeOfTripType: !_isBlank(departureTime) ? 'departure' : 'arrival', - accessibleNodes - }); - - promises.push(trRoutingService.accessibleMap(query, queryOptions)); - } - - try { - const promiseResults = await Promise.allSettled(promises); - let routingResultAtTime: TrRoutingResultAccessibilityMap | undefined = undefined; - const routingResults = promiseResults - .map((promiseResult, index) => { - if (promiseResult.status === 'rejected') { - // TODO Return something for no routing found? - return undefined; - } - const routingResult = promiseResult.value; - if (specifiedTimeIndex === index) { - routingResultAtTime = routingResult; - } - return routingResult; - }) - .filter((result) => result !== undefined) as TrRoutingResultAccessibilityMap[]; - - // Cancel further processing if the request was cancelled - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - const result = new TransitAccessibilityMapResultByNode(routingResults, durations[0]); - - return { - result, - durations, - nbCalculations: times.length, - routingResult: routingResultAtTime - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // FIXME: Type the options - static async calculateWithPolygons( - routing: TransitAccessibilityMapRouting, - updatePreferences = false, - options: TransitMapCalculationOptions = {} - ): Promise { - const { result, durations, nbCalculations, routingResult } = await TransitAccessibilityMapCalculator.calculate( - routing, - updatePreferences, - options - ); - const attributes = getAttributesOrDefault(routing); - const { isCancelled, additionalProperties } = options; - - try { - const polygons = await this.generatePolygons(attributes, result, durations, nbCalculations, { - isCancelled, - additionalProperties - }); - if (isCancelled && isCancelled()) { - throw 'Cancelled'; - } - - return { - polygons: turfFeatureCollection(polygons.polygons), - strokes: turfFeatureCollection(polygons.strokes), - resultByNode: routingResult - }; - } catch (error) { - if (TrError.isTrError(error)) { - throw error; - } - const trError = new TrError( - `cannot calculate transit accessibility map with trRouting: ${error}`, - 'TRRAM0001', - 'TransitAccessibilityMapCannotBeCalculatedBecauseError' - ); - // TODO extract cancelled to constant - if (error !== 'Cancelled') { - console.error(error); - } - throw trError; - } - } - - // TODO: Move to result class? - private static async generatePolygons( - attributes: { - walkingSpeedMps: number; - maxAccessEgressTravelTimeSeconds: number; - locationGeojson: Feature; - locationColor?: string; - [key: string]: any; - }, - result: TransitAccessibilityMapResultByNode, - durations: number[], - deltaCount = 1, - options: TransitMapCalculationOptions = {} - ) { - const isCancelled = options.isCancelled || (() => false); - - durations.sort((a, b) => b - a); // durations must be in descending order so it appears correctly in qgis - const polygons: Feature[] = []; - const polygonStrokes: Feature[] = []; - - const walkingSpeedMps = attributes.walkingSpeedMps; - const maxDistanceMeters = Math.floor(attributes.maxAccessEgressTravelTimeSeconds * walkingSpeedMps); - - // when a node is fully accessible in the previous duration (maxDistanceMeters === nodeRemainingDistanceMeters), - // we don't need to calculate remaining distance for the next duration, - // and the previous polygon can be used for the next duration because it is 100% contained - // TODO: implement this optimization also in updateNodesTravelTimes - let stepI = 1; - const stepsCount = durations.length * 2; - let nodeCircles = [ - turfCircle(attributes.locationGeojson, maxDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ]; - const defaultGeojsonPolygon = getDefaultGeojsonPolygon(attributes.locationColor); - const nodeCollection = serviceLocator.collectionManager.get('nodes'); - - for (let d = 0, size = durations.length; d < size; d++) { - const duration = durations[d]; - if (isCancelled()) { - throw 'Cancelled'; - } - const durationMaxDistanceMeters = Math.min(maxDistanceMeters, Math.floor(duration * walkingSpeedMps)); - nodeCircles = [ - turfCircle(attributes.locationGeojson, durationMaxDistanceMeters / 1000, { - units: 'kilometers', - steps: 64 - }).geometry.coordinates - ]; - - const { accessiblePlacesCountByCategory, accessiblePlacesCountByDetailedCategory } = - result.getAccessibilityStatsForDuration(duration, nodeCollection); - - // include starting/ending location circle: - const travelTimesByNodeId = result.getTraveTimesByNodeId(); - - for (const nodeId in travelTimesByNodeId) { - const node = nodeCollection.getById(nodeId); - // TODO node collection manager is in legacy code and is a geojson attribute, but unit test use Node objects, which need to be converted to geojson - const nodeGeometry = node.geometry ? node : node.toGeojson(); - const remainingTimesSeconds = travelTimesByNodeId[nodeId].map((travelTimeSeconds) => { - return travelTimeSeconds < duration ? duration - travelTimeSeconds : 0; - }); - - // we need to average over the delta count, since empty result - // for a duration must count as 0, not null. The accessibility - // map is more a heatmap of accessible places, so a location - // accessible only in one delta should not be shown with the - // same weight as the one accessible for each delta. Downside is - // that a location on the border of the accessible area in one - // of the delta query will thus not be part of the accessibility - // map at all. - // - // TODO Show the complete accessibility map for the deltas, but - // with heatmaps showing more accessible locations - const avgRemainingTimeSeconds = _sum(remainingTimesSeconds) / deltaCount; - let nodeRemainingDistanceMeters = Math.floor(avgRemainingTimeSeconds * walkingSpeedMps); - nodeRemainingDistanceMeters = Math.min(maxDistanceMeters, nodeRemainingDistanceMeters); - nodeCircles.push( - turfCircle(nodeGeometry, nodeRemainingDistanceMeters / 1000, { units: 'kilometers', steps: 64 }) - .geometry.coordinates - ); - } - - serviceLocator.eventManager.emit('progress', { - name: 'AccessibilityMapPolygonGeneration', - progress: stepI++ / stepsCount - }); - - // TODO This is the veryyy sloooooow operation. - console.time('polygonClipping'); - const polygonCoordinates = await this.clipPolygon(nodeCircles, isCancelled); - console.timeEnd('polygonClipping'); - const polygon = _cloneDeep(defaultGeojsonPolygon); - polygon.geometry.coordinates = polygonCoordinates; - - const area = turfArea(polygon); - polygon.properties = { - durationSeconds: Math.round(duration), - durationMinutes: Math.round(duration / 60), - areaSqM: area, - areaSqKm: area / 1000000, - areaSqMiles: area / 1000000 / 2.58999, - color: attributes.locationColor, - accessiblePlacesCountByCategory, - accessiblePlacesCountByDetailedCategory, - ...attributes, - ...(options.additionalProperties || {}) - }; - - for (const category in accessiblePlacesCountByCategory) { - polygon.properties[`cat_${category}`] = accessiblePlacesCountByCategory[category]; - } - for (const detailedCategory in accessiblePlacesCountByDetailedCategory) { - polygon.properties[`catDet_${detailedCategory}`] = - accessiblePlacesCountByDetailedCategory[detailedCategory]; - } - - polygons.push(polygon); - // TODO Can this be other than a feature collection? If so, we need to handle the various cases - const polygonStroke = turfPolygonToLine(polygon) as FeatureCollection; - const polygonStroke2 = turfFeatureCollection([]) as FeatureCollection; - for (let i = 0, countI = polygonStroke.features.length; i < countI; i++) { - const feature = polygonStroke.features[i]; - if (feature.geometry.type === 'MultiLineString') { - // this is a polygon with hole, we need to separate into two LineStrings. - for (let j = 1, countJ = feature.geometry.coordinates.length; j < countJ; j++) { - polygonStroke2.features.push(turfLineString(feature.geometry.coordinates[j])); - } - // TODO Copied from original code, but should it be .push instead of features[i] ? - polygonStroke2.features[i] = turfLineString(feature.geometry.coordinates[0]); // keep the first one as is, but convert to LineString - } else { - polygonStroke2.features.push(feature as Feature); - } - } - - polygonStrokes.push( - turfMultiLineString( - polygonStroke2.features.map((lineString) => { - return lineString.geometry.coordinates; - }) - ) - ); - - serviceLocator.eventManager.emitProgress('AccessibilityMapPolygonGeneration', stepI++ / stepsCount); - } - - if (isCancelled()) { - throw 'Cancelled'; - } - - return { polygons: polygons, strokes: polygonStrokes }; - } -} - at Logger.trace (/home/gbastien/Mobilité/sources/transition/node_modules/loglevel-colored-level-prefix/dist/index.js:54:24) - at eslintFix (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint/dist/index.js:195:14) - at processTicksAndRejections (node:internal/process/task_queues:96:5) - at async MergeMapSubscriber.project (/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/node_modules/prettier-eslint-cli/dist/format-files.js:250:26) -success formatting 1 file with prettier-eslint - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/jest.config.js - 2:20 warning Require statement not part of import statement @typescript-eslint/no-var-requires - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapCalculator.ts - 14:8 warning '_uniq' is defined but never used @typescript-eslint/no-unused-vars - 24:10 warning '_toInteger' is defined but never used @typescript-eslint/no-unused-vars - 41:45 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 43:20 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 66:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 186:30 warning 'additionalProperties' is assigned a value but never used @typescript-eslint/no-unused-vars - 314:28 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapResult.ts - 12:10 warning 'placesInWalkingTravelTimeRadiusSeconds' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/accessibilityMap/TransitAccessibilityMapRouting.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 2:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - 11:10 warning '_toInteger' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/agency/Agency.ts - 1:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 49:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 51:20 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 52:22 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 82:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 185:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 193:19 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 228:21 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 298:42 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/agency/AgencyCollection.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/agency/AgencyDuplicator.ts - 1:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 2:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - 11:13 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 55:23 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 81:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 81:74 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/agency/AgencyUtils.ts - 11:86 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/dataSource/DataSource.ts - 4:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - 31:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 43:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/gtfs/GtfsExporter.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 2:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - 3:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/gtfs/GtfsImportTypes.ts - 93:20 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/importers/GtfsValidator.ts - 11:15 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/line/Line.ts - 4:8 warning '_merge' is defined but never used @typescript-eslint/no-unused-vars - 46:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 60:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 104:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 111:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 163:52 warning 'socket' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/line/LineDuplicator.ts - 1:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - 9:13 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/nodes/Node.ts - 1:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 60:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 81:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 133:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 215:28 warning 'dataSourceId' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 219:68 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 272:9 warning 'mode' is assigned a value but never used @typescript-eslint/no-unused-vars - 273:9 warning 'durationsMinutes' is assigned a value but never used @typescript-eslint/no-unused-vars - 274:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 459:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 461:28 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/nodes/NodeCollection.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 64:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 72:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 85:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/nodes/NodeGeographyUtils.ts - 2:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 12:5 warning 'categories' is defined but never used @typescript-eslint/no-unused-vars - 13:5 warning 'detailedCategories' is defined but never used @typescript-eslint/no-unused-vars - 54:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 148:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/odTrip/BaseOdTrip.ts - 2:8 warning '_isEqual' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/odTrip/BaseOdTripCollection.ts - 54:67 warning 'collectionManager' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/path/Path.ts - 3:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - 5:8 warning '_isEqual' is defined but never used @typescript-eslint/no-unused-vars - 14:10 warning 'Feature' is defined but never used @typescript-eslint/no-unused-vars - 14:19 warning 'FeatureCollection' is defined but never used @typescript-eslint/no-unused-vars - 14:38 warning 'Point' is defined but never used @typescript-eslint/no-unused-vars - 28:8 warning 'isNumber' is defined but never used @typescript-eslint/no-unused-vars - 169:21 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 215:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 374:9 warning Closing curly brace does not appear on the same line as the subsequent block brace-style - 734:62 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 746:9 warning Closing curly brace does not appear on the same line as the subsequent block brace-style - 1071:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 1218:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 1219:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 1221:28 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 1229:53 warning 'lineSaveResponse' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 1246:42 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 1247:29 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 1250:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 1263:57 warning 'lineSaveResponse' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/path/PathCollection.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 11:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - 28:38 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 48:42 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/path/PathGeographyGenerator.ts - 30:27 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 216:11 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/path/PathGeographyUtils.ts - 44:15 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 103:44 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 121:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 157:62 warning 'geojsonIndex' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 218:105 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 250:83 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 254:44 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 283:27 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 294:38 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 294:60 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/places/Place.ts - 14:28 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 51:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 52:109 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/scenario/Scenario.ts - 35:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 52:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/schedules/Schedule.ts - 2:8 warning '_uniq' is defined but never used @typescript-eslint/no-unused-vars - 57:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 133:19 warning 'minInterval' is assigned a value but never used @typescript-eslint/no-unused-vars - 176:61 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 186:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 186:51 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 204:36 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 218:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 236:16 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 248:22 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 463:22 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/schedules/ScheduleDataValidator.ts - 13:52 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 13:72 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/schedules/ScheduleDuplicator.ts - 1:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 3:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/service/Service.ts - 33:24 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 40:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 61:30 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/service/ServiceCollection.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/service/ServiceDuplicator.ts - 1:8 warning '_cloneDeep' is defined but never used @typescript-eslint/no-unused-vars - 8:13 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 31:81 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/simulation/Simulation.ts - 7:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - 45:79 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 49:95 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 53:76 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 132:45 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 133:46 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 169:38 warning Unnecessary escape character: \| no-useless-escape - 169:40 warning Unnecessary escape character: \[ no-useless-escape - 169:46 warning Unnecessary escape character: \+ no-useless-escape - 169:50 warning Unnecessary escape character: \( no-useless-escape - 169:52 warning Unnecessary escape character: \) no-useless-escape - 173:73 warning Unnecessary escape character: \| no-useless-escape - 173:75 warning Unnecessary escape character: \[ no-useless-escape - 173:81 warning Unnecessary escape character: \+ no-useless-escape - 173:85 warning Unnecessary escape character: \( no-useless-escape - 173:87 warning Unnecessary escape character: \) no-useless-escape - 177:61 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/simulation/SimulationAlgorithm.ts - 13:38 warning 'T' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/simulation/SimulationRun.ts - 7:10 warning '_isBlank' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/transitRouting/RouteCalculatorResult.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 14:63 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 71:68 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/transitRouting/TransitBatchRouting.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 2:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - 22:15 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 158:26 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 159:38 warning 'reject' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - 166:82 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 183:49 warning 'options' is assigned a value but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/transitRouting/TransitRouting.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 2:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/transitRouting/TransitRoutingCalculator.ts - 1:8 warning '_get' is defined but never used @typescript-eslint/no-unused-vars - 2:8 warning '_set' is defined but never used @typescript-eslint/no-unused-vars - 11:10 warning 'RoutingOrTransitMode' is defined but never used @typescript-eslint/no-unused-vars - 28:66 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 34:66 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 93:23 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 138:61 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/services/transitRouting/TransitRoutingResult.ts - 317:55 warning 'routingIndex' is defined but never used. Allowed unused args must match /^_/u @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/tasks/populationSynthesis/dataImport/importPlacesAndResidences.task.ts - 2:22 warning 'uuidValidate' is defined but never used @typescript-eslint/no-unused-vars - 2:42 warning 'uuidV4' is defined but never used @typescript-eslint/no-unused-vars - 48:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 49:11 warning 'dataSources' is assigned a value but never used @typescript-eslint/no-unused-vars - -/home/gbastien/Mobilité/sources/transition/transition-app/transition/common/src/tasks/populationSynthesis/dataImport/importResidentialData.ts - 34:53 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 113:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 200:42 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 204:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 293:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any - 326:52 warning 'mismatchCount' is assigned a value but never used @typescript-eslint/no-unused-vars - -✖ 179 problems (0 errors, 179 warnings) - -Done in 6.31s.