UNPKG

coldsky

Version:

Library and the app for BlueSky

119 lines (106 loc) 2.85 kB
// @ts-check /** * @typedef {{ * shortDID: string, * uri: string, * placeholder?: boolean, * text: string | undefined, * facets: CompactFacet[] | undefined, * embeds: CompactEmbed[] | undefined, * quoting: string[] | undefined, * threadStart: string | undefined, * replyTo: string | undefined, * words: string[] | undefined, * repostedBy: string[] | undefined, * likedBy: string[] | undefined, * labels: Record<string, string> | undefined, * asOf: number | undefined * }} CompactPost */ /** * @param {any} obj * @returns {obj is CompactPost} */ export function isCompactPost(obj) { if (!obj) return false; if (typeof obj !== 'object') return false; return ( typeof obj.shortDID === 'string' && typeof obj.uri === 'string' && (obj.placeholder || typeof obj.text === 'string' || obj.embeds || obj.asOf) ); } /** * @typedef {{ * start: number, * length: number, * mention?: string, * url?: string, * tag?: string * }} CompactFacet */ /** * @typedef {{ * imgSrc: string | undefined, * aspectRatio: number | undefined, * url: string | undefined, * title: string | undefined, * description: string | undefined * }} CompactEmbed */ /** * @typedef {{ * shortDID: string, * handle: string | undefined, * displayName: string | undefined, * description: string | undefined, * avatar: string | undefined, * banner: string | undefined, * words: string[] | undefined, * followersCount: number | undefined, * followsCount: number | undefined, * postsCount: number | undefined, * history: CompactHistoryEntry[] | undefined, * asOf: number | undefined * }} CompactProfile */ /** * @typedef {{ * time: number, * shortHandle: string | undefined, * pds: string | undefined * }} CompactHistoryEntry */ /** * @typedef {{ * records: import('bski').FirehoseRecord[], * posts: CompactPost[], * profiles: CompactProfile[], * deletes: import('bski').FirehoseDeleteRecord[] | undefined, * errors: import('bski').FirehoseErrorRecord[] | undefined, * all: import('bski').FirehoseRecord[] * }} CompactFirehoseBlock */ /** * @typedef {{ * all: CompactPost[], * root: CompactPost, * current: CompactPost * }} CompactThreadPostSet */ /** * @typedef {CompactProfile & * Partial<Omit<import('fuse.js').default.FuseResult<any>, 'item'>> & { * searchWords?: string[] * }} MatchCompactProfile */ /** * @typedef {CompactPost & * Partial<Omit<import('fuse.js').default.FuseResult<any>, 'item'>> & { * searchWords?: string[] * }} MatchCompactPost */ export { defineCachedStore } from './cached-store'; export { defineStore } from './define-store'; export { defineCacheIndexedDBStore } from './define-cache-indexedDB-store'; export { breakIntoWords, detectWordStartsNormalized } from './capture-records/compact-post-words';