// Copyright 2018-2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { readJsonSync, writeJsonSync } from 'fs-extra'; import { orderBy } from 'lodash'; import type { ExceptionType } from './types'; export const ENCODING = 'utf8'; export const loadJSON = (path: string): T => readJsonSync(path); export const writeExceptions = ( path: string, exceptions: ReadonlyArray ): void => writeJsonSync(path, sortExceptions(exceptions), { spaces: 2 }); export const sortExceptions = ( exceptions: ReadonlyArray ): Array => orderBy(exceptions, [ 'path', 'rule', 'reasonCategory', 'updated', 'reasonDetail', ]);