From b6d53d3f4d43c4c0e646e8d06355f3b4c9893a4f Mon Sep 17 00:00:00 2001 From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com> Date: Thu, 16 Dec 2021 20:08:52 +0300 Subject: [PATCH] feat: remove cjs wrapper (#1146) --- package.json | 14 ++- src/cjs.js | 3 - src/index.js | 25 +++-- src/middleware.js | 18 +-- src/utils/getFilenameFromUrl.js | 12 +- src/utils/getPaths.js | 4 +- src/utils/ready.js | 4 +- src/utils/setupHooks.js | 8 +- src/utils/setupOutputFileSystem.js | 11 +- src/utils/setupWriteToDisk.js | 8 +- test/cjs.test.js | 8 -- test/helpers/runner.js | 2 +- test/utils/setupOutputFileSystem.test.js | 8 ++ types/cjs.d.ts | 3 - types/index.d.ts | 134 ++++++++++++++--------- types/middleware.d.ts | 12 +- types/utils/getFilenameFromUrl.d.ts | 10 +- types/utils/getPaths.d.ts | 16 ++- types/utils/ready.d.ts | 10 +- types/utils/setupHooks.d.ts | 40 +++++-- types/utils/setupOutputFileSystem.d.ts | 12 +- types/utils/setupWriteToDisk.d.ts | 22 +++- 22 files changed, 236 insertions(+), 148 deletions(-) delete mode 100644 src/cjs.js delete mode 100644 test/cjs.test.js delete mode 100644 types/cjs.d.ts diff --git a/package.json b/package.json index bc7be39ee..58cc3b979 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,14 @@ "type": "opencollective", "url": "https://opencollective.com/webpack" }, - "main": "dist/cjs.js", - "types": "types/cjs.d.ts", + "main": "dist/index.js", + "types": "types/index.d.ts", "engines": { "node": ">= 12.13.0" }, "scripts": { "commitlint": "commitlint --from=master", + "security": "npm audit --production", "fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css}\" --list-different", "lint:js": "eslint --cache src test", "lint:types": "tsc --pretty --noEmit", @@ -25,17 +26,18 @@ "fmt": "npm run fmt:check -- --write", "fix:js": "npm run lint:js -- --fix", "fix": "npm-run-all fix:js fmt", - "prepare": "husky install && npm run build", + "clean": "del-cli dist types", + "prebuild": "npm run clean", "build:types": "tsc --declaration --emitDeclarationOnly --outDir types && prettier \"types/**/*.ts\" --write", "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files", "build": "npm-run-all -p \"build:**\"", - "release": "standard-version", - "security": "npm audit --production", "test:only": "cross-env NODE_ENV=test jest", "test:watch": "npm run test:only -- --watch", "test:coverage": "npm run test:only -- --collectCoverageFrom=\"src/**/*.js\" --coverage", "pretest": "npm run lint", - "test": "npm run test:coverage" + "test": "npm run test:coverage", + "prepare": "husky install && npm run build", + "release": "standard-version" }, "files": [ "dist", diff --git a/src/cjs.js b/src/cjs.js deleted file mode 100644 index 010f84757..000000000 --- a/src/cjs.js +++ /dev/null @@ -1,3 +0,0 @@ -const middleware = require("./index"); - -module.exports = middleware.default; diff --git a/src/index.js b/src/index.js index 02d2d2f34..d5818b815 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,13 @@ -import { validate } from "schema-utils"; -import mime from "mime-types"; +const { validate } = require("schema-utils"); +const mime = require("mime-types"); -import middleware from "./middleware"; -import getFilenameFromUrl from "./utils/getFilenameFromUrl"; -import setupHooks from "./utils/setupHooks"; -import setupWriteToDisk from "./utils/setupWriteToDisk"; -import setupOutputFileSystem from "./utils/setupOutputFileSystem"; -import ready from "./utils/ready"; -import schema from "./options.json"; +const middleware = require("./middleware"); +const getFilenameFromUrl = require("./utils/getFilenameFromUrl"); +const setupHooks = require("./utils/setupHooks"); +const setupWriteToDisk = require("./utils/setupWriteToDisk"); +const setupOutputFileSystem = require("./utils/setupOutputFileSystem"); +const ready = require("./utils/ready"); +const schema = require("./options.json"); const noop = () => {}; @@ -18,10 +18,9 @@ const noop = () => {}; /** @typedef {import("webpack").Stats} Stats */ /** @typedef {import("webpack").MultiStats} MultiStats */ -// TODO fix me /** * @typedef {Object} ExtendedServerResponse - * @property {{ webpack?: { devMiddleware?: Context } }} [locals] + * @property {{ webpack?: { devMiddleware?: Context } }} [locals] */ /** @typedef {import("http").IncomingMessage} IncomingMessage */ @@ -146,7 +145,7 @@ const noop = () => {}; * @param {Options} [options] * @returns {API} */ -export default function wdm(compiler, options = {}) { +function wdm(compiler, options = {}) { validate(/** @type {Schema} */ (schema), options, { name: "Dev Middleware", baseDataPath: "options", @@ -277,3 +276,5 @@ export default function wdm(compiler, options = {}) { return instance; } + +module.exports = wdm; diff --git a/src/middleware.js b/src/middleware.js index ad471de17..1ed11c5e1 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -1,18 +1,18 @@ -import path from "path"; +const path = require("path"); -import mime from "mime-types"; -import parseRange from "range-parser"; +const mime = require("mime-types"); +const parseRange = require("range-parser"); -import getFilenameFromUrl from "./utils/getFilenameFromUrl"; -import { +const getFilenameFromUrl = require("./utils/getFilenameFromUrl"); +const { getHeaderNames, getHeaderFromRequest, getHeaderFromResponse, setHeaderForResponse, setStatusCode, send, -} from "./utils/compatibleAPI"; -import ready from "./utils/ready"; +} = require("./utils/compatibleAPI"); +const ready = require("./utils/ready"); /** @typedef {import("./index.js").NextFunction} NextFunction */ /** @typedef {import("./index.js").IncomingMessage} IncomingMessage */ @@ -58,7 +58,7 @@ const BYTES_RANGE_REGEXP = /^ *bytes/i; * @param {import("./index.js").Context} context * @return {import("./index.js").Middleware} */ -export default function wrapper(context) { +function wrapper(context) { return async function middleware(req, res, next) { const acceptedMethods = context.options.methods || ["GET", "HEAD"]; @@ -270,3 +270,5 @@ export default function wrapper(context) { } }; } + +module.exports = wrapper; diff --git a/src/utils/getFilenameFromUrl.js b/src/utils/getFilenameFromUrl.js index 54d8b44ae..9a555281f 100644 --- a/src/utils/getFilenameFromUrl.js +++ b/src/utils/getFilenameFromUrl.js @@ -1,8 +1,8 @@ -import path from "path"; -import { parse } from "url"; -import querystring from "querystring"; +const path = require("path"); +const { parse } = require("url"); +const querystring = require("querystring"); -import getPaths from "./getPaths"; +const getPaths = require("./getPaths"); /** @typedef {import("../index.js").IncomingMessage} IncomingMessage */ /** @typedef {import("../index.js").ServerResponse} ServerResponse */ @@ -49,7 +49,7 @@ const memoizedParse = mem(parse); * @param {string} url * @returns {string | undefined} */ -export default function getFilenameFromUrl(context, url) { +function getFilenameFromUrl(context, url) { const { options } = context; const paths = getPaths(context); @@ -142,3 +142,5 @@ export default function getFilenameFromUrl(context, url) { // eslint-disable-next-line consistent-return return foundFilename; } + +module.exports = getFilenameFromUrl; diff --git a/src/utils/getPaths.js b/src/utils/getPaths.js index 2338756f3..4355acf42 100644 --- a/src/utils/getPaths.js +++ b/src/utils/getPaths.js @@ -9,7 +9,7 @@ * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function getPaths(context) { +function getPaths(context) { const { stats, options } = context; /** @type {Stats[]} */ const childStats = @@ -35,3 +35,5 @@ export default function getPaths(context) { return publicPaths; } + +module.exports = getPaths; diff --git a/src/utils/ready.js b/src/utils/ready.js index ed5100553..15d47d59c 100644 --- a/src/utils/ready.js +++ b/src/utils/ready.js @@ -9,7 +9,7 @@ * @param {Request} [req] * @returns {void} */ -export default function ready(context, callback, req) { +function ready(context, callback, req) { if (context.state) { callback(context.stats); @@ -22,3 +22,5 @@ export default function ready(context, callback, req) { context.callbacks.push(callback); } + +module.exports = ready; diff --git a/src/utils/setupHooks.js b/src/utils/setupHooks.js index 5a85e00e4..2319f2617 100644 --- a/src/utils/setupHooks.js +++ b/src/utils/setupHooks.js @@ -1,5 +1,5 @@ -import webpack from "webpack"; -import { isColorSupported } from "colorette"; +const webpack = require("webpack"); +const { isColorSupported } = require("colorette"); /** @typedef {import("webpack").Configuration} Configuration */ /** @typedef {import("webpack").Compiler} Compiler */ @@ -20,7 +20,7 @@ import { isColorSupported } from "colorette"; * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupHooks(context) { +function setupHooks(context) { function invalid() { if (context.state) { context.logger.log("Compilation starting..."); @@ -198,3 +198,5 @@ export default function setupHooks(context) { context.compiler.hooks.invalid.tap("webpack-dev-middleware", invalid); context.compiler.hooks.done.tap("webpack-dev-middleware", done); } + +module.exports = setupHooks; diff --git a/src/utils/setupOutputFileSystem.js b/src/utils/setupOutputFileSystem.js index b567ef60a..a135fafcb 100644 --- a/src/utils/setupOutputFileSystem.js +++ b/src/utils/setupOutputFileSystem.js @@ -1,6 +1,5 @@ -import path from "path"; - -import { createFsFromVolume, Volume } from "memfs"; +const path = require("path"); +const memfs = require("memfs"); /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ /** @typedef {import("../index.js").IncomingMessage} IncomingMessage */ @@ -11,7 +10,7 @@ import { createFsFromVolume, Volume } from "memfs"; * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupOutputFileSystem(context) { +function setupOutputFileSystem(context) { let outputFileSystem; if (context.options.outputFileSystem) { @@ -34,7 +33,7 @@ export default function setupOutputFileSystem(context) { outputFileSystem = outputFileSystemFromOptions; } else { - outputFileSystem = createFsFromVolume(new Volume()); + outputFileSystem = memfs.createFsFromVolume(new memfs.Volume()); // TODO: remove when we drop webpack@4 support // @ts-ignore outputFileSystem.join = path.join.bind(path); @@ -52,3 +51,5 @@ export default function setupOutputFileSystem(context) { // eslint-disable-next-line no-param-reassign context.outputFileSystem = outputFileSystem; } + +module.exports = setupOutputFileSystem; diff --git a/src/utils/setupWriteToDisk.js b/src/utils/setupWriteToDisk.js index 9335781f7..ac8958984 100644 --- a/src/utils/setupWriteToDisk.js +++ b/src/utils/setupWriteToDisk.js @@ -1,5 +1,5 @@ -import fs from "fs"; -import path from "path"; +const fs = require("fs"); +const path = require("path"); /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ @@ -12,7 +12,7 @@ import path from "path"; * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupWriteToDisk(context) { +function setupWriteToDisk(context) { /** * @type {Compiler[]} */ @@ -113,3 +113,5 @@ export default function setupWriteToDisk(context) { ); } } + +module.exports = setupWriteToDisk; diff --git a/test/cjs.test.js b/test/cjs.test.js deleted file mode 100644 index 97fed8b8a..000000000 --- a/test/cjs.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import src from "../src"; -import cjs from "../src/cjs"; - -describe("cjs", () => { - it("should work", () => { - expect(cjs).toEqual(src); - }); -}); diff --git a/test/helpers/runner.js b/test/helpers/runner.js index b39493b0b..d60246476 100755 --- a/test/helpers/runner.js +++ b/test/helpers/runner.js @@ -4,7 +4,7 @@ const express = require("express"); const webpack = require("webpack"); const merge = require("deepmerge"); -const middleware = require("../../dist").default; +const middleware = require("../../dist"); const defaultConfig = require("../fixtures/webpack.config"); const configEntries = []; diff --git a/test/utils/setupOutputFileSystem.test.js b/test/utils/setupOutputFileSystem.test.js index 812d77a6e..8c7d2b57d 100644 --- a/test/utils/setupOutputFileSystem.test.js +++ b/test/utils/setupOutputFileSystem.test.js @@ -20,7 +20,9 @@ describe("setupOutputFileSystem", () => { compiler: {}, options: {}, }; + setupOutputFileSystem(context); + // make sure that this is the default fs created expect(context.compiler.outputFileSystem.testFs).toBeTruthy(); expect(context.outputFileSystem.testFs).toBeTruthy(); @@ -36,7 +38,9 @@ describe("setupOutputFileSystem", () => { }, options: {}, }; + setupOutputFileSystem(context); + context.compiler.compilers.forEach((comp) => { expect(comp.outputFileSystem).toBeTruthy(); }); @@ -49,6 +53,7 @@ describe("setupOutputFileSystem", () => { outputFileSystem: {}, }, }; + expect(() => { setupOutputFileSystem(context); }).toThrow(/join/); @@ -63,6 +68,7 @@ describe("setupOutputFileSystem", () => { }, }, }; + expect(() => { setupOutputFileSystem(context); }).toThrow(/mkdirp/); @@ -78,7 +84,9 @@ describe("setupOutputFileSystem", () => { }, }, }; + setupOutputFileSystem(context); + expect(context.outputFileSystem).toEqual(context.options.outputFileSystem); }); }); diff --git a/types/cjs.d.ts b/types/cjs.d.ts deleted file mode 100644 index 461d3f11a..000000000 --- a/types/cjs.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const _exports: typeof middleware.default; -export = _exports; -import middleware = require("./index"); diff --git a/types/index.d.ts b/types/index.d.ts index 1e98574b1..ba4b67336 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,5 @@ /// +export = wdm; /** @typedef {import("schema-utils/declarations/validate").Schema} Schema */ /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ @@ -7,7 +8,7 @@ /** @typedef {import("webpack").MultiStats} MultiStats */ /** * @typedef {Object} ExtendedServerResponse - * @property {{ webpack?: { devMiddleware?: Context } }} [locals] + * @property {{ webpack?: { devMiddleware?: Context } }} [locals] */ /** @typedef {import("http").IncomingMessage} IncomingMessage */ /** @typedef {import("http").ServerResponse & ExtendedServerResponse} ServerResponse */ @@ -113,48 +114,102 @@ * @param {Options} [options] * @returns {API} */ -export default function wdm< +declare function wdm< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse >( compiler: Compiler | MultiCompiler, options?: Options | undefined ): API; -export type Schema = import("schema-utils/declarations/validate").Schema; -export type Compiler = import("webpack").Compiler; -export type MultiCompiler = import("webpack").MultiCompiler; -export type Configuration = import("webpack").Configuration; -export type Stats = import("webpack").Stats; -export type MultiStats = import("webpack").MultiStats; -export type ExtendedServerResponse = { +declare namespace wdm { + export { + Schema, + Compiler, + MultiCompiler, + Configuration, + Stats, + MultiStats, + ExtendedServerResponse, + IncomingMessage, + ServerResponse, + NextFunction, + WatchOptions, + Watching, + MultiWatching, + OutputFileSystem, + Logger, + Callback, + Context, + Headers, + Options, + Middleware, + GetFilenameFromUrl, + WaitUntilValid, + Invalidate, + Close, + AdditionalMethods, + API, + }; +} +type ServerResponse = import("http").ServerResponse & ExtendedServerResponse; +type Compiler = import("webpack").Compiler; +type MultiCompiler = import("webpack").MultiCompiler; +type Options< + Request_1 extends import("http").IncomingMessage, + Response_1 extends ServerResponse +> = { + mimeTypes?: + | { + [key: string]: string; + } + | undefined; + writeToDisk?: boolean | ((targetPath: string) => boolean) | undefined; + methods?: string | undefined; + headers?: Headers; + publicPath?: NonNullable["publicPath"]; + stats?: Configuration["stats"]; + serverSideRender?: boolean | undefined; + outputFileSystem?: OutputFileSystem | undefined; + index?: string | boolean | undefined; +}; +type API< + Request_1 extends import("http").IncomingMessage, + Response_1 extends ServerResponse +> = Middleware & + AdditionalMethods; +type Schema = import("schema-utils/declarations/validate").Schema; +type Configuration = import("webpack").Configuration; +type Stats = import("webpack").Stats; +type MultiStats = import("webpack").MultiStats; +type ExtendedServerResponse = { locals?: | { webpack?: | { - devMiddleware?: Context | undefined; + devMiddleware?: + | Context + | undefined; } | undefined; } | undefined; }; -export type IncomingMessage = import("http").IncomingMessage; -export type ServerResponse = import("http").ServerResponse & - ExtendedServerResponse; -export type NextFunction = (err?: any) => void; -export type WatchOptions = NonNullable; -export type Watching = Compiler["watching"]; -export type MultiWatching = ReturnType; -export type OutputFileSystem = Compiler["outputFileSystem"] & { +type IncomingMessage = import("http").IncomingMessage; +type NextFunction = (err?: any) => void; +type WatchOptions = NonNullable; +type Watching = Compiler["watching"]; +type MultiWatching = ReturnType; +type OutputFileSystem = Compiler["outputFileSystem"] & { createReadStream?: typeof import("fs").createReadStream; statSync?: import("fs").StatSyncFn; lstat?: typeof import("fs").lstat; readFileSync?: typeof import("fs").readFileSync; }; -export type Logger = ReturnType; -export type Callback = ( +type Logger = ReturnType; +type Callback = ( stats?: import("webpack").Stats | import("webpack").MultiStats | undefined ) => any; -export type Context< +type Context< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = { @@ -167,7 +222,7 @@ export type Context< logger: Logger; outputFileSystem: OutputFileSystem; }; -export type Headers< +type Headers< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = @@ -182,33 +237,15 @@ export type Headers< context: Context ) => void | undefined | Record) | undefined; -export type Options< - Request_1 extends import("http").IncomingMessage, - Response_1 extends ServerResponse -> = { - mimeTypes?: - | { - [key: string]: string; - } - | undefined; - writeToDisk?: boolean | ((targetPath: string) => boolean) | undefined; - methods?: string | undefined; - headers?: Headers; - publicPath?: NonNullable["publicPath"]; - stats?: Configuration["stats"]; - serverSideRender?: boolean | undefined; - outputFileSystem?: OutputFileSystem | undefined; - index?: string | boolean | undefined; -}; -export type Middleware< +type Middleware< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = (req: Request_1, res: Response_1, next: NextFunction) => Promise; -export type GetFilenameFromUrl = (url: string) => string | undefined; -export type WaitUntilValid = (callback: Callback) => any; -export type Invalidate = (callback: Callback) => any; -export type Close = (callback: (err?: Error | undefined) => void) => any; -export type AdditionalMethods< +type GetFilenameFromUrl = (url: string) => string | undefined; +type WaitUntilValid = (callback: Callback) => any; +type Invalidate = (callback: Callback) => any; +type Close = (callback: (err?: Error | undefined) => void) => any; +type AdditionalMethods< Request_1 extends import("http").IncomingMessage, Response_1 extends ServerResponse > = { @@ -218,8 +255,3 @@ export type AdditionalMethods< close: Close; context: Context; }; -export type API< - Request_1 extends import("http").IncomingMessage, - Response_1 extends ServerResponse -> = Middleware & - AdditionalMethods; diff --git a/types/middleware.d.ts b/types/middleware.d.ts index 34ca04c1f..4d65c4fef 100644 --- a/types/middleware.d.ts +++ b/types/middleware.d.ts @@ -1,16 +1,20 @@ /// +export = wrapper; /** * @template {IncomingMessage} Request * @template {ServerResponse} Response * @param {import("./index.js").Context} context * @return {import("./index.js").Middleware} */ -export default function wrapper< +declare function wrapper< Request_1 extends import("http").IncomingMessage, Response_1 extends import("./index.js").ServerResponse >( context: import("./index.js").Context ): import("./index.js").Middleware; -export type NextFunction = import("./index.js").NextFunction; -export type IncomingMessage = import("./index.js").IncomingMessage; -export type ServerResponse = import("./index.js").ServerResponse; +declare namespace wrapper { + export { NextFunction, IncomingMessage, ServerResponse }; +} +type NextFunction = import("./index.js").NextFunction; +type IncomingMessage = import("./index.js").IncomingMessage; +type ServerResponse = import("./index.js").ServerResponse; diff --git a/types/utils/getFilenameFromUrl.d.ts b/types/utils/getFilenameFromUrl.d.ts index e78fc7112..8ad2ff148 100644 --- a/types/utils/getFilenameFromUrl.d.ts +++ b/types/utils/getFilenameFromUrl.d.ts @@ -1,4 +1,5 @@ /// +export = getFilenameFromUrl; /** * @template {IncomingMessage} Request * @template {ServerResponse} Response @@ -6,12 +7,15 @@ * @param {string} url * @returns {string | undefined} */ -export default function getFilenameFromUrl< +declare function getFilenameFromUrl< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >( context: import("../index.js").Context, url: string ): string | undefined; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; +declare namespace getFilenameFromUrl { + export { IncomingMessage, ServerResponse }; +} +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse; diff --git a/types/utils/getPaths.d.ts b/types/utils/getPaths.d.ts index c3252381f..c3aaace0b 100644 --- a/types/utils/getPaths.d.ts +++ b/types/utils/getPaths.d.ts @@ -1,4 +1,5 @@ /// +export = getPaths; /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").Stats} Stats */ /** @typedef {import("webpack").MultiStats} MultiStats */ @@ -9,7 +10,7 @@ * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function getPaths< +declare function getPaths< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >( @@ -18,8 +19,11 @@ export default function getPaths< outputPath: string; publicPath: string; }[]; -export type Compiler = import("webpack").Compiler; -export type Stats = import("webpack").Stats; -export type MultiStats = import("webpack").MultiStats; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; +declare namespace getPaths { + export { Compiler, Stats, MultiStats, IncomingMessage, ServerResponse }; +} +type Compiler = import("webpack").Compiler; +type Stats = import("webpack").Stats; +type MultiStats = import("webpack").MultiStats; +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse; diff --git a/types/utils/ready.d.ts b/types/utils/ready.d.ts index 2bf97ca29..8ab026a54 100644 --- a/types/utils/ready.d.ts +++ b/types/utils/ready.d.ts @@ -1,4 +1,5 @@ /// +export = ready; /** @typedef {import("../index.js").IncomingMessage} IncomingMessage */ /** @typedef {import("../index.js").ServerResponse} ServerResponse */ /** @@ -9,7 +10,7 @@ * @param {Request} [req] * @returns {void} */ -export default function ready< +declare function ready< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >( @@ -17,5 +18,8 @@ export default function ready< callback: (...args: any[]) => any, req?: Request_1 | undefined ): void; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; +declare namespace ready { + export { IncomingMessage, ServerResponse }; +} +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse; diff --git a/types/utils/setupHooks.d.ts b/types/utils/setupHooks.d.ts index 82aad4b9a..0c9b30a6e 100644 --- a/types/utils/setupHooks.d.ts +++ b/types/utils/setupHooks.d.ts @@ -1,4 +1,5 @@ /// +export = setupHooks; /** @typedef {import("webpack").Configuration} Configuration */ /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ @@ -15,26 +16,41 @@ * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupHooks< +declare function setupHooks< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >(context: import("../index.js").Context): void; -export type Configuration = import("webpack").Configuration; -export type Compiler = import("webpack").Compiler; -export type MultiCompiler = import("webpack").MultiCompiler; -export type Stats = import("webpack").Stats; -export type MultiStats = import("webpack").MultiStats; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; -export type StatsOptions = Configuration["stats"]; -export type MultiStatsOptions = { +declare namespace setupHooks { + export { + Configuration, + Compiler, + MultiCompiler, + Stats, + MultiStats, + IncomingMessage, + ServerResponse, + StatsOptions, + MultiStatsOptions, + NormalizedStatsOptions, + MultiNormalizedStatsOptions, + }; +} +type Configuration = import("webpack").Configuration; +type Compiler = import("webpack").Compiler; +type MultiCompiler = import("webpack").MultiCompiler; +type Stats = import("webpack").Stats; +type MultiStats = import("webpack").MultiStats; +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse; +type StatsOptions = Configuration["stats"]; +type MultiStatsOptions = { children: Configuration["stats"][]; }; -export type NormalizedStatsOptions = Exclude< +type NormalizedStatsOptions = Exclude< Configuration["stats"], boolean | string | undefined >; -export type MultiNormalizedStatsOptions = { +type MultiNormalizedStatsOptions = { children: StatsOptions[]; colors?: any; }; diff --git a/types/utils/setupOutputFileSystem.d.ts b/types/utils/setupOutputFileSystem.d.ts index 3335d55a9..b1a917bed 100644 --- a/types/utils/setupOutputFileSystem.d.ts +++ b/types/utils/setupOutputFileSystem.d.ts @@ -1,4 +1,5 @@ /// +export = setupOutputFileSystem; /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ /** @typedef {import("../index.js").IncomingMessage} IncomingMessage */ /** @typedef {import("../index.js").ServerResponse} ServerResponse */ @@ -7,10 +8,13 @@ * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupOutputFileSystem< +declare function setupOutputFileSystem< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >(context: import("../index.js").Context): void; -export type MultiCompiler = import("webpack").MultiCompiler; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; +declare namespace setupOutputFileSystem { + export { MultiCompiler, IncomingMessage, ServerResponse }; +} +type MultiCompiler = import("webpack").MultiCompiler; +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse; diff --git a/types/utils/setupWriteToDisk.d.ts b/types/utils/setupWriteToDisk.d.ts index f8514ccdb..88e0c4e1b 100644 --- a/types/utils/setupWriteToDisk.d.ts +++ b/types/utils/setupWriteToDisk.d.ts @@ -1,4 +1,5 @@ /// +export = setupWriteToDisk; /** @typedef {import("webpack").Compiler} Compiler */ /** @typedef {import("webpack").MultiCompiler} MultiCompiler */ /** @typedef {import("webpack").Compilation} Compilation */ @@ -9,12 +10,21 @@ * @template {ServerResponse} Response * @param {import("../index.js").Context} context */ -export default function setupWriteToDisk< +declare function setupWriteToDisk< Request_1 extends import("http").IncomingMessage, Response_1 extends import("../index.js").ServerResponse >(context: import("../index.js").Context): void; -export type Compiler = import("webpack").Compiler; -export type MultiCompiler = import("webpack").MultiCompiler; -export type Compilation = import("webpack").Compilation; -export type IncomingMessage = import("../index.js").IncomingMessage; -export type ServerResponse = import("../index.js").ServerResponse; +declare namespace setupWriteToDisk { + export { + Compiler, + MultiCompiler, + Compilation, + IncomingMessage, + ServerResponse, + }; +} +type Compiler = import("webpack").Compiler; +type MultiCompiler = import("webpack").MultiCompiler; +type Compilation = import("webpack").Compilation; +type IncomingMessage = import("../index.js").IncomingMessage; +type ServerResponse = import("../index.js").ServerResponse;