@didtools/codecs
Version:
Common codecs for DID packages.
20 lines (19 loc) • 714 B
JavaScript
import { refinement, string } from 'codeco';
const PCT_ENCODED = '(?:%[0-9a-fA-F]{2})';
const ID_CHAR = `(?:[a-zA-Z0-9._-]|${PCT_ENCODED})`;
const METHOD = '([a-z0-9]+)';
const METHOD_ID = `((?:${ID_CHAR}*:)*(${ID_CHAR}+))`;
const DID_MATCHER = new RegExp(`^did:${METHOD}:${METHOD_ID}$`);
/**
* Verify if `input` is DID string, i.e. conforms to `did:method:id` format.
*/ export function isDIDString(input) {
return Boolean(input && input.match(DID_MATCHER));
}
/**
* Type cast `input` as `DIDString`.
*/ export function asDIDString(input) {
return input;
}
/**
* codeco codec for a vanilla DID string, i.e. `did:method:id`.
*/ export const didString = refinement(string, isDIDString, 'did-string');