/* ---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
* REQUIREMENT: This definition is dependent on the @types/node definition.
* Install with `npm install @types/node --save-dev`
*-------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------
* This file provides detailed typings for the public API of iconv-lite
*-------------------------------------------------------------------------------------------- */
import type Stream = require("stream")
import type { Encoding } from "../types/encodings"
declare namespace iconv {
export interface DecodeOptions {
/**
* Strip the Byte Order Mark (BOM) from the input,
* when decoding, if the codec is BOM-aware. @default true
*/
stripBOM?: boolean;
/** Override the default endianness for `UTF-16` and `UTF-32` decodings. */
defaultEncoding?: "utf16be" | "utf32be";
}
export interface EncodeOptions {
/**
* Add a Byte Order Mark (BOM) to the output, when encoding,
* if the codec is BOM-aware. @default false
*/
addBOM?: boolean;
/** Override the default endianness for `UTF-32` encoding. */
defaultEncoding?: "utf32be";
}
export interface EncoderStream {
write(str: string): Buffer;
end(): Buffer | undefined;
}
export interface DecoderStream {
write(buf: Buffer): string;
end(): string | undefined;
}
export interface Codec {
encoder: new (options?: EncodeOptions, codec?: Codec) => EncoderStream;
decoder: new (options?: DecodeOptions, codec?: Codec) => DecoderStream;
bomAware?: boolean;
[key: string]: any;
}
/** Encodes a `string` into a `Buffer`, using the provided `encoding`. */
export function encode (content: string, encoding: Encoding, options?: EncodeOptions): Buffer
/** Decodes a `Buffer` into a `string`, using the provided `encoding`. */
export function decode (buffer: Buffer | Uint8Array, encoding: Encoding, options?: DecodeOptions): string
/** Checks if a given encoding is supported by `iconv-lite`. */
export function encodingExists (encoding: string): encoding is Encoding
/** Legacy alias for {@link iconv.encode}. */
export const toEncoding: typeof iconv.encode
/** Legacy alias for {@link iconv.decode}. */
export const fromEncoding: typeof iconv.decode
/** Creates a stream that decodes binary data from a given `encoding` into strings. */
export function decodeStream (encoding: Encoding, options?: DecodeOptions): NodeJS.ReadWriteStream
/** Creates a stream that encodes strings into binary data in a given `encoding`. */
export function encodeStream (encoding: Encoding, options?: EncodeOptions): NodeJS.ReadWriteStream
/**
* Explicitly enable Streaming API in browser environments by passing in:
* ```js
* require('stream')
* ```
* @example iconv.enableStreamingAPI(require('stream'));
*/
export function enableStreamingAPI (stream_module: { Transform: typeof Stream.Transform }): void
/** Creates and returns a low-level encoder stream. */
export function getEncoder (encoding: Encoding, options?: EncodeOptions): EncoderStream
/** Creates and returns a low-level decoder stream. */
export function getDecoder (encoding: Encoding, options?: DecodeOptions): DecoderStream
/**
* Returns a codec object for the given `encoding`.
* @throws If the `encoding` is not recognized.
*/
export function getCodec (encoding: Encoding): Codec
/** Strips all non-alphanumeric characters and appended year from `encoding`. */
export function _canonicalizeEncoding (encoding: Encoding): string
/** A cache of all loaded encoding definitions. */
export let encodings: Record<
Encoding,
| string
| {
type: string;
[key: string]: any;
}
> | null
/** A cache of initialized codec objects. */
export let _codecDataCache: Record<string, Codec>
/** The character used for untranslatable `Unicode` characters. @default "�" */
export let defaultCharUnicode: string
/** The character used for untranslatable `single-byte` characters. @default "?" */
export let defaultCharSingleByte: string
/**
* Skip deprecation warning when strings are used instead of Buffers during decoding.
* Note: {@link iconv.decode} converts the string to Buffer regardless.
*/
export let skipDecodeWarning: boolean
/** @readonly Whether or not, Streaming API is enabled. */
export const supportsStreams: boolean
export type { iconv as Iconv, Encoding }
}
export = iconv