diff --git a/webpack-dev-middleware/index.d.ts b/webpack-dev-middleware/index.d.ts new file mode 100644 index 0000000000..e173d4e3d4 --- /dev/null +++ b/webpack-dev-middleware/index.d.ts @@ -0,0 +1,49 @@ +// Type definitions for webpack-dev-middleware 1.9 +// Project: http://github.com/webpack/webpack-dev-middleware +// Definitions by: Benjamin Lim +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import { NextHandleFunction } from 'connect'; +import { compiler } from 'webpack'; + +export = WebpackDevMiddleware; + +declare function WebpackDevMiddleware(compiler: compiler.Compiler, options: WebpackDevMiddleware.Options): WebpackDevMiddleware.WebpackDevMiddleware & NextHandleFunction; + +declare namespace WebpackDevMiddleware { + interface Options { + noInfo?: boolean; + quiet?: boolean; + lazy?: boolean; + watchOptions?: compiler.WatchOptions; + publicPath: string; + index?: string; + headers?: { + [name: string]: string; + }; + stats?: compiler.StatsToStringOptions; + reporter?: Reporter | null; + serverSideRender?: boolean; + + log?: Logger; + warn?: Logger; + error?: Logger; + filename?: string; + } + + interface ReporterOptions { + state: boolean; + stats: compiler.Stats; + options: Options; + } + + type Reporter = (reporterOptions: ReporterOptions) => void; + + type Logger = (message: any) => void; + + interface WebpackDevMiddleware { + close(callback?: () => void): void; + invalidate(callback?: (stats: compiler.Stats) => void): void; + waitUntilValid(callback?: (stats: compiler.Stats) => void): void; + } +} diff --git a/webpack-dev-middleware/tsconfig.json b/webpack-dev-middleware/tsconfig.json new file mode 100644 index 0000000000..4ed359215b --- /dev/null +++ b/webpack-dev-middleware/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "webpack-dev-middleware-tests.ts" + ] +} diff --git a/webpack-dev-middleware/tslint.json b/webpack-dev-middleware/tslint.json new file mode 100644 index 0000000000..377cc837d4 --- /dev/null +++ b/webpack-dev-middleware/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" } diff --git a/webpack-dev-middleware/webpack-dev-middleware-tests.ts b/webpack-dev-middleware/webpack-dev-middleware-tests.ts new file mode 100644 index 0000000000..b204fbe5d8 --- /dev/null +++ b/webpack-dev-middleware/webpack-dev-middleware-tests.ts @@ -0,0 +1,33 @@ +import * as express from 'express'; +import * as webpack from 'webpack'; +import * as webpackDevMiddleware from 'webpack-dev-middleware'; + +const compiler = webpack({}); +const webpackDevMiddlewareInstance = webpackDevMiddleware(compiler, { + noInfo: false, + quiet: false, + lazy: true, + watchOptions: { + aggregateTimeout: 300, + poll: true, + }, + publicPath: '/assets/', + index: 'index.html', + headers: { + 'X-Custom-Header': 'yes' + }, + stats: { + colors: true, + }, + reporter: null, + serverSideRender: false, +}); + +const app = express(); +app.use(webpackDevMiddlewareInstance); + +webpackDevMiddlewareInstance.close(); +webpackDevMiddlewareInstance.invalidate(); +webpackDevMiddlewareInstance.waitUntilValid(function(){ + console.log('Package is in a valid state'); +});