diff --git a/types/koa-webpack/index.d.ts b/types/koa-webpack/index.d.ts index 4f86fcd11f..951d8d58a2 100644 --- a/types/koa-webpack/index.d.ts +++ b/types/koa-webpack/index.d.ts @@ -1,30 +1,35 @@ -// Type definitions for koa-webpack 1.0 +// Type definitions for koa-webpack 5.x // Project: https://github.com/shellscape/koa-webpack#readme // Definitions by: Luka Maljic +// Lee Benson +// miZyind // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 import Koa = require('koa'); import webpack = require('webpack'); import webpackDevMiddleware = require('webpack-dev-middleware'); -import webpackHotMiddleware = require('webpack-hot-middleware'); -import connect = require('connect'); +import webpackHotClient = require('webpack-hot-client'); declare function koaWebpack( options?: koaWebpack.Options -): Koa.Middleware & koaWebpack.CombinedWebpackMiddleware; +): Promise; declare namespace koaWebpack { interface Options { compiler?: webpack.Compiler; config?: webpack.Configuration; - dev?: webpackDevMiddleware.Options; - hot?: webpackHotMiddleware.Options | boolean; + devMiddleware?: webpackDevMiddleware.Options; + hotClient?: webpackHotClient.Options | boolean; } interface CombinedWebpackMiddleware { - dev: connect.NextHandleFunction & webpackDevMiddleware.WebpackDevMiddleware; - hot: connect.NextHandleFunction & webpackHotMiddleware.EventStream; + devMiddleware: webpackDevMiddleware.WebpackDevMiddleware; + hotClient: { + close: () => void; + options: webpackHotClient.Options; + server: any; + }; } } diff --git a/types/koa-webpack/koa-webpack-tests.ts b/types/koa-webpack/koa-webpack-tests.ts index 12062302de..de4990eea6 100644 --- a/types/koa-webpack/koa-webpack-tests.ts +++ b/types/koa-webpack/koa-webpack-tests.ts @@ -7,39 +7,50 @@ const config: webpack.Configuration = {}; const compiler = webpack(config); // Using the middleware - -const middleware = koaWebpack({ +koaWebpack({ compiler, config, - dev: { - lazy: true, - watchOptions: { - aggregateTimeout: 300, - poll: true, - }, - publicPath: '/assets/', + // Reference: https://github.com/webpack/webpack-dev-middleware#options + devMiddleware: { + headers: { 'X-Custom-Header': 'yes' }, index: 'index.html', - headers: { - 'X-Custom-Header': 'yes' - }, - stats: { - colors: true, - }, + lazy: false, + logger: undefined, + logLevel: 'info', + // logTime: false, + // mimeTypes: null, + publicPath: '/assets/', reporter: null, - serverSideRender: false + serverSideRender: false, + stats: { context: process.cwd() }, + watchOptions: { aggregateTimeout: 200 }, + // writeToDisk: false }, - hot: { - log: console.log.bind(console), - path: '/__what', - heartbeat: 2000 + // Reference: https://github.com/webpack-contrib/webpack-hot-client#api + hotClient: { + allEntries: false, + autoConfigure: true, + host: 'localhost', + hmr: true, + https: false, + logLevel: 'info', + logTime: false, + port: 0, + reload: true, + server: undefined, + stats: { context: process.cwd() } } -}); +}) + .then((middleware) => { + app.use(middleware); -app.use(middleware); - -// Accessing the underlying middleware - -middleware.dev.close(); -middleware.dev.invalidate(); -middleware.dev.waitUntilValid(); -middleware.hot.publish(null); + // Accessing the underlying middleware + middleware.devMiddleware.close(); + middleware.devMiddleware.invalidate(); + middleware.devMiddleware.waitUntilValid(); + middleware.devMiddleware.getFilenameFromUrl('/public/index.html'); + middleware.devMiddleware.fileSystem; + middleware.hotClient.close(); + middleware.hotClient.options; + middleware.hotClient.server; + });