Skip to content

MultipartParser

Low-level parser for HTTP multipart/form-data bodies.

8 exports Added in v4.0.0 Source

Constructors

make

Added in v4.0.0 Source

Creates a streaming multipart parser.

Signature

declare const make: (options: Config) => Parser;

Errors

MultipartError type

Added in v4.0.0 Source

An error produced while parsing a multipart body.

Signature

type MultipartError =
  | {
      readonly _tag: "InvalidBoundary";
    }
  | {
      readonly _tag: "BadHeaders";
      readonly error: HeadersParser.Failure;
    }
  | {
      readonly _tag: "InvalidDisposition";
    }
  | {
      readonly _tag: "ReachedLimit";
      readonly limit: "MaxParts" | "MaxTotalSize" | "MaxPartSize" | "MaxFieldSize";
    }
  | {
      readonly _tag: "EndNotReached";
    };

Models

BaseConfig type

Added in v4.0.0 Source

Shared multipart parser configuration.

Signature

type BaseConfig = {
  readonly headers: Record<string, string>;
  readonly isFile?: (info: PartInfo) => boolean;
  readonly maxFieldSize?: number;
  readonly maxParts?: number;
  readonly maxPartSize?: number;
  readonly maxTotalSize?: number;
};

Config type

Added in v4.0.0 Source

Multipart parser configuration with event callbacks.

Signature

type Config = BaseConfig & {
  readonly onDone: () => void;
  readonly onError: (error: MultipartError) => void;
  readonly onField: (info: PartInfo, value: Uint8Array) => void;
  readonly onFile: (info: PartInfo) => (chunk: Uint8Array | null) => void;
};

Parser interface

Added in v4.0.0 Source

A streaming multipart parser.

Signature

interface Parser {
  readonly end: () => void;
  readonly write: (chunk: Uint8Array) => void;
}

PartInfo interface

Added in v4.0.0 Source

Metadata describing a multipart form part.

Signature

interface PartInfo {
  readonly contentDisposition: string;
  readonly contentDispositionParameters: Record<string, string>;
  readonly contentType: string;
  readonly contentTypeParameters: Record<string, string>;
  readonly filename?: string;
  readonly headers: Record<string, string | Array<string>>;
  readonly name: string;
}

Utilities

decodeField

Added in v4.0.0 Source

Decodes a multipart field using its declared character set.

Signature

declare const decodeField: (info: PartInfo, value: Uint8Array) => string;

Determines whether a multipart part should be treated as a file.

Signature

declare const defaultIsFile: (info: PartInfo) => boolean;