meyfa/fs-adapters

View on GitHub
src/util/resolve-encoding.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
// DYNAMIC TYPING

export function resolveEncoding<E extends BufferEncoding> (options: E): E

export function resolveEncoding<E extends BufferEncoding> (options: { encoding: E }): E

export function resolveEncoding (options: { encoding?: null } | undefined | null): undefined

export function resolveEncoding (options: Record<any, any> | BufferEncoding | undefined | null): BufferEncoding | undefined

// IMPLEMENTATION

/**
 * Obtain the encoding from an options parameter, which can be either a string
 * or an object with the 'encoding' property.
 *
 * @param options The options parameter.
 * @returns The encoding, or undefined.
 */
export function resolveEncoding (options: Record<any, any> | BufferEncoding | undefined | null): BufferEncoding | undefined {
  if (typeof options === 'string') {
    return options
  }
  return options?.encoding ?? undefined
}