@xylabs/hex
Version:
Base functionality used throughout XY Labs TypeScript/JavaScript libraries
24 lines (20 loc) • 782 B
text/typescript
import type { AssertConfig } from '../assert.ts'
import { assertError } from '../assert.ts'
import { hexFromHexString } from './from/index.ts'
import { isHex } from './is.ts'
import type { Hex } from './model.ts'
export function asHex(value: unknown): Hex | undefined
export function asHex(value: unknown, assert: AssertConfig): Hex
export function asHex(value: unknown, assert?: AssertConfig): Hex | undefined {
let stringValue: string | undefined = undefined
switch (typeof value) {
case 'string': {
stringValue = hexFromHexString(value)
break
}
default: {
return assertError(value, assert, `Unsupported type [${typeof value}]`)
}
}
return isHex(stringValue) ? stringValue : assertError(value, assert, `Value is not Hex [${value}]`)
}