From bf037c9886d303ddf8fbf0b7713112f9f9ff3448 Mon Sep 17 00:00:00 2001 From: Luka Maljic Date: Wed, 13 Dec 2017 10:07:05 +0100 Subject: [PATCH] Added types for koa-webpack --- types/koa-webpack/index.d.ts | 33 +++++++++++++++++ types/koa-webpack/koa-webpack-tests.ts | 50 ++++++++++++++++++++++++++ types/koa-webpack/tsconfig.json | 22 ++++++++++++ types/koa-webpack/tslint.json | 1 + 4 files changed, 106 insertions(+) create mode 100644 types/koa-webpack/index.d.ts create mode 100644 types/koa-webpack/koa-webpack-tests.ts create mode 100644 types/koa-webpack/tsconfig.json create mode 100644 types/koa-webpack/tslint.json diff --git a/types/koa-webpack/index.d.ts b/types/koa-webpack/index.d.ts new file mode 100644 index 0000000000..363c9cb5b0 --- /dev/null +++ b/types/koa-webpack/index.d.ts @@ -0,0 +1,33 @@ +// Type definitions for koa-webpack 1.0 +// Project: https://github.com/shellscape/koa-webpack#readme +// Definitions by: Luka Maljic +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as Koa from 'koa' +import * as webpack from 'webpack' +import * as webpackDevMiddleware from 'webpack-dev-middleware' +import * as webpackHotMiddleware from 'webpack-hot-middleware' +import { NextHandleFunction } from 'connect' + +declare function koaWebpack( + options?: koaWebpack.Options +): Koa.Middleware & koaWebpack.CombinedWebpackMiddleware + +declare namespace koaWebpack +{ + interface Options + { + compiler?: webpack.Compiler + config?: webpack.Configuration + dev?: webpackDevMiddleware.Options + hot?: webpackHotMiddleware.Options + } + + interface CombinedWebpackMiddleware + { + dev: NextHandleFunction & webpackDevMiddleware.WebpackDevMiddleware + hot: NextHandleFunction & webpackHotMiddleware.EventStream + } +} + +export = koaWebpack diff --git a/types/koa-webpack/koa-webpack-tests.ts b/types/koa-webpack/koa-webpack-tests.ts new file mode 100644 index 0000000000..eaa3468ce1 --- /dev/null +++ b/types/koa-webpack/koa-webpack-tests.ts @@ -0,0 +1,50 @@ +import * as Koa from 'koa' +import * as webpack from 'webpack' +import * as koaWebpack from 'koa-webpack' + +const app = new Koa() +const config: webpack.Configuration = {} +const compiler = webpack(config) + + +// Using the middleware + +const middleware = koaWebpack({ + compiler, + config, + dev: { + 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 + }, + hot: { + log: console.log.bind(console), + path: '/__what', + heartbeat: 2000 + } +}) + +app.use(middleware) + + +// Accessing the underlying middleware + +middleware.dev.close() +middleware.dev.invalidate() +middleware.dev.waitUntilValid() +middleware.hot.publish(null) + diff --git a/types/koa-webpack/tsconfig.json b/types/koa-webpack/tsconfig.json new file mode 100644 index 0000000000..57a4aac117 --- /dev/null +++ b/types/koa-webpack/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", + "koa-webpack-tests.ts" + ] +} diff --git a/types/koa-webpack/tslint.json b/types/koa-webpack/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/koa-webpack/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }