UNPKG

@river-build/sdk

Version:

For more details, visit the following resources:

109 lines 3.82 kB
import { PersistedEventSchema, PersistedMiniblockSchema, } from '@river-build/proto'; import { bin_toHexString } from '@river-build/dlog'; import { create } from '@bufbuild/protobuf'; import { isDefined, logNever } from './check'; export function isPersistedEvent(event, direction) { if (!event.event) { return false; } switch (event.event.payload.case) { case 'channelPayload': return true; case 'dmChannelPayload': return true; case 'gdmChannelPayload': return true; case 'mediaPayload': return true; case 'userPayload': switch (event.event.payload.value.content.case) { case 'blockchainTransaction': return true; case 'receivedBlockchainTransaction': return true; default: return direction === 'forward' ? true : false; } case 'userSettingsPayload': return direction === 'forward' ? true : false; case 'miniblockHeader': return true; case 'userMetadataPayload': return direction === 'forward' ? true : false; case 'memberPayload': { switch (event.event.payload.value.content.case) { case 'keySolicitation': return direction === 'forward' ? true : false; case 'keyFulfillment': return direction === 'forward' ? true : false; case 'memberBlockchainTransaction': return true; case undefined: return false; default: return direction === 'forward' ? true : false; } } case 'spacePayload': return direction === 'forward' ? true : false; case 'userInboxPayload': return direction === 'forward' ? true : false; case undefined: return false; default: logNever(event.event.payload, `unsupported event payload ${event.event.payload}`); return false; } } export function persistedEventToParsedEvent(event) { if (!event.event) { return undefined; } return { event: event.event, hash: event.hash, hashStr: bin_toHexString(event.hash), signature: event.signature, creatorUserId: event.creatorUserId, }; } export function persistedMiniblockToParsedMiniblock(miniblock) { if (!miniblock.header) { return undefined; } return { hash: miniblock.hash, header: miniblock.header, events: miniblock.events.map(persistedEventToParsedEvent).filter(isDefined), }; } export function parsedMiniblockToPersistedMiniblock(miniblock, direction) { return create(PersistedMiniblockSchema, { hash: miniblock.hash, header: miniblock.header, events: miniblock.events .filter((event) => isPersistedEvent(event, direction)) .map(parsedEventToPersistedEvent), }); } function parsedEventToPersistedEvent(event) { return create(PersistedEventSchema, { event: event.event, hash: event.hash, signature: event.signature, creatorUserId: event.creatorUserId, }); } export function persistedSyncedStreamToParsedSyncedStream(streamId, stream) { if (!stream.syncCookie) { return undefined; } return { streamId, syncCookie: stream.syncCookie, lastSnapshotMiniblockNum: stream.lastSnapshotMiniblockNum, minipoolEvents: stream.minipoolEvents.map(persistedEventToParsedEvent).filter(isDefined), lastMiniblockNum: stream.lastMiniblockNum, }; } //# sourceMappingURL=streamUtils.js.map