@didtools/siwx
Version:
Typescript library for Sign-In With X
31 lines (30 loc) • 1.01 kB
JavaScript
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));
}