UNPKG

@didtools/codecs

Version:
31 lines (30 loc) 1.18 kB
import { fromString, toString } from 'uint8arrays'; import { TrivialCodec, Type } from 'codeco'; /** * Check if the input is a JS `Uint8Array`. */ export function isUint8Array(input) { return input instanceof Uint8Array; } /** * codeco codec for JS `Uint8Array`. */ export const uint8array = new TrivialCodec('Uint8Array', isUint8Array); /** * Factory for codeco codec for Uint8Array as encoded string. */ export function createUint8ArrayAsString(encoding) { return new Type(`Uint8Array-as-${String(encoding)}`, isUint8Array, (input, context)=>{ try { return context.success(fromString(input, encoding)); } catch { return context.failure(); } }, (value)=>toString(value, encoding)); } /** * codeco codec for Uint8Array as base64-encoded string. */ export const uint8ArrayAsBase64 = createUint8ArrayAsString('base64'); /** * codeco codec for Uint8Array as base64pad-encoded string. */ export const uint8ArrayAsBase64pad = createUint8ArrayAsString('base64pad'); /** * codeco codec for Uint8Array as base64url-encoded string. */ export const uint8ArrayAsBase64url = createUint8ArrayAsString('base64url');