diff --git a/types/formidable/Formidable.d.ts b/types/formidable/Formidable.d.ts index 99e7cc9e8f7dd4..22f2e513ced0a4 100644 --- a/types/formidable/Formidable.d.ts +++ b/types/formidable/Formidable.d.ts @@ -35,6 +35,7 @@ declare class IncomingForm extends EventEmitter { on(eventName: string, listener: () => void): this; emit(eventName: "data", data: EmitData): boolean; + emit(eventName: "error", error: any): boolean; /** * A method that allows you to extend the Formidable library. By default we include 4 plugins, diff --git a/types/formidable/FormidableError.d.ts b/types/formidable/FormidableError.d.ts index 7ceb1ad5d006bb..b92f7bc3a8657f 100644 --- a/types/formidable/FormidableError.d.ts +++ b/types/formidable/FormidableError.d.ts @@ -6,7 +6,7 @@ declare class FormidableError extends Error { declare const errors: & { - FormidableError: typeof FormidableError; + default: typeof FormidableError; } & Record< | "missingPlugin" @@ -17,13 +17,17 @@ declare const errors: | "filenameNotString" | "maxFieldsSizeExceeded" | "maxFieldsExceeded" + | "maxFilesExceeded" | "smallerThanMinFileSize" | "biggerThanMaxFileSize" | "noEmptyFiles" | "missingContentType" | "malformedMultipart" | "missingMultipartBoundary" - | "unknownTransferEncoding", + | "unknownTransferEncoding" + | "biggerThanTotalMaxFileSize" + | "pluginFailed" + | "cannotCreateDir", number >; diff --git a/types/formidable/formidable-tests.ts b/types/formidable/formidable-tests.ts index 76fa49e1206caa..0d37e8618feaed 100644 --- a/types/formidable/formidable-tests.ts +++ b/types/formidable/formidable-tests.ts @@ -2,9 +2,11 @@ import formidable = require("formidable"); import { defaultOptions, enabledPlugins, + errors as formidableErrors, File, Formidable, formidable as formidableAlias, + FormidableError, IncomingForm, json, multipart, @@ -145,6 +147,11 @@ form.on("data", data => { bytesReceived; // $ExpectType number bytesExpected; + + form.emit( + "error", + new formidableErrors.default("bytes received exceeded", formidableErrors.biggerThanTotalMaxFileSize, 400), + ); }) .on("field", (name, value) => { // $ExpectType string @@ -233,3 +240,44 @@ querystring; multipart; // $ExpectType PluginFunction json; +// $ExpectType number +formidableErrors.missingPlugin; +// $ExpectType number +formidableErrors.pluginFunction; +// $ExpectType number +formidableErrors.aborted; +// $ExpectType number +formidableErrors.noParser; +// $ExpectType number +formidableErrors.uninitializedParser; +// $ExpectType number +formidableErrors.filenameNotString; +// $ExpectType number +formidableErrors.maxFieldsSizeExceeded; +// $ExpectType number +formidableErrors.maxFieldsExceeded; +// $ExpectType number +formidableErrors.maxFilesExceeded; +// $ExpectType number +formidableErrors.smallerThanMinFileSize; +// $ExpectType number +formidableErrors.biggerThanMaxFileSize; +// $ExpectType number +formidableErrors.noEmptyFiles; +// $ExpectType number +formidableErrors.missingContentType; +// $ExpectType number +formidableErrors.malformedMultipart; +// $ExpectType number +formidableErrors.missingMultipartBoundary; +// $ExpectType number +formidableErrors.unknownTransferEncoding; +// $ExpectType number +formidableErrors.biggerThanTotalMaxFileSize; +// $ExpectType number +formidableErrors.pluginFailed; +// $ExpectType number +formidableErrors.cannotCreateDir; + +// $ExpectType FormidableError +new formidableErrors.default("invalid type", 0, 400); diff --git a/types/formidable/index.d.ts b/types/formidable/index.d.ts index 4a3be81f923c03..709bb1aee1b12b 100644 --- a/types/formidable/index.d.ts +++ b/types/formidable/index.d.ts @@ -309,6 +309,8 @@ declare namespace formidable { type EnabledPlugins = { [P in Plugin]: PluginFunction; }; + + type FormidableError = InstanceType; } declare const formidable: { diff --git a/types/formidable/package.json b/types/formidable/package.json index 9552c6483718f2..919ff399bfd62f 100644 --- a/types/formidable/package.json +++ b/types/formidable/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@types/formidable", - "version": "3.4.9999", + "version": "3.5.9999", "projects": [ "https://github.com/node-formidable/formidable" ],