UNPKG

@didtools/siwx

Version:

Typescript library for Sign-In With X

31 lines (30 loc) 1.01 kB
import { domain } from './parsing/domain.js'; import { dateTime, nonce } from './parsing/siwx-message.js'; import { uri } from './parsing/uri.js'; import { StringTape, parseAll } from 'codeco/linear'; import { getOrThrow } from 'codeco'; export function toField(combinator) { const parser = parseAll(combinator); return function(input) { return getOrThrow(parser(new StringTape(input))); }; } export const toDomainString = toField(domain); export const toDateTimeString = toField(dateTime); export const toURIString = toField(uri); export function toNonEmptyString(input, name) { if (input) return input; throw new Error(`Expect non-empty string for "${name}" field`); } export function toVersionString(input) { if (String(input) !== '1') { throw new Error(`Invalid version string: ${input}`); } return '1'; } export function toChainIdString(input) { return String(input); } export function toNonceString(input) { return toField(nonce)(String(input)); }