From 03e66c690adf299b2ecee659be1400f8bd33eabb Mon Sep 17 00:00:00 2001 From: Gintautas Miselis Date: Wed, 9 Aug 2017 18:48:12 +0100 Subject: [PATCH] Add type definitions of express-fileupload (#18641) * Add type definitions of express-fileupload * Fixed all lint errors --- .../express-fileupload-tests.ts | 29 +++++++++++++++ types/express-fileupload/index.d.ts | 36 +++++++++++++++++++ types/express-fileupload/tsconfig.json | 22 ++++++++++++ types/express-fileupload/tslint.json | 1 + 4 files changed, 88 insertions(+) create mode 100644 types/express-fileupload/express-fileupload-tests.ts create mode 100644 types/express-fileupload/index.d.ts create mode 100644 types/express-fileupload/tsconfig.json create mode 100644 types/express-fileupload/tslint.json diff --git a/types/express-fileupload/express-fileupload-tests.ts b/types/express-fileupload/express-fileupload-tests.ts new file mode 100644 index 0000000000..61b8c2a9cc --- /dev/null +++ b/types/express-fileupload/express-fileupload-tests.ts @@ -0,0 +1,29 @@ +import * as express from 'express'; +import { RequestHandler, Request, Response, NextFunction } from 'express-serve-static-core'; +import { fileUpload, UploadedFile } from 'express-fileupload'; + +const app: express.Express = express(); + +app.use(fileUpload({debug: true})); + +function isUploadedFile(file: UploadedFile | UploadedFile[]): file is UploadedFile { + return typeof file === 'object' && ( file).name !== undefined; +} + +const uploadHandler: RequestHandler = (req: Request, res: Response, next: NextFunction) => { + if (typeof req.files === 'object') { + const fileField = req.files.field; + if (isUploadedFile(fileField)) { + console.log(fileField.name); + } + + const fileList = req.files.fileList; + if (Array.isArray(fileList)) { + for (const file of fileList) { + console.log(file.name); + } + } + } +}; + +app.post('/upload', uploadHandler); diff --git a/types/express-fileupload/index.d.ts b/types/express-fileupload/index.d.ts new file mode 100644 index 0000000000..33863758b4 --- /dev/null +++ b/types/express-fileupload/index.d.ts @@ -0,0 +1,36 @@ +// Type definitions for express-fileupload 0.1 +// Project: https://github.com/richardgirges/express-fileupload#readme +// Definitions by: Gintautas Miselis +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +import express = require('express'); + +declare global { + namespace Express { + interface Request { + files?: FileArray; + } + } +} + +export class FileArray { + [index: string]: UploadedFile | UploadedFile[] +} + +export interface UploadedFile { + name: string; + encoding: string; + mimetype: string; + data: Buffer; + mv(path: string, callback: (err: any) => {}): void; +} + +export interface Options { + debug?: boolean; + safeFileNames?: boolean; + preserveExtension?: boolean | string | number; + [property: string]: any; +} + +export function fileUpload(options?: Options): express.RequestHandler; diff --git a/types/express-fileupload/tsconfig.json b/types/express-fileupload/tsconfig.json new file mode 100644 index 0000000000..53c878d430 --- /dev/null +++ b/types/express-fileupload/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", + "express-fileupload-tests.ts" + ] +} diff --git a/types/express-fileupload/tslint.json b/types/express-fileupload/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/express-fileupload/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }