import crypto from 'node:crypto'

if (typeof crypto.hash !== 'function') {
  crypto.hash = (algorithm, data, outputEncoding) => {
    const hash = crypto.createHash(algorithm)

    if (data instanceof ArrayBuffer) {
      hash.update(Buffer.from(data))
    } else if (ArrayBuffer.isView(data)) {
      hash.update(Buffer.from(data.buffer, data.byteOffset, data.byteLength))
    } else {
      hash.update(data)
    }

    return hash.digest(outputEncoding)
  }
}
