diff --git a/src/index.js b/src/index.js index 0d6d6dec0..8cff67ecb 100644 --- a/src/index.js +++ b/src/index.js @@ -45,7 +45,7 @@ const noop = () => {}; */ /** - * @typedef {Compiler["outputFileSystem"] & { createReadStream?: import("fs").createReadStream, statSync?: import("fs").statSync, lstat?: import("fs").lstat, readFileSync?: import("fs").readFileSync }} OutputFileSystem + * @typedef {Compiler["outputFileSystem"] & { createReadStream?: import("fs").createReadStream, statSync?: import("fs").statSync, lstat?: import("fs").lstat, existsSync?: import("fs").existsSync, readFileSync?: import("fs").readFileSync }} OutputFileSystem */ /** @typedef {ReturnType} Logger */ @@ -88,6 +88,7 @@ const noop = () => {}; * @property {boolean} [serverSideRender] * @property {OutputFileSystem} [outputFileSystem] * @property {boolean | string} [index] + * @property {boolean | undefined} [historyApiFallback] */ /** diff --git a/src/utils/getFilenameFromUrl.js b/src/utils/getFilenameFromUrl.js index 7253b7ef5..ab9b64575 100644 --- a/src/utils/getFilenameFromUrl.js +++ b/src/utils/getFilenameFromUrl.js @@ -96,8 +96,9 @@ function getFilenameFromUrl(context, url) { } if ( - options.historyApiFallback && - !context.outputFileSystem.existsSync(filename) + context.outputFileSystem.existsSync && + !context.outputFileSystem.existsSync(filename) && + options.historyApiFallback ) { filename = path.join(outputPath); } diff --git a/test/validation-options.test.js b/test/validation-options.test.js index 7d39869e8..58d7e286a 100644 --- a/test/validation-options.test.js +++ b/test/validation-options.test.js @@ -41,7 +41,7 @@ describe("validation", () => { }, historyApiFallback: { success: [true], - failure: ["foo", 10], + failure: [], }, serverSideRender: { success: [true], diff --git a/types/index.d.ts b/types/index.d.ts index 152459637..ee8ee80dc 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -28,7 +28,7 @@ export = wdm; * @typedef {ReturnType} MultiWatching */ /** - * @typedef {Compiler["outputFileSystem"] & { createReadStream?: import("fs").createReadStream, statSync?: import("fs").statSync, lstat?: import("fs").lstat, readFileSync?: import("fs").readFileSync }} OutputFileSystem + * @typedef {Compiler["outputFileSystem"] & { createReadStream?: import("fs").createReadStream, statSync?: import("fs").statSync, lstat?: import("fs").lstat, existsSync?: import("fs").existsSync, readFileSync?: import("fs").readFileSync }} OutputFileSystem */ /** @typedef {ReturnType} Logger */ /** @@ -66,6 +66,7 @@ export = wdm; * @property {boolean} [serverSideRender] * @property {OutputFileSystem} [outputFileSystem] * @property {boolean | string} [index] + * @property {boolean | undefined} [historyApiFallback] */ /** * @template {IncomingMessage} RequestInternal @@ -172,6 +173,7 @@ type Options< serverSideRender?: boolean | undefined; outputFileSystem?: OutputFileSystem | undefined; index?: string | boolean | undefined; + historyApiFallback?: boolean | undefined; }; type API< RequestInternal extends import("http").IncomingMessage, @@ -204,6 +206,7 @@ type OutputFileSystem = Compiler["outputFileSystem"] & { createReadStream?: typeof import("fs").createReadStream; statSync?: import("fs").StatSyncFn; lstat?: typeof import("fs").lstat; + existsSync?: typeof import("fs").existsSync; readFileSync?: typeof import("fs").readFileSync; }; type Logger = ReturnType;