UNPKG

@ceramicnetwork/codecs

Version:

Ceramic Codecs

51 lines 1.77 kB
import { CommitID, StreamID } from '@ceramicnetwork/streamid'; import { EventType } from '@ceramicnetwork/common'; import { Type, refinement, string, sparse, array, optional, boolean } from 'codeco'; import { enumCodec } from './enum.js'; export function isStreamIdString(input) { try { StreamID.fromString(input); return true; } catch (err) { return false; } } export const streamIdString = refinement(string, isStreamIdString, 'StreamID-string'); export const streamIdAsString = new Type('StreamID-as-string', (input) => StreamID.isInstance(input), (input, context) => { try { return context.success(StreamID.fromString(input)); } catch { return context.failure(); } }, (streamId) => { return streamId.toString(); }); export const streamIdAsBytes = new Type('StreamID-as-bytes', (input) => StreamID.isInstance(input), (input, context) => { try { return context.success(StreamID.fromBytes(input)); } catch { return context.failure(); } }, (streamId) => streamId.bytes); export const commitIdAsString = new Type('CommitID-as-string', (input) => CommitID.isInstance(input), (input, context) => { try { return context.success(CommitID.fromString(input)); } catch { return context.failure(); } }, (commitId) => commitId.toString()); export const StreamMetadata = sparse({ controllers: array(string), model: optional(streamIdAsString), context: optional(streamIdAsString), family: optional(string), schema: optional(string), tags: optional(array(string)), forbidControllerChange: optional(boolean), }); export const EventTypeAsNumber = enumCodec('EventType', EventType); //# sourceMappingURL=stream.js.map