mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-03-29 17:08:21 +08:00
Add type definitions for node-dir.
This commit is contained in:
90
node-dir/node-dir-tests.ts
Normal file
90
node-dir/node-dir-tests.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
/// <reference path="node-dir.d.ts" />
|
||||
|
||||
import * as dir from "node-dir";
|
||||
|
||||
// display contents of files in this script's directory
|
||||
dir.readFiles("./",
|
||||
function(err, content, next) {
|
||||
console.log('content:', content);
|
||||
next();
|
||||
},
|
||||
function(err, files) {
|
||||
console.log('finished reading files:', files);
|
||||
});
|
||||
|
||||
// display contents of huge files in this script's directory
|
||||
dir.readFilesStream("./",
|
||||
function(err: any, stream: any, next: any) {
|
||||
var content = '';
|
||||
stream.on('data', function(buffer: any) {
|
||||
content += buffer.toString();
|
||||
});
|
||||
stream.on('end',function() {
|
||||
console.log('content:', content);
|
||||
next();
|
||||
});
|
||||
},
|
||||
function(err, files) {
|
||||
console.log('finished reading files:', files);
|
||||
});
|
||||
|
||||
// match only filenames with a .txt extension and that don't start with a `.´
|
||||
dir.readFiles("./", {
|
||||
match: /.txt$/,
|
||||
exclude: /^\./
|
||||
}, function(err, content, next) {
|
||||
console.log('content:', content);
|
||||
next();
|
||||
},
|
||||
function(err, files){
|
||||
console.log('finished reading files:',files);
|
||||
});
|
||||
|
||||
// exclude an array of subdirectory names
|
||||
dir.readFiles("./", {
|
||||
exclude: ['node_modules', 'test']
|
||||
}, function(err, content, next) {
|
||||
console.log('content:', content);
|
||||
next();
|
||||
},
|
||||
function(err, files){
|
||||
console.log('finished reading files:',files);
|
||||
});
|
||||
|
||||
|
||||
// the callback for each file can optionally have a filename argument as its 3rd parameter
|
||||
// and the finishedCallback argument is optional, e.g.
|
||||
dir.readFiles("./", function(err: any, content: any, filename: string, next: any) {
|
||||
console.log('processing content of file', filename);
|
||||
next();
|
||||
});
|
||||
|
||||
dir.files("./", function(err, files) {
|
||||
console.log(files);
|
||||
});
|
||||
|
||||
dir.files("./", function(err, files) {
|
||||
// sort descending
|
||||
files.reverse();
|
||||
// include only certain filenames
|
||||
files = files.filter(function(file: any) {
|
||||
return ['allowed', 'file', 'names'].indexOf(file) > -1;
|
||||
});
|
||||
// exclude some filenames
|
||||
files = files.filter(function(file: any) {
|
||||
return ['exclude', 'these', 'files'].indexOf(file) === -1;
|
||||
});
|
||||
});
|
||||
|
||||
dir.subdirs("./", function(err, subdirs) {
|
||||
console.log(subdirs);
|
||||
});
|
||||
|
||||
dir.paths("./", function(err, paths) {
|
||||
console.log('files:\n', paths.files);
|
||||
console.log('subdirs:\n', paths.dirs);
|
||||
});
|
||||
|
||||
dir.paths("./", true, function(err, paths) {
|
||||
console.log('paths:\n', paths);
|
||||
});
|
||||
65
node-dir/node-dir.d.ts
vendored
Normal file
65
node-dir/node-dir.d.ts
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
// Type definitions for node-dir
|
||||
// Project: https://github.com/fshost/node-dir
|
||||
// Definitions by: Panu Horsmalahti <https://github.com/panuhorsmalahti/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare module "node-dir" {
|
||||
export interface Options {
|
||||
// file encoding (defaults to 'utf8')
|
||||
encoding?: string;
|
||||
|
||||
// a regex pattern or array to specify filenames to ignore
|
||||
exclude?: RegExp | string[];
|
||||
|
||||
// a regex pattern or array to specify directories to ignore
|
||||
excludeDir?: RegExp | string[];
|
||||
|
||||
// a regex pattern or array to specify filenames to operate on
|
||||
match?: RegExp | string[];
|
||||
|
||||
// a regex pattern or array to specify directories to recurse
|
||||
matchDir?: RegExp | string[];
|
||||
|
||||
// whether to recurse subdirectories when reading files (defaults to true)
|
||||
recursive?: boolean;
|
||||
|
||||
// sort files in each directory in descending order
|
||||
reverse?: boolean;
|
||||
|
||||
// whether to aggregate only the base filename rather than the full filepath
|
||||
shortName?: boolean;
|
||||
|
||||
// sort files in each directory in ascending order (defaults to true)
|
||||
sort?: boolean;
|
||||
|
||||
// control if done function called on error (defaults to true)
|
||||
doneOnErr?: boolean;
|
||||
}
|
||||
|
||||
export interface FileCallback {
|
||||
(error: any, content: any, next: () => void): void;
|
||||
}
|
||||
|
||||
export interface FileNamedCallback {
|
||||
(error: any, content: any, filename: string, next: () => void): void;
|
||||
}
|
||||
|
||||
export interface StreamCallback {
|
||||
(error: any, stream: any, next: () => void): void;
|
||||
}
|
||||
|
||||
export interface FinishedCallback {
|
||||
(error: any, files: any): void;
|
||||
}
|
||||
|
||||
export function readFiles(dir: string, fileCallback: FileCallback, finishedCallback?: FinishedCallback): void;
|
||||
export function readFiles(dir: string, fileCallback: FileNamedCallback, finishedCallback?: FinishedCallback): void;
|
||||
export function readFiles(dir: string, options: Options, fileCallback: FileCallback, finishedCallback?: FinishedCallback): void;
|
||||
export function readFiles(dir: string, options: Options, fileCallback: FileNamedCallback, finishedCallback?: FinishedCallback): void;
|
||||
export function readFilesStream(dir: string, options: Options, streamCallback: StreamCallback,
|
||||
finishedCallback?: FinishedCallback): void;
|
||||
export function files(dir: string, callback: (error: any, files: any) => void): void;
|
||||
export function subdirs(dir: string, callback: (error: any, subdirs: any) => void): void;
|
||||
export function paths(dir: string, callback: (error: any, paths: any) => void): void;
|
||||
export function paths(dir: string, combine: boolean, callback: (error: any, paths: any) => void): void;
|
||||
}
|
||||
Reference in New Issue
Block a user