From 6bfa5328c8541f5b71f17bc143b3cee2dbb12a1c Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Mon, 14 Aug 2017 19:10:18 +0200 Subject: [PATCH] [stat-mode] add typings (#18907) --- types/stat-mode/index.d.ts | 33 ++++++++++++ types/stat-mode/stat-mode-tests.ts | 80 ++++++++++++++++++++++++++++++ types/stat-mode/tsconfig.json | 22 ++++++++ types/stat-mode/tslint.json | 1 + 4 files changed, 136 insertions(+) create mode 100644 types/stat-mode/index.d.ts create mode 100644 types/stat-mode/stat-mode-tests.ts create mode 100644 types/stat-mode/tsconfig.json create mode 100644 types/stat-mode/tslint.json diff --git a/types/stat-mode/index.d.ts b/types/stat-mode/index.d.ts new file mode 100644 index 0000000000..2f6be96774 --- /dev/null +++ b/types/stat-mode/index.d.ts @@ -0,0 +1,33 @@ +// Type definitions for stat-mode 0.2 +// Project: https://github.com/TooTallNate/stat-mode +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export = Mode; + +declare class Mode { + owner: Mode.Permissions; + group: Mode.Permissions; + others: Mode.Permissions; + setuid: boolean; + setgid: boolean; + sticky: boolean; + constructor(stat: {mode: number}); + isBlockDevice(isBlockDevice?: boolean): boolean; + isCharacterDevice(isCharacterDevice?: boolean): boolean; + isDirectory(isDirectory?: boolean): boolean; + isFIFO(isFIFO?: boolean): boolean; + isFile(isFile?: boolean): boolean; + isSocket(isSocket?: boolean): boolean; + isSymbolicLink(isSymbolicLink?: boolean): boolean; + valueOf(): number; + toOctal(): string; +} + +declare namespace Mode { + interface Permissions { + read: boolean; + write: boolean; + execute: boolean; + } +} diff --git a/types/stat-mode/stat-mode-tests.ts b/types/stat-mode/stat-mode-tests.ts new file mode 100644 index 0000000000..39daaca9be --- /dev/null +++ b/types/stat-mode/stat-mode-tests.ts @@ -0,0 +1,80 @@ +/// + +import fs = require('fs'); +import Mode = require('stat-mode'); + +fs.stat('/bin/echo', (err, stat) => { + if (err) throw err; + + const mode = new Mode(stat); + // $ExpectType Mode + mode; + + // $ExpectType boolean + mode.isDirectory(); + mode.isDirectory(false); + + // $ExpectType boolean + mode.isFIFO(); + mode.isFIFO(false); + + // $ExpectType boolean + mode.isFile(); + mode.isFile(false); + + // $ExpectType boolean + mode.isBlockDevice(); + mode.isBlockDevice(false); + + // $ExpectType boolean + mode.isCharacterDevice(); + mode.isCharacterDevice(false); + + // $ExpectType boolean + mode.isSocket(); + mode.isSocket(false); + + // $ExpectType boolean + mode.isSymbolicLink(); + mode.isSymbolicLink(false); + + // $ExpectType Permissions + mode.owner; + // $ExpectType boolean + mode.owner.read; + // $ExpectType boolean + mode.owner.write; + // $ExpectType boolean + mode.owner.execute; + + // $ExpectType Permissions + mode.group; + // $ExpectType boolean + mode.group.read; + // $ExpectType boolean + mode.group.write; + // $ExpectType boolean + mode.group.execute; + + // $ExpectType Permissions + mode.others; + // $ExpectType boolean + mode.others.read; + // $ExpectType boolean + mode.others.write; + // $ExpectType boolean + mode.others.execute; + + // $ExpectType boolean + mode.setuid; + // $ExpectType boolean + mode.setgid; + // $ExpectType boolean + mode.sticky; + + // $ExpectType number + mode.valueOf(); + mode.toString(); + // $ExpectType string + mode.toOctal(); +}); diff --git a/types/stat-mode/tsconfig.json b/types/stat-mode/tsconfig.json new file mode 100644 index 0000000000..cebbcc6c12 --- /dev/null +++ b/types/stat-mode/tsconfig.json @@ -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", + "stat-mode-tests.ts" + ] +} diff --git a/types/stat-mode/tslint.json b/types/stat-mode/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/stat-mode/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }