UNPKG

@ceramicnetwork/codecs

Version:

Ceramic Codecs

40 lines 1.81 kB
import { type, string, number, sparse, optional, literal, union, refinement, array, } from 'codeco'; import { carAsUint8Array, cidAsString } from './ipld.js'; import { streamIdAsString } from './stream.js'; import { uint8ArrayAsBase64 } from './binary.js'; import { dateAsUnix } from './date.js'; import { AnchorRequestStatusName } from '@ceramicnetwork/common'; export const AnchorCommitPresentation = sparse({ cid: string.pipe(cidAsString), }, 'AnchorCommitPresentation'); const NotCompleteStatusName = union([ literal(AnchorRequestStatusName.PENDING), literal(AnchorRequestStatusName.PROCESSING), literal(AnchorRequestStatusName.FAILED), literal(AnchorRequestStatusName.READY), literal(AnchorRequestStatusName.REPLACED), ]); export const NotCompleteCASResponse = sparse({ id: string, status: NotCompleteStatusName, streamId: streamIdAsString, cid: cidAsString, message: string, createdAt: optional(number.pipe(dateAsUnix)), updatedAt: optional(number.pipe(dateAsUnix)), }, 'NotCompleteCASResponse'); export const CompleteCASResponse = sparse({ ...NotCompleteCASResponse.props, status: literal(AnchorRequestStatusName.COMPLETED), anchorCommit: AnchorCommitPresentation, witnessCar: optional(uint8ArrayAsBase64.pipe(carAsUint8Array)), }, 'CompleteCASResponse'); export const CASResponse = union([NotCompleteCASResponse, CompleteCASResponse], 'CASResponse'); export const ErrorResponse = type({ error: string, }, 'ErrorResponse'); export const CASResponseOrError = union([CASResponse, ErrorResponse], 'CASResponseOrError'); export const SupportedChainsResponse = type({ supportedChains: refinement(array(string), (chains) => chains.length === 1, 'supportedChains'), }, 'SupportedChainsResponse'); //# sourceMappingURL=anchor.js.map