@ceramicnetwork/codecs
Version:
Ceramic Codecs
40 lines • 1.81 kB
JavaScript
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