diff options
author | LinuxWizard42 <computerwizard@linuxmail.org> | 2022-10-12 22:54:37 +0300 |
---|---|---|
committer | LinuxWizard42 <computerwizard@linuxmail.org> | 2022-10-12 22:54:37 +0300 |
commit | 703e03aba33f234712206769f57717ba7d92d23d (patch) | |
tree | 0041f04ccb75bd5379c764e9fe42249fffe75fc3 /node_modules/dir-compare/src/index.d.ts | |
parent | ab6e257e6e9d9a483d7e86f220d8b209a2cd7753 (diff) | |
download | FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.gz FlashRunner-703e03aba33f234712206769f57717ba7d92d23d.tar.zst |
Added export_allowed file to make repository visible in cgit
Diffstat (limited to 'node_modules/dir-compare/src/index.d.ts')
-rw-r--r-- | node_modules/dir-compare/src/index.d.ts | 476 |
1 files changed, 476 insertions, 0 deletions
diff --git a/node_modules/dir-compare/src/index.d.ts b/node_modules/dir-compare/src/index.d.ts new file mode 100644 index 0000000..fc84980 --- /dev/null +++ b/node_modules/dir-compare/src/index.d.ts @@ -0,0 +1,476 @@ +/// <reference types="node" /> + +import * as fs from "fs" + +/** + * Synchronously compares given paths. + * @param path1 Left file or directory to be compared. + * @param path2 Right file or directory to be compared. + * @param options Comparison options. + */ +export function compareSync(path1: string, path2: string, options?: Options): Result + +/** + * Asynchronously compares given paths. + * @param path1 Left file or directory to be compared. + * @param path2 Right file or directory to be compared. + * @param options Comparison options. + */ +export function compare(path1: string, path2: string, options?: Options): Promise<Result> + +/** + * Comparison options. + */ +export interface Options { + /** + * Properties to be used in various extension points ie. result builder. + */ + [key: string]: any + + /** + * Compares files by size. Defaults to 'false'. + */ + compareSize?: boolean + + /** + * Compares files by date of modification (stat.mtime). Defaults to 'false'. + */ + compareDate?: boolean + + /** + * Two files are considered to have the same date if the difference between their modification dates fits within date tolerance. Defaults to 1000 ms. + */ + dateTolerance?: number + + /** + * Compares files by content. Defaults to 'false'. + */ + compareContent?: boolean + + /** + * Compares entries by symlink. Defaults to 'false'. + */ + compareSymlink?: boolean + + /** + * Skips sub directories. Defaults to 'false'. + */ + skipSubdirs?: boolean + + /** + * Ignore symbolic links. Defaults to 'false'. + */ + skipSymlinks?: boolean + + /** + * Ignores case when comparing names. Defaults to 'false'. + */ + ignoreCase?: boolean + + /** + * Toggles presence of diffSet in output. If true, only statistics are provided. Use this when comparing large number of files to avoid out of memory situations. Defaults to 'false'. + */ + noDiffSet?: boolean + + /** + * File name filter. Comma separated minimatch patterns. See [Glob patterns](https://github.com/gliviu/dir-compare#glob-patterns). + */ + includeFilter?: string + + /** + * File/directory name exclude filter. Comma separated minimatch patterns. See [Glob patterns](https://github.com/gliviu/dir-compare#glob-patterns) + */ + excludeFilter?: string + + /** + * Callback for constructing result. Called for each compared entry pair. + * + * Updates 'statistics' and 'diffSet'. + * + * See [Custom result builder](https://github.com/gliviu/dir-compare#custom-result-builder). + */ + resultBuilder?: ResultBuilder + + /** + * File comparison handler. See [Custom file comparators](https://github.com/gliviu/dir-compare#custom-file-content-comparators). + */ + compareFileSync?: CompareFileSync + + /** + * File comparison handler. See [Custom file comparators](https://github.com/gliviu/dir-compare#custom-file-content-comparators). + */ + compareFileAsync?: CompareFileAsync + + /** + * Entry name comparison handler. See [Custom name comparators](https://github.com/gliviu/dir-compare#custom-name-comparators). + */ + compareNameHandler?: CompareNameHandler +} + +/** + * Callback for constructing result. Called for each compared entry pair. + * + * Updates 'statistics' and 'diffSet'. + */ +export type ResultBuilder = + /** + * @param entry1 Left entry. + * @param entry2 Right entry. + * @param state See [[DifferenceState]]. + * @param level Depth level relative to root dir. + * @param relativePath Path relative to root dir. + * @param statistics Statistics to be updated. + * @param diffSet Status per each entry to be appended. + * Do not append if [[Options.noDiffSet]] is false. + * @param reason See [[Reason]]. Not available if entries are equal. + */ + ( + entry1: Entry | undefined, + entry2: Entry | undefined, + state: DifferenceState, + level: number, + relativePath: string, + options: Options, + statistics: Statistics, + diffSet: Array<Difference> | undefined, + reason: Reason | undefined + ) => void + +export interface Entry { + name: string + absolutePath: string + path: string + stat: fs.Stats + lstat: fs.Stats + symlink: boolean +} + +/** + * Comparison result. + */ +export interface Result extends Statistics { + /** + * List of changes (present if [[Options.noDiffSet]] is false). + */ + diffSet?: Array<Difference> +} + +export interface Statistics { + /** + * Any property is allowed if default result builder is not used. + */ + [key: string]: any + + /** + * True if directories are identical. + */ + same: boolean + + /** + * Number of distinct entries. + */ + distinct: number + + /** + * Number of equal entries. + */ + equal: number + + /** + * Number of entries only in path1. + */ + left: number + + /** + * Number of entries only in path2. + */ + right: number + + /** + * Total number of differences (distinct+left+right). + */ + differences: number + + /** + * Total number of entries (differences+equal). + */ + total: number + + /** + * Number of distinct files. + */ + distinctFiles: number + + /** + * Number of equal files. + */ + equalFiles: number + + /** + * Number of files only in path1. + */ + leftFiles: number + + /** + * Number of files only in path2 + */ + rightFiles: number + + /** + * Total number of different files (distinctFiles+leftFiles+rightFiles). + */ + differencesFiles: number + + /** + * Total number of files (differencesFiles+equalFiles). + */ + totalFiles: number + + /** + * Number of distinct directories. + */ + distinctDirs: number + + /** + * Number of equal directories. + */ + equalDirs: number + + /** + * Number of directories only in path1. + */ + leftDirs: number + + /** + * Number of directories only in path2. + */ + rightDirs: number + + /** + * Total number of different directories (distinctDirs+leftDirs+rightDirs). + */ + differencesDirs: number + + /** + * Total number of directories (differencesDirs+equalDirs). + */ + totalDirs: number + + /** + * Stats about broken links. + */ + brokenLinks: BrokenLinksStatistics + + /** + * Statistics available if 'compareSymlink' options is used. + */ + symlinks?: SymlinkStatistics +} + +export interface BrokenLinksStatistics { + /** + * Number of broken links only in path1 + */ + leftBrokenLinks: number + + /** + * Number of broken links only in path2 + */ + rightBrokenLinks: number + + /** + * Number of broken links with same name appearing in both path1 and path2 (leftBrokenLinks+rightBrokenLinks+distinctBrokenLinks) + */ + distinctBrokenLinks: number + + /** + * Total number of broken links + */ + totalBrokenLinks: number + +} + +export interface SymlinkStatistics { + /** + * Number of distinct links. + */ + distinctSymlinks: number + + /** + * Number of equal links. + */ + equalSymlinks: number + + /** + * Number of links only in path1. + */ + leftSymlinks: number + + /** + * Number of links only in path2 + */ + rightSymlinks: number + + /** + * Total number of different links (distinctSymlinks+leftSymlinks+rightSymlinks). + */ + differencesSymlinks: number + + /** + * Total number of links (differencesSymlinks+equalSymlinks). + */ + totalSymlinks: number + +} + +/** + * State of left/right entries relative to each other. + */ +export type DifferenceState = "equal" | "left" | "right" | "distinct" + +/** + * Type of entry. + */ +export type DifferenceType = "missing" | "file" | "directory" | "broken-link" + +/** + * Provides reason when two identically named entries are distinct. + */ +export type Reason = "different-size" | "different-date" | "different-content" | "broken-link" | 'different-symlink' + +export interface Difference { + /** + * Any property is allowed if default result builder is not used. + */ + [key: string]: any + + /** + * Path not including file/directory name; can be relative or absolute depending on call to compare(). + */ + path1?: string + + /** + * Path not including file/directory name; can be relative or absolute depending on call to compare(). + */ + path2?: string + + /** + * Path relative to root dir. + */ + relativePath: string + + /** + * Left file/directory name. + */ + name1?: string + + /** + * Right file/directory name. + */ + name2?: string + + /** + * See [[DifferenceState]] + */ + state: DifferenceState + + /** + * Type of left entry. + */ + type1: DifferenceType + + /** + * Type of right entry. + */ + type2: DifferenceType + + /** + * Left file size. + */ + size1?: number + + /** + * Right file size. + */ + size2?: number + + /** + * Left entry modification date (stat.mtime). + */ + date1?: number + + /** + * Right entry modification date (stat.mtime). + */ + date2?: number + + /** + * Depth level relative to root dir. + */ + level: number + + /** + * See [[Reason]]. + * Not available if entries are equal. + */ + reason?: Reason +} + +/** + * Synchronous file content comparison handler. + */ +export type CompareFileSync = ( + path1: string, + stat1: fs.Stats, + path2: string, + stat2: fs.Stats, + options: Options +) => boolean + +/** + * Asynchronous file content comparison handler. + */ +export type CompareFileAsync = ( + path1: string, + stat1: fs.Stats, + path2: string, + stat2: fs.Stats, + options: Options +) => Promise<boolean> + +export interface CompareFileHandler { + compareSync: CompareFileSync, + compareAsync: CompareFileAsync +} + +/** + * Available file content comparison handlers. + * These handlers are used when [[Options.compareContent]] is set. + */ +export const fileCompareHandlers: { + /** + * Default file content comparison handlers, used if [[Options.compareFileAsync]] or [[Options.compareFileSync]] are not specified. + * + * Performs binary comparison. + */ + defaultFileCompare: CompareFileHandler, + /** + * Compares files line by line. + * + * Options: + * * ignoreLineEnding - tru/false (default: false) + * * ignoreWhiteSpaces - tru/false (default: false) + */ + lineBasedFileCompare: CompareFileHandler +} + +/** + * Compares the names of two entries. + * The comparison should be dependent on received options (ie. case sensitive, ...). + * Returns 0 if names are identical, -1 if name1<name2, 1 if name1>name2. + */ +export type CompareNameHandler = ( + name1: string, + name2: string, + options: Options +) => 0 | 1 | -1 |