[fsevents] add typings (#18916)

This commit is contained in:
Dimitri Benin
2017-08-14 19:08:03 +02:00
committed by Mohamed Hegazy
parent 2b91b27c3f
commit 60f9b065ca
4 changed files with 130 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
import fsevents = require('fsevents');
const watcher = fsevents(__dirname);
watcher.on('fsevent', (path, flags, id) => {});
watcher.on('change', (path, info) => {});
// $ExpectType Watcher
watcher.start();
// $ExpectType Watcher
watcher.stop();
const nativeWatcher = new fsevents.FSEvents('', (path, flags, id) => {});
// $ExpectType FSEvents
nativeWatcher.start();
// $ExpectType FSEvents
nativeWatcher.stop();
const num: number = fsevents.Constants.kFSEventStreamEventFlagEventIdsWrapped;

90
types/fsevents/index.d.ts vendored Normal file
View File

@@ -0,0 +1,90 @@
// Type definitions for fsevents 1.1
// Project: https://github.com/strongloop/fsevents
// Definitions by: BendingBender <https://github.com/BendingBender>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { EventEmitter } from 'events';
export = fsevents;
declare function fsevents(path: string): fsevents.Watcher;
declare namespace fsevents {
function getInfo(path: string, flags: number): BaseEventInfo<BaseEventType | 'moved'>;
class FSEvents {
constructor(path: string, handler: (path: string, flags: number, id: number) => void);
start(): this;
stop(): this;
}
const Constants: {
kFSEventStreamEventFlagNone: 0x0;
kFSEventStreamEventFlagMustScanSubDirs: 0x1;
kFSEventStreamEventFlagUserDropped: 0x2;
kFSEventStreamEventFlagKernelDropped: 0x4;
kFSEventStreamEventFlagEventIdsWrapped: 0x8;
kFSEventStreamEventFlagHistoryDone: 0x10;
kFSEventStreamEventFlagRootChanged: 0x20;
kFSEventStreamEventFlagMount: 0x40;
kFSEventStreamEventFlagUnmount: 0x80;
kFSEventStreamEventFlagItemCreated: 0x100;
kFSEventStreamEventFlagItemRemoved: 0x200;
kFSEventStreamEventFlagItemInodeMetaMod: 0x400;
kFSEventStreamEventFlagItemRenamed: 0x800;
kFSEventStreamEventFlagItemModified: 0x1000;
kFSEventStreamEventFlagItemFinderInfoMod: 0x2000;
kFSEventStreamEventFlagItemChangeOwner: 0x4000;
kFSEventStreamEventFlagItemXattrMod: 0x8000;
kFSEventStreamEventFlagItemIsFile: 0x10000;
kFSEventStreamEventFlagItemIsDir: 0x20000;
kFSEventStreamEventFlagItemIsSymlink: 0x40000;
};
interface Watcher extends EventEmitter {
start(): this;
stop(): this;
addListener(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
addListener(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
on(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
on(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
once(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
once(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
prependListener(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
prependListener(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
prependOnceListener(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
prependOnceListener(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
removeListener(event: 'fsevent', listener: (path: string, flags: number, id: number) => void): this;
removeListener(event: EventType | 'change', listener: (path: string, info: EventInfo) => void): this;
removeAllListeners(event?: EventType | 'change' | 'fsevent'): this;
// tslint:disable-next-line ban-types
listeners(event: EventType | 'change' | 'fsevent'): Function[];
emit(event: 'fsevent', path: string, flags: number, id: number): boolean;
emit(event: EventType | 'change', path: string, info: EventInfo): boolean;
eventNames(): Array<EventType | 'change' | 'fsevent'>;
listenerCount(type: EventType | 'change' | 'fsevent'): number;
}
type EventType = 'moved-out' | 'moved-in' | BaseEventType;
interface EventInfo extends BaseEventInfo<EventType> {
id: number;
}
type BaseEventType = 'created' | 'deleted' | 'modified' | 'root-changed' | 'unknown';
interface BaseEventInfo<E extends string> {
event: E;
path: string;
type: 'file' | 'directory' | 'symlink';
changes: {
inode: boolean;
finder: boolean;
access: boolean;
xattrs: boolean;
};
flags: number;
}
}

View File

@@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"fsevents-tests.ts"
]
}

View File

@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }