npm i @neumatter/utilitiesimport * as utilities from '@neumatter/utilities'
// use utilitiesutilities.getCasePattern(input: string): ByteViewutilities.applyCasePattern(input: string, pattern: ByteView): stringutilities.throwIfNotWithin<T extends any>(
  value: T,
  availableValues?: Array<T>
): voidutilities.throwIfNoInstanceOf<T extends any>(
  value: T,
  availableValues?: Array<typeof T>
): voidutilities.assertObject<T extends object>(
  input: T,
  paramName: string
): voidutilities.assertString(input: string, paramName: string): voidutilities.assertFunction(input: Function, paramName: string): voidutilities.assertNumber(input: number, paramName: string): voidutilities.assertFiniteNumber(input: number, paramName: string): voidutilities.getObjectOption<O extends object, T>(
  opts: O,
  prop: keyof O,
  values?: Array<any>,
  fallback: T
): Tutilities.getBooleanOption<O extends object>(
  opts: O,
  prop: keyof O,
  fallback: boolean
): booleanutilities.getStringOption<O extends object>(
  opts: O,
  prop: keyof O,
  values?: Array<string>,
  fallback: string
): stringutilities.defaultNumberOption(
  val: number,
  min: number,
  max: number,
  fallback: number
): numberutilities.getNumberOption<O extends object>(
  options: O,
  property: keyof O,
  minimum: number,
  maximum: number,
  fallback: number
): numberutilities.defaultIntegerOption(
  val: number,
  min: number,
  max: number,
  fallback: number
): numberutilities.getIntegerOption<O extends object>(
  options: O,
  property: keyof O,
  minimum: number,
  maximum: number,
  fallback: number
): number