@singi-labs/sifa-sdk 0.19.46 → 0.19.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1827,7 +1827,36 @@ interface ActivityItem {
1827
1827
  */
1828
1828
  declare const STREAM_VERBS: readonly ["posted", "reposted", "published", "presented", "endorsed", "joined", "shipped", "reviewed", "created", "commented", "replied", "rsvped", "liked", "followed", "bookmarked", "registered", "annotated", "streamed", "wrote", "wasAt", "metWith", "supported", "verified", "received", "styledCharacter"];
1829
1829
  type StreamVerb = (typeof STREAM_VERBS)[number];
1830
- /** Zod enum for a {@link StreamVerb}, shared with the view-model schema. */
1830
+ interface ActivityVerbMap {
1831
+ version: string;
1832
+ updated: string;
1833
+ /** Verb returned for any collection not present in `verbs`. */
1834
+ defaultVerb: StreamVerb;
1835
+ /** Verb keyed by lexicon NSID. */
1836
+ verbs: Record<string, StreamVerb>;
1837
+ }
1838
+ /**
1839
+ * The verb map, keyed by lexicon NSID. Versioned independently from
1840
+ * `activity-tiers.json` so tier and verb evolve on their own cadence.
1841
+ */
1842
+ declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1843
+ /**
1844
+ * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1845
+ * or empty collections fall back to the map's `defaultVerb` (`created`).
1846
+ */
1847
+ declare function verbForCollection(collection: string): StreamVerb;
1848
+ /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1849
+ declare function getActivityVerbsVersion(): {
1850
+ version: string;
1851
+ updated: string;
1852
+ };
1853
+
1854
+ /**
1855
+ * Zod enum for a {@link StreamVerb}, shared with the view-model schema.
1856
+ *
1857
+ * Kept apart from `verbs.ts` so code that only maps collections to verbs does
1858
+ * not load zod.
1859
+ */
1831
1860
  declare const streamVerbSchema: z.ZodEnum<{
1832
1861
  verified: "verified";
1833
1862
  created: "created";
@@ -1855,29 +1884,6 @@ declare const streamVerbSchema: z.ZodEnum<{
1855
1884
  liked: "liked";
1856
1885
  followed: "followed";
1857
1886
  }>;
1858
- interface ActivityVerbMap {
1859
- version: string;
1860
- updated: string;
1861
- /** Verb returned for any collection not present in `verbs`. */
1862
- defaultVerb: StreamVerb;
1863
- /** Verb keyed by lexicon NSID. */
1864
- verbs: Record<string, StreamVerb>;
1865
- }
1866
- /**
1867
- * The verb map, keyed by lexicon NSID. Versioned independently from
1868
- * `activity-tiers.json` so tier and verb evolve on their own cadence.
1869
- */
1870
- declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1871
- /**
1872
- * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1873
- * or empty collections fall back to the map's `defaultVerb` (`created`).
1874
- */
1875
- declare function verbForCollection(collection: string): StreamVerb;
1876
- /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1877
- declare function getActivityVerbsVersion(): {
1878
- version: string;
1879
- updated: string;
1880
- };
1881
1887
 
1882
1888
  /**
1883
1889
  * The app a stream item originated from, resolved from the app registry.
@@ -2702,6 +2708,22 @@ interface DailyActivityCount {
2702
2708
  */
2703
2709
  declare function countRecentActivity(days: readonly DailyActivityCount[], windowDays: number, now?: Date): number;
2704
2710
 
2711
+ /**
2712
+ * The app to show when the default following feed comes back empty, or null.
2713
+ *
2714
+ * The default feed leaves Bluesky out, so a network that is quiet elsewhere
2715
+ * gets an empty page even when it is active on some app. Rather than show an
2716
+ * empty state, a client switches to the busiest app the network is active on.
2717
+ * Shared by sifa-web and sifa-app so both behave the same.
2718
+ */
2719
+ declare function followingFeedFallbackApp(feed: {
2720
+ items: readonly unknown[];
2721
+ apps?: readonly {
2722
+ id: string;
2723
+ count: number;
2724
+ }[];
2725
+ } | null): string | null;
2726
+
2705
2727
  /**
2706
2728
  * The AppView injects a synthetic entry with this id into a claimed profile's
2707
2729
  * `activeApps` so external consumers of the public profile data (e.g.
@@ -3105,4 +3127,4 @@ declare function roadmapIssueUrl(issue: number): string;
3105
3127
  */
3106
3128
  declare const SIFA_SDK_VERSION: string;
3107
3129
 
3108
- export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, AccountFacetMode, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, COURSE_ROLE_LABELS, COURSE_ROLE_OPTIONS, COURSE_ROLE_TAKEN, COURSE_ROLE_TAUGHT, COURSE_ROLE_TEACHING_ASSISTANT, type CardHealth, type CardHealthStrategy, type CollapseContributorsOptions, type CollapsedContributors, type CompanyFirmographics, type ContinentCode, type CourseRoleOption, type CsvRow, DATE_LOOKAHEAD_MONTHS, DIMENSIONS_MAX_SCORE, type DailyActivityCount, type DateLookaheadKind, type DimensionKey, type DimensionMap, type DisambiguationFields, type DisplayUrl, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EQF_LEVEL_LABELS, EQF_LEVEL_OPTIONS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, type EqfLevel, type EqfLevelOption, type FormatDisplayUrlOptions, type GroupPublicationVersionsOptions, INDUSTRY_LABELS, INDUSTRY_OPTIONS, INVESTMENT_ROLE_LABELS, INVESTMENT_ROLE_OPTIONS, INVESTMENT_STAGE_LABELS, INVESTMENT_STAGE_OPTIONS, INVESTMENT_STATUS_LABELS, INVESTMENT_STATUS_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvestmentOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, type LocationSegment, type LocationSegmentKind, type LocationSegmentsOptions, LocationValue, MIN_SKILLS, type MergedProfileSkill, ON_BEHALF_OF_EMPLOYMENT_TYPES, OPEN_TO_GROUP_LABELS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_LABELS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLICATION_TYPE_LABELS, PUBLICATION_TYPE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedEndorsementComment, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PersonalFacetContent, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryFlagCandidate, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, type ProfileHighlightSection, type ProfileHighlightStatus, type ProfileHighlightTile, type ProfileHighlightsInput, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type PublicationTypeOption, type PublicationVersionGroup, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, RelatedIdentifier, type RgbColor, type RoadmapItemMeta, SEARCH_FILTER_DEFS, SECTION_GROUPS, SECTION_LABELS, SELF_APP_ID, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SearchFilterControl, type SearchFilterDef, type SearchFilterOptionSource, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, type VersionablePublication, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countRecentActivity, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, excludeSelfApp, filterHidden, findIndustry, formatCompanyName, formatCredentialDateRange, formatDateRange, formatDisplayUrl, formatDistanceToNow, formatEventDate, formatIsoTitle, formatLocation, formatPositionDateRange, formatPresentationDuration, formatRelationship, formatRelativeTime, formatSingleDate, formatSpanDate, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getCourseRoleLabel, getDisplayLabel, getEducationLevelDisplay, getEmploymentTypeLabel, getEqfLevelLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabel, getIndustryLabelKey, getInvestmentRoleLabel, getInvestmentStageLabel, getInvestmentStatusLabel, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublicationTypeLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isOnBehalfOfApplicable, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isTeachingCourse, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
3130
+ export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, AccountFacetMode, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, COURSE_ROLE_LABELS, COURSE_ROLE_OPTIONS, COURSE_ROLE_TAKEN, COURSE_ROLE_TAUGHT, COURSE_ROLE_TEACHING_ASSISTANT, type CardHealth, type CardHealthStrategy, type CollapseContributorsOptions, type CollapsedContributors, type CompanyFirmographics, type ContinentCode, type CourseRoleOption, type CsvRow, DATE_LOOKAHEAD_MONTHS, DIMENSIONS_MAX_SCORE, type DailyActivityCount, type DateLookaheadKind, type DimensionKey, type DimensionMap, type DisambiguationFields, type DisplayUrl, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EQF_LEVEL_LABELS, EQF_LEVEL_OPTIONS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, type EqfLevel, type EqfLevelOption, type FormatDisplayUrlOptions, type GroupPublicationVersionsOptions, INDUSTRY_LABELS, INDUSTRY_OPTIONS, INVESTMENT_ROLE_LABELS, INVESTMENT_ROLE_OPTIONS, INVESTMENT_STAGE_LABELS, INVESTMENT_STAGE_OPTIONS, INVESTMENT_STATUS_LABELS, INVESTMENT_STATUS_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvestmentOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, type LocationSegment, type LocationSegmentKind, type LocationSegmentsOptions, LocationValue, MIN_SKILLS, type MergedProfileSkill, ON_BEHALF_OF_EMPLOYMENT_TYPES, OPEN_TO_GROUP_LABELS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_LABELS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLICATION_TYPE_LABELS, PUBLICATION_TYPE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedEndorsementComment, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PersonalFacetContent, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryFlagCandidate, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, type ProfileHighlightSection, type ProfileHighlightStatus, type ProfileHighlightTile, type ProfileHighlightsInput, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type PublicationTypeOption, type PublicationVersionGroup, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, RelatedIdentifier, type RgbColor, type RoadmapItemMeta, SEARCH_FILTER_DEFS, SECTION_GROUPS, SECTION_LABELS, SELF_APP_ID, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SearchFilterControl, type SearchFilterDef, type SearchFilterOptionSource, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, type VersionablePublication, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countRecentActivity, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, excludeSelfApp, filterHidden, findIndustry, followingFeedFallbackApp, formatCompanyName, formatCredentialDateRange, formatDateRange, formatDisplayUrl, formatDistanceToNow, formatEventDate, formatIsoTitle, formatLocation, formatPositionDateRange, formatPresentationDuration, formatRelationship, formatRelativeTime, formatSingleDate, formatSpanDate, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getCourseRoleLabel, getDisplayLabel, getEducationLevelDisplay, getEmploymentTypeLabel, getEqfLevelLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabel, getIndustryLabelKey, getInvestmentRoleLabel, getInvestmentStageLabel, getInvestmentStatusLabel, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublicationTypeLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isOnBehalfOfApplicable, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isTeachingCourse, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.d.ts CHANGED
@@ -1827,7 +1827,36 @@ interface ActivityItem {
1827
1827
  */
1828
1828
  declare const STREAM_VERBS: readonly ["posted", "reposted", "published", "presented", "endorsed", "joined", "shipped", "reviewed", "created", "commented", "replied", "rsvped", "liked", "followed", "bookmarked", "registered", "annotated", "streamed", "wrote", "wasAt", "metWith", "supported", "verified", "received", "styledCharacter"];
1829
1829
  type StreamVerb = (typeof STREAM_VERBS)[number];
1830
- /** Zod enum for a {@link StreamVerb}, shared with the view-model schema. */
1830
+ interface ActivityVerbMap {
1831
+ version: string;
1832
+ updated: string;
1833
+ /** Verb returned for any collection not present in `verbs`. */
1834
+ defaultVerb: StreamVerb;
1835
+ /** Verb keyed by lexicon NSID. */
1836
+ verbs: Record<string, StreamVerb>;
1837
+ }
1838
+ /**
1839
+ * The verb map, keyed by lexicon NSID. Versioned independently from
1840
+ * `activity-tiers.json` so tier and verb evolve on their own cadence.
1841
+ */
1842
+ declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1843
+ /**
1844
+ * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1845
+ * or empty collections fall back to the map's `defaultVerb` (`created`).
1846
+ */
1847
+ declare function verbForCollection(collection: string): StreamVerb;
1848
+ /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1849
+ declare function getActivityVerbsVersion(): {
1850
+ version: string;
1851
+ updated: string;
1852
+ };
1853
+
1854
+ /**
1855
+ * Zod enum for a {@link StreamVerb}, shared with the view-model schema.
1856
+ *
1857
+ * Kept apart from `verbs.ts` so code that only maps collections to verbs does
1858
+ * not load zod.
1859
+ */
1831
1860
  declare const streamVerbSchema: z.ZodEnum<{
1832
1861
  verified: "verified";
1833
1862
  created: "created";
@@ -1855,29 +1884,6 @@ declare const streamVerbSchema: z.ZodEnum<{
1855
1884
  liked: "liked";
1856
1885
  followed: "followed";
1857
1886
  }>;
1858
- interface ActivityVerbMap {
1859
- version: string;
1860
- updated: string;
1861
- /** Verb returned for any collection not present in `verbs`. */
1862
- defaultVerb: StreamVerb;
1863
- /** Verb keyed by lexicon NSID. */
1864
- verbs: Record<string, StreamVerb>;
1865
- }
1866
- /**
1867
- * The verb map, keyed by lexicon NSID. Versioned independently from
1868
- * `activity-tiers.json` so tier and verb evolve on their own cadence.
1869
- */
1870
- declare const ACTIVITY_VERBS: Readonly<ActivityVerbMap>;
1871
- /**
1872
- * Returns the {@link StreamVerb} for an AT Protocol collection NSID. Unknown
1873
- * or empty collections fall back to the map's `defaultVerb` (`created`).
1874
- */
1875
- declare function verbForCollection(collection: string): StreamVerb;
1876
- /** Verb-map version + updated date, for diagnostics and version-skew checks. */
1877
- declare function getActivityVerbsVersion(): {
1878
- version: string;
1879
- updated: string;
1880
- };
1881
1887
 
1882
1888
  /**
1883
1889
  * The app a stream item originated from, resolved from the app registry.
@@ -2702,6 +2708,22 @@ interface DailyActivityCount {
2702
2708
  */
2703
2709
  declare function countRecentActivity(days: readonly DailyActivityCount[], windowDays: number, now?: Date): number;
2704
2710
 
2711
+ /**
2712
+ * The app to show when the default following feed comes back empty, or null.
2713
+ *
2714
+ * The default feed leaves Bluesky out, so a network that is quiet elsewhere
2715
+ * gets an empty page even when it is active on some app. Rather than show an
2716
+ * empty state, a client switches to the busiest app the network is active on.
2717
+ * Shared by sifa-web and sifa-app so both behave the same.
2718
+ */
2719
+ declare function followingFeedFallbackApp(feed: {
2720
+ items: readonly unknown[];
2721
+ apps?: readonly {
2722
+ id: string;
2723
+ count: number;
2724
+ }[];
2725
+ } | null): string | null;
2726
+
2705
2727
  /**
2706
2728
  * The AppView injects a synthetic entry with this id into a claimed profile's
2707
2729
  * `activeApps` so external consumers of the public profile data (e.g.
@@ -3105,4 +3127,4 @@ declare function roadmapIssueUrl(issue: number): string;
3105
3127
  */
3106
3128
  declare const SIFA_SDK_VERSION: string;
3107
3129
 
3108
- export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, AccountFacetMode, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, COURSE_ROLE_LABELS, COURSE_ROLE_OPTIONS, COURSE_ROLE_TAKEN, COURSE_ROLE_TAUGHT, COURSE_ROLE_TEACHING_ASSISTANT, type CardHealth, type CardHealthStrategy, type CollapseContributorsOptions, type CollapsedContributors, type CompanyFirmographics, type ContinentCode, type CourseRoleOption, type CsvRow, DATE_LOOKAHEAD_MONTHS, DIMENSIONS_MAX_SCORE, type DailyActivityCount, type DateLookaheadKind, type DimensionKey, type DimensionMap, type DisambiguationFields, type DisplayUrl, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EQF_LEVEL_LABELS, EQF_LEVEL_OPTIONS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, type EqfLevel, type EqfLevelOption, type FormatDisplayUrlOptions, type GroupPublicationVersionsOptions, INDUSTRY_LABELS, INDUSTRY_OPTIONS, INVESTMENT_ROLE_LABELS, INVESTMENT_ROLE_OPTIONS, INVESTMENT_STAGE_LABELS, INVESTMENT_STAGE_OPTIONS, INVESTMENT_STATUS_LABELS, INVESTMENT_STATUS_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvestmentOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, type LocationSegment, type LocationSegmentKind, type LocationSegmentsOptions, LocationValue, MIN_SKILLS, type MergedProfileSkill, ON_BEHALF_OF_EMPLOYMENT_TYPES, OPEN_TO_GROUP_LABELS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_LABELS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLICATION_TYPE_LABELS, PUBLICATION_TYPE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedEndorsementComment, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PersonalFacetContent, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryFlagCandidate, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, type ProfileHighlightSection, type ProfileHighlightStatus, type ProfileHighlightTile, type ProfileHighlightsInput, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type PublicationTypeOption, type PublicationVersionGroup, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, RelatedIdentifier, type RgbColor, type RoadmapItemMeta, SEARCH_FILTER_DEFS, SECTION_GROUPS, SECTION_LABELS, SELF_APP_ID, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SearchFilterControl, type SearchFilterDef, type SearchFilterOptionSource, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, type VersionablePublication, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countRecentActivity, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, excludeSelfApp, filterHidden, findIndustry, formatCompanyName, formatCredentialDateRange, formatDateRange, formatDisplayUrl, formatDistanceToNow, formatEventDate, formatIsoTitle, formatLocation, formatPositionDateRange, formatPresentationDuration, formatRelationship, formatRelativeTime, formatSingleDate, formatSpanDate, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getCourseRoleLabel, getDisplayLabel, getEducationLevelDisplay, getEmploymentTypeLabel, getEqfLevelLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabel, getIndustryLabelKey, getInvestmentRoleLabel, getInvestmentStageLabel, getInvestmentStatusLabel, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublicationTypeLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isOnBehalfOfApplicable, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isTeachingCourse, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
3130
+ export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, AccountFacetMode, type AccountVerification, type ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, COURSE_ROLE_LABELS, COURSE_ROLE_OPTIONS, COURSE_ROLE_TAKEN, COURSE_ROLE_TAUGHT, COURSE_ROLE_TEACHING_ASSISTANT, type CardHealth, type CardHealthStrategy, type CollapseContributorsOptions, type CollapsedContributors, type CompanyFirmographics, type ContinentCode, type CourseRoleOption, type CsvRow, DATE_LOOKAHEAD_MONTHS, DIMENSIONS_MAX_SCORE, type DailyActivityCount, type DateLookaheadKind, type DimensionKey, type DimensionMap, type DisambiguationFields, type DisplayUrl, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EQF_LEVEL_LABELS, EQF_LEVEL_OPTIONS, type EmbedResult, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, type EqfLevel, type EqfLevelOption, type FormatDisplayUrlOptions, type GroupPublicationVersionsOptions, INDUSTRY_LABELS, INDUSTRY_OPTIONS, INVESTMENT_ROLE_LABELS, INVESTMENT_ROLE_OPTIONS, INVESTMENT_STAGE_LABELS, INVESTMENT_STAGE_OPTIONS, INVESTMENT_STATUS_LABELS, INVESTMENT_STATUS_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvestmentOption, type InvolvementGroup, type InvolvementKindOption, type KnownAppId, type LexiconEntry, type LocationSegment, type LocationSegmentKind, type LocationSegmentsOptions, LocationValue, MIN_SKILLS, type MergedProfileSkill, ON_BEHALF_OF_EMPLOYMENT_TYPES, OPEN_TO_GROUP_LABELS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_LABELS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLICATION_TYPE_LABELS, PUBLICATION_TYPE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedEndorsementComment, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PersonalFacetContent, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryFlagCandidate, type PrimaryPositionCandidate, Profile, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, type ProfileHighlightSection, type ProfileHighlightStatus, type ProfileHighlightTile, type ProfileHighlightsInput, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type PublicationTypeOption, type PublicationVersionGroup, type Publisher, ROADMAP_ISSUES_REPO, ROADMAP_ITEM_META, RelatedIdentifier, type RgbColor, type RoadmapItemMeta, SEARCH_FILTER_DEFS, SECTION_GROUPS, SECTION_LABELS, SELF_APP_ID, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, type SearchFilterControl, type SearchFilterDef, type SearchFilterOptionSource, type SectionGroupId, type SectionId, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardSubject, type StreamCardVM, type StreamExternalLink, type StreamGeo, type StreamMedia, type StreamMediaBase, type StreamMediaBlob, type StreamMediaResolved, type StreamRichSegment, type StreamSource, type StreamTheme, type StreamVerb, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, type VersionablePublication, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countRecentActivity, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, excludeSelfApp, filterHidden, findIndustry, followingFeedFallbackApp, formatCompanyName, formatCredentialDateRange, formatDateRange, formatDisplayUrl, formatDistanceToNow, formatEventDate, formatIsoTitle, formatLocation, formatPositionDateRange, formatPresentationDuration, formatRelationship, formatRelativeTime, formatSingleDate, formatSpanDate, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getCourseRoleLabel, getDisplayLabel, getEducationLevelDisplay, getEmploymentTypeLabel, getEqfLevelLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabel, getIndustryLabelKey, getInvestmentRoleLabel, getInvestmentStageLabel, getInvestmentStatusLabel, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublicationTypeLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isOnBehalfOfApplicable, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isTeachingCourse, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.js CHANGED
@@ -240,6 +240,7 @@ import {
240
240
  isCompanyPageIndexable,
241
241
  COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,
242
242
  countRecentActivity,
243
+ followingFeedFallbackApp,
243
244
  SELF_APP_ID,
244
245
  excludeSelfApp,
245
246
  actorShowsIdentity,
@@ -346,7 +347,7 @@ import {
346
347
  roadmapIssueUrl
347
348
  } from "./roadmap/index.js";
348
349
  import { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from "./repo/index.js";
349
- var SIFA_SDK_VERSION = "0.19.46";
350
+ var SIFA_SDK_VERSION = "0.19.48";
350
351
  export {
351
352
  ACTIVITY_TIERS,
352
353
  ACTIVITY_VERBS,
@@ -505,6 +506,7 @@ export {
505
506
  externalRecordRefSchema,
506
507
  filterHidden,
507
508
  findIndustry,
509
+ followingFeedFallbackApp,
508
510
  formatCompanyName,
509
511
  formatCredentialDateRange,
510
512
  formatDateRange,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.\n *\n * Pre-1.0: the public API is unstable and may change in any minor release.\n *\n * @see https://github.com/singi-labs/sifa-sdk\n */\n\ndeclare const __SIFA_SDK_VERSION__: string;\n\nexport const SIFA_SDK_VERSION: string = __SIFA_SDK_VERSION__;\n\nexport type {\n ActiveApp,\n Endorsement,\n EndorsementData,\n ExternalAccount,\n ExternalAccountKeytraceClaim,\n FeedItem,\n LanguageProficiency,\n LocationValue,\n OrgAddressView,\n OrgFloorVerdict,\n OrgLinkView,\n OrgProfileView,\n RecognizedEntity,\n PdsProviderInfo,\n PresentationLinkView,\n Profile,\n ProfileCertification,\n ProfileCourse,\n ProfileEducation,\n ProfileHonor,\n ProfileIndustry,\n ProfileInvestment,\n ProfileInvestmentLink,\n ProfileInvolvement,\n ProfileInvolvementLink,\n ProfileLanguage,\n ProfileLocation,\n ProfileOverrideSource,\n ProfilePosition,\n ProfilePresentation,\n CoSpeaker,\n ActorCard,\n AuthorSuggestion,\n ProjectMemberCard,\n ProjectRole,\n ProfilePresentationDelivery,\n ProfileProject,\n ProfilePublication,\n ProfileSkill,\n ProfileVolunteering,\n PublicationContributor,\n RelatedIdentifier,\n SkillRef,\n SkillSuggestion,\n TrustStat,\n VerifiedAccount,\n AccountFacetMode,\n} from './types/index.js';\n\n// Aggregated public profile view (`id.sifa.getProfileView` XRPC query).\nexport type {\n ProfileView,\n IndustryDomain,\n ProfileLocationView,\n PositionView,\n EducationView,\n SkillView,\n CertificationView,\n ProjectView,\n VolunteeringView,\n InvolvementView,\n InvolvementLinkView,\n PublicationView,\n ContributorView,\n CourseView,\n DurationView,\n CoSpeakerView,\n ProjectMemberView,\n PresentationDeliveryView,\n PresentationView,\n HonorView,\n LanguageView,\n ExternalAccountView,\n ActiveAppView,\n AtfundLinkView,\n} from './types/profile-view.js';\n\nexport { PROJECT_ROLES } from './types/index.js';\n\nexport {\n ACTIVITY_TIERS,\n APP_CATEGORIES,\n APP_CATEGORY_IDS,\n APP_CATEGORY_MAP,\n CATEGORY_LABELS,\n normalizeSkillCategory,\n CATEGORY_ORDER,\n CONTINENTS,\n COMPANY_OPTIONAL_EMPLOYMENT_TYPES,\n COUNTRIES,\n CALENDAR_EVENT_MODE_LABELS,\n CALENDAR_EVENT_STATUS_LABELS,\n PRESENTATION_LINK_TYPE_LABELS,\n PRESENTATION_LINK_TYPE_OPTIONS,\n PRESENTATION_ROLE_LABELS,\n PRESENTATION_ROLE_OPTIONS,\n PUBLICATION_TYPE_LABELS,\n PUBLICATION_TYPE_OPTIONS,\n EMPLOYMENT_TYPE_GROUPS,\n INVESTMENT_ROLE_OPTIONS,\n INVESTMENT_ROLE_LABELS,\n INVESTMENT_STAGE_OPTIONS,\n INVESTMENT_STAGE_LABELS,\n INVESTMENT_STATUS_OPTIONS,\n INVESTMENT_STATUS_LABELS,\n ON_BEHALF_OF_EMPLOYMENT_TYPES,\n EMPLOYMENT_TYPE_LABELS,\n INDUSTRY_OPTIONS,\n INDUSTRY_LABELS,\n getIndustryLabel,\n SEARCH_FILTER_DEFS,\n OPEN_TO_OPTIONS,\n OPEN_TO_TOKEN_LABELS,\n OPEN_TO_GROUP_LABELS,\n OPEN_TO_TOKENS,\n OPEN_TO_TOKEN_TO_VALUE,\n OPEN_TO_VALUE_TO_TOKEN,\n categoryForApp,\n findIndustry,\n getActivityTaxonomyVersion,\n getActivityTier,\n isRelationalActivity,\n getCalendarEventModeLabel,\n getCalendarEventStatusLabel,\n getPresentationLinkTypeLabel,\n getPresentationRoleLabel,\n getPublicationTypeLabel,\n getAppCategoryIcon,\n getEmploymentTypeLabel,\n isCompanyRequired,\n getInvestmentRoleLabel,\n getInvestmentStageLabel,\n getInvestmentStatusLabel,\n isOnBehalfOfApplicable,\n getIndustryLabelKey,\n getLexiconEntry,\n getOpenToLabelKey,\n normalizeOpenTo,\n openToTokenToValue,\n openToValueToToken,\n getTierMeta,\n getWorkplaceTypeLabel,\n normalizeWorkplaceTypes,\n isAppCategory,\n isKnownAppId,\n PLATFORM_LABELS,\n PLATFORM_OPTIONS,\n SKILL_CATEGORIES,\n WORKPLACE_TYPE_LABELS,\n WORKPLACE_TYPE_OPTIONS,\n dedupeSkills,\n getContinent,\n getFaviconUrl,\n getPlatformLabel,\n groupSkillsByCategory,\n groupSkillsBySubCategory,\n groupSkillsForDisplay,\n isKnownPlatform,\n normalizePlatformId,\n type ActivityTaxonomy,\n type ActivityTier,\n type AppCategoryId,\n type ContinentCode,\n type EmploymentTypeGroup,\n type EmploymentTypeOption,\n type InvestmentOption,\n type IndustryOption,\n type KnownAppId,\n type LexiconEntry,\n type MergedProfileSkill,\n type PresentationLinkTypeOption,\n type PresentationRoleOption,\n type PublicationTypeOption,\n INVOLVEMENT_KIND_OPTIONS,\n INVOLVEMENT_KIND_LABELS,\n INVOLVEMENT_KIND_HEADINGS,\n getInvolvementKindHeading,\n getInvolvementKindLabel,\n COURSE_ROLE_OPTIONS,\n COURSE_ROLE_LABELS,\n COURSE_ROLE_TAKEN,\n COURSE_ROLE_TAUGHT,\n COURSE_ROLE_TEACHING_ASSISTANT,\n getCourseRoleLabel,\n isTeachingCourse,\n splitCoursesByRole,\n type CourseRoleOption,\n EQF_LEVEL_LABELS,\n EQF_LEVEL_OPTIONS,\n getEducationLevelDisplay,\n getEqfLevelLabel,\n readEqfLevel,\n suggestEqfLevelFromDegree,\n type EqfLevel,\n type EqfLevelOption,\n ARTIFACT_LINK_KIND_OPTIONS,\n ARTIFACT_LINK_KIND_LABELS,\n getArtifactLinkKindLabel,\n VERIFICATION_PROVIDERS,\n getVerificationProvider,\n isKnownVerificationProvider,\n resolveVerifierProvider,\n primaryVerification,\n type AccountVerification,\n type VerificationProvider,\n type VerificationProviderId,\n type VerificationSource,\n type InvolvementKindOption,\n type ArtifactLinkKindOption,\n type OpenToGroup,\n type OpenToOption,\n type PlatformId,\n type SearchFilterControl,\n type SearchFilterDef,\n type SearchFilterOptionSource,\n type SkillCategory,\n type TierMeta,\n type WorkplaceTypeOption,\n} from './taxonomy/index.js';\n\nexport {\n certDateExtractor,\n contrastRatio,\n countryCodeToFlag,\n dateRangeExtractor,\n detectPdsProvider,\n formatCompanyName,\n formatCredentialDateRange,\n formatDateRange,\n formatPositionDateRange,\n formatDisplayUrl,\n formatDistanceToNow,\n formatIsoTitle,\n formatLocation,\n formatPresentationDuration,\n formatRelativeTime,\n formatTimelineDate,\n getDisplayLabel,\n getHandleStem,\n getPdsDisplayName,\n isValidRgbColor,\n lexiconDateExtractor,\n limitCombiningMarks,\n locationSegments,\n meetsContrastAA,\n normalizeCompanyKey,\n normalizeLegalForm,\n parseLocationString,\n parseTalkRkey,\n pdsProviderFromApi,\n relativeLuminance,\n resolveEmbed,\n youtubeVideoId,\n youtubeThumbnailUrl,\n rgbToString,\n sanitizeDisplayText,\n normalizeDoi,\n formatRelationship,\n parseEndorsementComment,\n sanitizeHandleInput,\n singleDateExtractor,\n slugifyTitle,\n buildMetaDescription,\n buildTalkSlug,\n sortByDateDesc,\n summarizePresentationDeliveries,\n truncateGraphemes,\n collapseContributors,\n type CollapseContributorsOptions,\n type CollapsedContributors,\n type EmbedResult,\n type ParsedEndorsementComment,\n type PdsProvider,\n type PresentationDeliverySummary,\n type RgbColor,\n} from './format/index.js';\n\nexport {\n parsePresentationDuration,\n durationFromMinutes,\n parseIntendedAudiences,\n stripHtmlToText,\n normalizePresentationRole,\n normalizePresentationMode,\n presentationCsvRowToRecord,\n presentationDeliveryCsvRowToRecord,\n type CsvRow,\n type ParsedPresentation,\n type ParsedDelivery,\n} from './import/index.js';\n\nexport {\n ACTIVITY_VISIBILITY_RULES,\n ADULT_CONTENT_LABELS,\n APP_URL_PATTERNS,\n COLLECTION_TO_APP,\n getAppIdForCollection,\n hasAdultContent,\n isVisibleActivityItem,\n resolveCardHealth,\n resolveCardUrl,\n type ActivityItemForUrl,\n type ActivityLabel,\n type AdultContentLabel,\n type AppUrlPatterns,\n type CardHealth,\n type CardHealthStrategy,\n} from './cards/index.js';\n\nexport {\n PUBLISHERS,\n STANDARD_PUBLISHER_ID,\n getPublisherById,\n getPublisherByHost,\n getPublisherFromSiteUrl,\n type Publisher,\n} from './publishers/index.js';\n\n// Shared activity-stream view-model: the normalized, framework-free feed both\n// sifa-web (React cards) and page.sifa.id (string-HTML renderer) consume.\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n streamVerbSchema,\n verbForCollection,\n streamAddressSchema,\n streamAuthorSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n isSelfAuthoredRich,\n renderAsLine,\n toStreamCardVM,\n toStreamCardVMs,\n type ActivityItem,\n type ActivityVerbMap,\n type StreamAddress,\n type StreamAuthor,\n type StreamCardBody,\n type StreamCardSubject,\n type StreamCardVM,\n type StreamExternalLink,\n type StreamGeo,\n type StreamMedia,\n type StreamMediaBase,\n type StreamMediaBlob,\n type StreamMediaResolved,\n type StreamRichSegment,\n type StreamSource,\n type StreamTheme,\n type StreamVerb,\n type ToStreamCardVMOptions,\n} from './stream/index.js';\n\nexport {\n COMPLETENESS_MAX_SCORE,\n completenessPercent,\n completenessScore,\n DIMENSIONS_MAX_SCORE,\n MIN_SKILLS,\n countFilledDimensions,\n dimensionsFromInputs,\n getFilledDimensionsMap,\n pickPrimaryPosition,\n DATE_LOOKAHEAD_MONTHS,\n isBeyondLookahead,\n isUpcomingStart,\n type DateLookaheadKind,\n pickPrimaryFlagged,\n summarizeProfileView,\n profileToDimensionInputs,\n isPseudoEmployer,\n looksLikeDomain,\n entityDisambiguationLabel,\n searchResultDisambiguation,\n entityResultKey,\n classifyEntityRef,\n isLinked,\n ENTITY_REF_ANCHORS,\n qualifiesAsOrg,\n isRegistrableDomainHandle,\n hasPersonalProfileContent,\n rendersPersonalProfile,\n rendersCompanyProfile,\n resolveAccountFacetMode,\n isCompanyPageIndexable,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n countRecentActivity,\n SELF_APP_ID,\n excludeSelfApp,\n actorShowsIdentity,\n type DailyActivityCount,\n type AppWithId,\n type DimensionKey,\n type DimensionMap,\n type PrimaryPositionCandidate,\n type PrimaryFlagCandidate,\n type ProfileSummary,\n type SummarizeProfileViewOptions,\n type ProfileCompletion,\n type ProfileDimensionInputs,\n type DisambiguationFields,\n type EntityRefAnchor,\n type CompanyFirmographics,\n type PersonalFacetContent,\n resolveAgentRef,\n type AgentRefFlat,\n} from './logic/index.js';\n\n// Profile section model: which sections render, in what order, their nav\n// grouping, per-section sorts, and involvement grouping. Shared by the HTML\n// profile page, the Markdown/DOCX/print exports, and the personal-site renderer.\nexport {\n ALL_SECTIONS,\n INVOLVEMENT_HEADING_ORDER,\n SECTION_GROUPS,\n SECTION_LABELS,\n filterHidden,\n getVisibleSectionIds,\n groupInvolvementByHeading,\n groupPublicationVersions,\n type GroupPublicationVersionsOptions,\n type PublicationVersionGroup,\n type VersionablePublication,\n hoistPrimary,\n isRoleLineRedundant,\n isSectionPopulated,\n sortByActiveDateRange,\n sortCertifications,\n sortEducation,\n sortHonors,\n sortLanguages,\n sortLanguagesByProficiency,\n sortPositions,\n sortProjects,\n sortPublications,\n visibleItems,\n type InvolvementGroup,\n type SectionGroupId,\n type SectionId,\n} from './profile/index.js';\n\n// Profile \"Highlights\" block: selection + labeling of the one ongoing (or\n// most-recent) record per section. Shared by the sifa-web profile page and the\n// personal-site renderer so the two surfaces never diverge on what's featured.\nexport {\n buildProfileHighlights,\n shouldRenderHighlights,\n formatSpanDate,\n formatSingleDate,\n formatEventDate,\n type ProfileHighlightsInput,\n type ProfileHighlightSection,\n type ProfileHighlightStatus,\n type ProfileHighlightTile,\n type BuildProfileHighlightsOptions,\n} from './profile/index.js';\n\nexport {\n AtmosphereFeedItemSchema,\n BlobRefSchema,\n EndorsementConfirmationRecordSchema,\n EndorsementRecordSchema,\n OrgProfileRecordSchema,\n OrgEmploymentAttestationRecordSchema,\n EntitySearchResultSchema,\n EntitySearchResponseSchema,\n EntitySelectRequestSchema,\n EntitySelectResponseSchema,\n EntityImportSearchResponseSchema,\n EntityResolveDomainRequestSchema,\n EntityResolveDomainResponseSchema,\n EntityMintDomainResponseSchema,\n FEATURE_FLAGS,\n FeatureAllowlistEntrySchema,\n FeedActorSchema,\n FollowFeedItemSchema,\n FollowFeedPageSchema,\n FollowProfilePageSchema,\n FollowProfileSchema,\n GraphFollowRecordSchema,\n PresentationDurationSchema,\n PresentationLinkSchema,\n ProfileCertificationRecordSchema,\n ProfileCourseRecordSchema,\n ProfileEducationRecordSchema,\n ProfileExternalAccountRecordSchema,\n ProfileHonorRecordSchema,\n ProfileInvestmentRecordSchema,\n InvestmentAmountSchema,\n PROFILE_INVESTMENT_NSID,\n ProfileInvolvementRecordSchema,\n ArtifactLinkSchema,\n PROFILE_INVOLVEMENT_NSID,\n ProfileLanguageRecordSchema,\n ProfilePositionRecordSchema,\n ProfilePresentationDeliveryRecordSchema,\n ProfilePresentationRecordSchema,\n ProfileProjectRecordSchema,\n ProfilePublicationRecordSchema,\n RelatedIdentifierSchema,\n ProfileSelfRecordSchema,\n ProfileSkillRecordSchema,\n ProfileVolunteeringRecordSchema,\n PublicationAuthorSchema,\n SifaFeedItemSchema,\n atUriSchema,\n cidSchema,\n datetimeSchema,\n decodeFeedCursor,\n didSchema,\n encodeFeedCursor,\n externalRecordRefSchema,\n languageTagSchema,\n makeGraphFollowRecordSchema,\n maxGraphemes,\n partialDateSchema,\n selfLabelsSchema,\n skillRefSchema,\n strongRefSchema,\n uriSchema,\n type AtmosphereFeedItem,\n type BlobRef,\n type EndorsementConfirmationRecord,\n type EndorsementRecord,\n type OrgProfileRecord,\n type OrgEmploymentAttestationRecord,\n type EntitySearchResult,\n type EntitySearchResponse,\n type EntitySelectRequest,\n type EntitySelectResponse,\n type EntityImportSearchResponse,\n type EntityResolveDomainRequest,\n type EntityResolveDomainResponse,\n type EntityMintDomainResponse,\n type FeatureAllowlistEntry,\n type FeatureFlag,\n type FeedActor,\n type FeedCursor,\n type FollowFeedItem,\n type FollowFeedPage,\n type FollowProfileItem,\n type FollowProfilePage,\n type GraphFollowRecord,\n type SifaFeedItem,\n type ProfileCertificationRecord,\n type ProfileCourseRecord,\n type ProfileEducationRecord,\n type ProfileExternalAccountRecord,\n type ProfileHonorRecord,\n type ProfileInvolvementRecord,\n type ArtifactLink,\n type ProfileLanguageRecord,\n type PresentationDuration,\n type PresentationLink,\n type ProfilePositionRecord,\n type ProfilePresentationDeliveryRecord,\n type ProfilePresentationRecord,\n type ProfileProjectRecord,\n type ProfilePublicationRecord,\n type ProfileSelfRecord,\n type ProfileSkillRecord,\n type ProfileVolunteeringRecord,\n type PublicationAuthor,\n agentRefSchema,\n type AgentRef,\n} from './schemas/index.js';\n\nexport {\n ROADMAP_ITEM_META,\n ROADMAP_ISSUES_REPO,\n roadmapIssueUrl,\n type RoadmapItemMeta,\n} from './roadmap/index.js';\n\nexport type {\n LocationSegment,\n LocationSegmentKind,\n LocationSegmentsOptions,\n} from './format/index.js';\n\nexport type { DisplayUrl, FormatDisplayUrlOptions, UrlPathPolicy } from './format/index.js';\n\nexport { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from './repo/index.js';\nexport type {\n RepoCollectionGroup,\n RepoDeleteOutcome,\n RepoDeleteRecordResult,\n RepoDeleteResult,\n RepoGroupDefinition,\n RepoGroupId,\n RepoInventory,\n RepoRecordLabel,\n RepoRecordSummary,\n} from './repo/index.js';\n"],"mappings":";AA0FA,SAAS,qBAAqB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAeA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAgBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAmBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAeA;AAAA,OAEK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA4CA;AAAA,OAEK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAUP,SAAS,kBAAkB,oBAAoB,8BAA8B;AAjlBtE,IAAM,mBAA2B;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.\n *\n * Pre-1.0: the public API is unstable and may change in any minor release.\n *\n * @see https://github.com/singi-labs/sifa-sdk\n */\n\ndeclare const __SIFA_SDK_VERSION__: string;\n\nexport const SIFA_SDK_VERSION: string = __SIFA_SDK_VERSION__;\n\nexport type {\n ActiveApp,\n Endorsement,\n EndorsementData,\n ExternalAccount,\n ExternalAccountKeytraceClaim,\n FeedItem,\n LanguageProficiency,\n LocationValue,\n OrgAddressView,\n OrgFloorVerdict,\n OrgLinkView,\n OrgProfileView,\n RecognizedEntity,\n PdsProviderInfo,\n PresentationLinkView,\n Profile,\n ProfileCertification,\n ProfileCourse,\n ProfileEducation,\n ProfileHonor,\n ProfileIndustry,\n ProfileInvestment,\n ProfileInvestmentLink,\n ProfileInvolvement,\n ProfileInvolvementLink,\n ProfileLanguage,\n ProfileLocation,\n ProfileOverrideSource,\n ProfilePosition,\n ProfilePresentation,\n CoSpeaker,\n ActorCard,\n AuthorSuggestion,\n ProjectMemberCard,\n ProjectRole,\n ProfilePresentationDelivery,\n ProfileProject,\n ProfilePublication,\n ProfileSkill,\n ProfileVolunteering,\n PublicationContributor,\n RelatedIdentifier,\n SkillRef,\n SkillSuggestion,\n TrustStat,\n VerifiedAccount,\n AccountFacetMode,\n} from './types/index.js';\n\n// Aggregated public profile view (`id.sifa.getProfileView` XRPC query).\nexport type {\n ProfileView,\n IndustryDomain,\n ProfileLocationView,\n PositionView,\n EducationView,\n SkillView,\n CertificationView,\n ProjectView,\n VolunteeringView,\n InvolvementView,\n InvolvementLinkView,\n PublicationView,\n ContributorView,\n CourseView,\n DurationView,\n CoSpeakerView,\n ProjectMemberView,\n PresentationDeliveryView,\n PresentationView,\n HonorView,\n LanguageView,\n ExternalAccountView,\n ActiveAppView,\n AtfundLinkView,\n} from './types/profile-view.js';\n\nexport { PROJECT_ROLES } from './types/index.js';\n\nexport {\n ACTIVITY_TIERS,\n APP_CATEGORIES,\n APP_CATEGORY_IDS,\n APP_CATEGORY_MAP,\n CATEGORY_LABELS,\n normalizeSkillCategory,\n CATEGORY_ORDER,\n CONTINENTS,\n COMPANY_OPTIONAL_EMPLOYMENT_TYPES,\n COUNTRIES,\n CALENDAR_EVENT_MODE_LABELS,\n CALENDAR_EVENT_STATUS_LABELS,\n PRESENTATION_LINK_TYPE_LABELS,\n PRESENTATION_LINK_TYPE_OPTIONS,\n PRESENTATION_ROLE_LABELS,\n PRESENTATION_ROLE_OPTIONS,\n PUBLICATION_TYPE_LABELS,\n PUBLICATION_TYPE_OPTIONS,\n EMPLOYMENT_TYPE_GROUPS,\n INVESTMENT_ROLE_OPTIONS,\n INVESTMENT_ROLE_LABELS,\n INVESTMENT_STAGE_OPTIONS,\n INVESTMENT_STAGE_LABELS,\n INVESTMENT_STATUS_OPTIONS,\n INVESTMENT_STATUS_LABELS,\n ON_BEHALF_OF_EMPLOYMENT_TYPES,\n EMPLOYMENT_TYPE_LABELS,\n INDUSTRY_OPTIONS,\n INDUSTRY_LABELS,\n getIndustryLabel,\n SEARCH_FILTER_DEFS,\n OPEN_TO_OPTIONS,\n OPEN_TO_TOKEN_LABELS,\n OPEN_TO_GROUP_LABELS,\n OPEN_TO_TOKENS,\n OPEN_TO_TOKEN_TO_VALUE,\n OPEN_TO_VALUE_TO_TOKEN,\n categoryForApp,\n findIndustry,\n getActivityTaxonomyVersion,\n getActivityTier,\n isRelationalActivity,\n getCalendarEventModeLabel,\n getCalendarEventStatusLabel,\n getPresentationLinkTypeLabel,\n getPresentationRoleLabel,\n getPublicationTypeLabel,\n getAppCategoryIcon,\n getEmploymentTypeLabel,\n isCompanyRequired,\n getInvestmentRoleLabel,\n getInvestmentStageLabel,\n getInvestmentStatusLabel,\n isOnBehalfOfApplicable,\n getIndustryLabelKey,\n getLexiconEntry,\n getOpenToLabelKey,\n normalizeOpenTo,\n openToTokenToValue,\n openToValueToToken,\n getTierMeta,\n getWorkplaceTypeLabel,\n normalizeWorkplaceTypes,\n isAppCategory,\n isKnownAppId,\n PLATFORM_LABELS,\n PLATFORM_OPTIONS,\n SKILL_CATEGORIES,\n WORKPLACE_TYPE_LABELS,\n WORKPLACE_TYPE_OPTIONS,\n dedupeSkills,\n getContinent,\n getFaviconUrl,\n getPlatformLabel,\n groupSkillsByCategory,\n groupSkillsBySubCategory,\n groupSkillsForDisplay,\n isKnownPlatform,\n normalizePlatformId,\n type ActivityTaxonomy,\n type ActivityTier,\n type AppCategoryId,\n type ContinentCode,\n type EmploymentTypeGroup,\n type EmploymentTypeOption,\n type InvestmentOption,\n type IndustryOption,\n type KnownAppId,\n type LexiconEntry,\n type MergedProfileSkill,\n type PresentationLinkTypeOption,\n type PresentationRoleOption,\n type PublicationTypeOption,\n INVOLVEMENT_KIND_OPTIONS,\n INVOLVEMENT_KIND_LABELS,\n INVOLVEMENT_KIND_HEADINGS,\n getInvolvementKindHeading,\n getInvolvementKindLabel,\n COURSE_ROLE_OPTIONS,\n COURSE_ROLE_LABELS,\n COURSE_ROLE_TAKEN,\n COURSE_ROLE_TAUGHT,\n COURSE_ROLE_TEACHING_ASSISTANT,\n getCourseRoleLabel,\n isTeachingCourse,\n splitCoursesByRole,\n type CourseRoleOption,\n EQF_LEVEL_LABELS,\n EQF_LEVEL_OPTIONS,\n getEducationLevelDisplay,\n getEqfLevelLabel,\n readEqfLevel,\n suggestEqfLevelFromDegree,\n type EqfLevel,\n type EqfLevelOption,\n ARTIFACT_LINK_KIND_OPTIONS,\n ARTIFACT_LINK_KIND_LABELS,\n getArtifactLinkKindLabel,\n VERIFICATION_PROVIDERS,\n getVerificationProvider,\n isKnownVerificationProvider,\n resolveVerifierProvider,\n primaryVerification,\n type AccountVerification,\n type VerificationProvider,\n type VerificationProviderId,\n type VerificationSource,\n type InvolvementKindOption,\n type ArtifactLinkKindOption,\n type OpenToGroup,\n type OpenToOption,\n type PlatformId,\n type SearchFilterControl,\n type SearchFilterDef,\n type SearchFilterOptionSource,\n type SkillCategory,\n type TierMeta,\n type WorkplaceTypeOption,\n} from './taxonomy/index.js';\n\nexport {\n certDateExtractor,\n contrastRatio,\n countryCodeToFlag,\n dateRangeExtractor,\n detectPdsProvider,\n formatCompanyName,\n formatCredentialDateRange,\n formatDateRange,\n formatPositionDateRange,\n formatDisplayUrl,\n formatDistanceToNow,\n formatIsoTitle,\n formatLocation,\n formatPresentationDuration,\n formatRelativeTime,\n formatTimelineDate,\n getDisplayLabel,\n getHandleStem,\n getPdsDisplayName,\n isValidRgbColor,\n lexiconDateExtractor,\n limitCombiningMarks,\n locationSegments,\n meetsContrastAA,\n normalizeCompanyKey,\n normalizeLegalForm,\n parseLocationString,\n parseTalkRkey,\n pdsProviderFromApi,\n relativeLuminance,\n resolveEmbed,\n youtubeVideoId,\n youtubeThumbnailUrl,\n rgbToString,\n sanitizeDisplayText,\n normalizeDoi,\n formatRelationship,\n parseEndorsementComment,\n sanitizeHandleInput,\n singleDateExtractor,\n slugifyTitle,\n buildMetaDescription,\n buildTalkSlug,\n sortByDateDesc,\n summarizePresentationDeliveries,\n truncateGraphemes,\n collapseContributors,\n type CollapseContributorsOptions,\n type CollapsedContributors,\n type EmbedResult,\n type ParsedEndorsementComment,\n type PdsProvider,\n type PresentationDeliverySummary,\n type RgbColor,\n} from './format/index.js';\n\nexport {\n parsePresentationDuration,\n durationFromMinutes,\n parseIntendedAudiences,\n stripHtmlToText,\n normalizePresentationRole,\n normalizePresentationMode,\n presentationCsvRowToRecord,\n presentationDeliveryCsvRowToRecord,\n type CsvRow,\n type ParsedPresentation,\n type ParsedDelivery,\n} from './import/index.js';\n\nexport {\n ACTIVITY_VISIBILITY_RULES,\n ADULT_CONTENT_LABELS,\n APP_URL_PATTERNS,\n COLLECTION_TO_APP,\n getAppIdForCollection,\n hasAdultContent,\n isVisibleActivityItem,\n resolveCardHealth,\n resolveCardUrl,\n type ActivityItemForUrl,\n type ActivityLabel,\n type AdultContentLabel,\n type AppUrlPatterns,\n type CardHealth,\n type CardHealthStrategy,\n} from './cards/index.js';\n\nexport {\n PUBLISHERS,\n STANDARD_PUBLISHER_ID,\n getPublisherById,\n getPublisherByHost,\n getPublisherFromSiteUrl,\n type Publisher,\n} from './publishers/index.js';\n\n// Shared activity-stream view-model: the normalized, framework-free feed both\n// sifa-web (React cards) and page.sifa.id (string-HTML renderer) consume.\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n streamVerbSchema,\n verbForCollection,\n streamAddressSchema,\n streamAuthorSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n isSelfAuthoredRich,\n renderAsLine,\n toStreamCardVM,\n toStreamCardVMs,\n type ActivityItem,\n type ActivityVerbMap,\n type StreamAddress,\n type StreamAuthor,\n type StreamCardBody,\n type StreamCardSubject,\n type StreamCardVM,\n type StreamExternalLink,\n type StreamGeo,\n type StreamMedia,\n type StreamMediaBase,\n type StreamMediaBlob,\n type StreamMediaResolved,\n type StreamRichSegment,\n type StreamSource,\n type StreamTheme,\n type StreamVerb,\n type ToStreamCardVMOptions,\n} from './stream/index.js';\n\nexport {\n COMPLETENESS_MAX_SCORE,\n completenessPercent,\n completenessScore,\n DIMENSIONS_MAX_SCORE,\n MIN_SKILLS,\n countFilledDimensions,\n dimensionsFromInputs,\n getFilledDimensionsMap,\n pickPrimaryPosition,\n DATE_LOOKAHEAD_MONTHS,\n isBeyondLookahead,\n isUpcomingStart,\n type DateLookaheadKind,\n pickPrimaryFlagged,\n summarizeProfileView,\n profileToDimensionInputs,\n isPseudoEmployer,\n looksLikeDomain,\n entityDisambiguationLabel,\n searchResultDisambiguation,\n entityResultKey,\n classifyEntityRef,\n isLinked,\n ENTITY_REF_ANCHORS,\n qualifiesAsOrg,\n isRegistrableDomainHandle,\n hasPersonalProfileContent,\n rendersPersonalProfile,\n rendersCompanyProfile,\n resolveAccountFacetMode,\n isCompanyPageIndexable,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n countRecentActivity,\n followingFeedFallbackApp,\n SELF_APP_ID,\n excludeSelfApp,\n actorShowsIdentity,\n type DailyActivityCount,\n type AppWithId,\n type DimensionKey,\n type DimensionMap,\n type PrimaryPositionCandidate,\n type PrimaryFlagCandidate,\n type ProfileSummary,\n type SummarizeProfileViewOptions,\n type ProfileCompletion,\n type ProfileDimensionInputs,\n type DisambiguationFields,\n type EntityRefAnchor,\n type CompanyFirmographics,\n type PersonalFacetContent,\n resolveAgentRef,\n type AgentRefFlat,\n} from './logic/index.js';\n\n// Profile section model: which sections render, in what order, their nav\n// grouping, per-section sorts, and involvement grouping. Shared by the HTML\n// profile page, the Markdown/DOCX/print exports, and the personal-site renderer.\nexport {\n ALL_SECTIONS,\n INVOLVEMENT_HEADING_ORDER,\n SECTION_GROUPS,\n SECTION_LABELS,\n filterHidden,\n getVisibleSectionIds,\n groupInvolvementByHeading,\n groupPublicationVersions,\n type GroupPublicationVersionsOptions,\n type PublicationVersionGroup,\n type VersionablePublication,\n hoistPrimary,\n isRoleLineRedundant,\n isSectionPopulated,\n sortByActiveDateRange,\n sortCertifications,\n sortEducation,\n sortHonors,\n sortLanguages,\n sortLanguagesByProficiency,\n sortPositions,\n sortProjects,\n sortPublications,\n visibleItems,\n type InvolvementGroup,\n type SectionGroupId,\n type SectionId,\n} from './profile/index.js';\n\n// Profile \"Highlights\" block: selection + labeling of the one ongoing (or\n// most-recent) record per section. Shared by the sifa-web profile page and the\n// personal-site renderer so the two surfaces never diverge on what's featured.\nexport {\n buildProfileHighlights,\n shouldRenderHighlights,\n formatSpanDate,\n formatSingleDate,\n formatEventDate,\n type ProfileHighlightsInput,\n type ProfileHighlightSection,\n type ProfileHighlightStatus,\n type ProfileHighlightTile,\n type BuildProfileHighlightsOptions,\n} from './profile/index.js';\n\nexport {\n AtmosphereFeedItemSchema,\n BlobRefSchema,\n EndorsementConfirmationRecordSchema,\n EndorsementRecordSchema,\n OrgProfileRecordSchema,\n OrgEmploymentAttestationRecordSchema,\n EntitySearchResultSchema,\n EntitySearchResponseSchema,\n EntitySelectRequestSchema,\n EntitySelectResponseSchema,\n EntityImportSearchResponseSchema,\n EntityResolveDomainRequestSchema,\n EntityResolveDomainResponseSchema,\n EntityMintDomainResponseSchema,\n FEATURE_FLAGS,\n FeatureAllowlistEntrySchema,\n FeedActorSchema,\n FollowFeedItemSchema,\n FollowFeedPageSchema,\n FollowProfilePageSchema,\n FollowProfileSchema,\n GraphFollowRecordSchema,\n PresentationDurationSchema,\n PresentationLinkSchema,\n ProfileCertificationRecordSchema,\n ProfileCourseRecordSchema,\n ProfileEducationRecordSchema,\n ProfileExternalAccountRecordSchema,\n ProfileHonorRecordSchema,\n ProfileInvestmentRecordSchema,\n InvestmentAmountSchema,\n PROFILE_INVESTMENT_NSID,\n ProfileInvolvementRecordSchema,\n ArtifactLinkSchema,\n PROFILE_INVOLVEMENT_NSID,\n ProfileLanguageRecordSchema,\n ProfilePositionRecordSchema,\n ProfilePresentationDeliveryRecordSchema,\n ProfilePresentationRecordSchema,\n ProfileProjectRecordSchema,\n ProfilePublicationRecordSchema,\n RelatedIdentifierSchema,\n ProfileSelfRecordSchema,\n ProfileSkillRecordSchema,\n ProfileVolunteeringRecordSchema,\n PublicationAuthorSchema,\n SifaFeedItemSchema,\n atUriSchema,\n cidSchema,\n datetimeSchema,\n decodeFeedCursor,\n didSchema,\n encodeFeedCursor,\n externalRecordRefSchema,\n languageTagSchema,\n makeGraphFollowRecordSchema,\n maxGraphemes,\n partialDateSchema,\n selfLabelsSchema,\n skillRefSchema,\n strongRefSchema,\n uriSchema,\n type AtmosphereFeedItem,\n type BlobRef,\n type EndorsementConfirmationRecord,\n type EndorsementRecord,\n type OrgProfileRecord,\n type OrgEmploymentAttestationRecord,\n type EntitySearchResult,\n type EntitySearchResponse,\n type EntitySelectRequest,\n type EntitySelectResponse,\n type EntityImportSearchResponse,\n type EntityResolveDomainRequest,\n type EntityResolveDomainResponse,\n type EntityMintDomainResponse,\n type FeatureAllowlistEntry,\n type FeatureFlag,\n type FeedActor,\n type FeedCursor,\n type FollowFeedItem,\n type FollowFeedPage,\n type FollowProfileItem,\n type FollowProfilePage,\n type GraphFollowRecord,\n type SifaFeedItem,\n type ProfileCertificationRecord,\n type ProfileCourseRecord,\n type ProfileEducationRecord,\n type ProfileExternalAccountRecord,\n type ProfileHonorRecord,\n type ProfileInvolvementRecord,\n type ArtifactLink,\n type ProfileLanguageRecord,\n type PresentationDuration,\n type PresentationLink,\n type ProfilePositionRecord,\n type ProfilePresentationDeliveryRecord,\n type ProfilePresentationRecord,\n type ProfileProjectRecord,\n type ProfilePublicationRecord,\n type ProfileSelfRecord,\n type ProfileSkillRecord,\n type ProfileVolunteeringRecord,\n type PublicationAuthor,\n agentRefSchema,\n type AgentRef,\n} from './schemas/index.js';\n\nexport {\n ROADMAP_ITEM_META,\n ROADMAP_ISSUES_REPO,\n roadmapIssueUrl,\n type RoadmapItemMeta,\n} from './roadmap/index.js';\n\nexport type {\n LocationSegment,\n LocationSegmentKind,\n LocationSegmentsOptions,\n} from './format/index.js';\n\nexport type { DisplayUrl, FormatDisplayUrlOptions, UrlPathPolicy } from './format/index.js';\n\nexport { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from './repo/index.js';\nexport type {\n RepoCollectionGroup,\n RepoDeleteOutcome,\n RepoDeleteRecordResult,\n RepoDeleteResult,\n RepoGroupDefinition,\n RepoGroupId,\n RepoInventory,\n RepoRecordLabel,\n RepoRecordSummary,\n} from './repo/index.js';\n"],"mappings":";AA0FA,SAAS,qBAAqB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAeA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAgBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAmBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAeA;AAAA,OAEK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA4CA;AAAA,OAEK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAUP,SAAS,kBAAkB,oBAAoB,8BAA8B;AAllBtE,IAAM,mBAA2B;","names":[]}
@@ -0,0 +1,11 @@
1
+ // src/logic/following-feed-fallback.ts
2
+ function followingFeedFallbackApp(feed) {
3
+ if (!feed || feed.items.length > 0 || !feed.apps?.length) return null;
4
+ let busiest = feed.apps[0];
5
+ for (const app of feed.apps) if (app.count > busiest.count) busiest = app;
6
+ return busiest.id;
7
+ }
8
+ export {
9
+ followingFeedFallbackApp
10
+ };
11
+ //# sourceMappingURL=following-feed-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/logic/following-feed-fallback.ts"],"sourcesContent":["/**\n * The app to show when the default following feed comes back empty, or null.\n *\n * The default feed leaves Bluesky out, so a network that is quiet elsewhere\n * gets an empty page even when it is active on some app. Rather than show an\n * empty state, a client switches to the busiest app the network is active on.\n * Shared by sifa-web and sifa-app so both behave the same.\n */\nexport function followingFeedFallbackApp(\n feed: {\n items: readonly unknown[];\n apps?: readonly { id: string; count: number }[];\n } | null,\n): string | null {\n if (!feed || feed.items.length > 0 || !feed.apps?.length) return null;\n let busiest = feed.apps[0]!;\n for (const app of feed.apps) if (app.count > busiest.count) busiest = app;\n return busiest.id;\n}\n"],"mappings":";AAQO,SAAS,yBACd,MAIe;AACf,MAAI,CAAC,QAAQ,KAAK,MAAM,SAAS,KAAK,CAAC,KAAK,MAAM,OAAQ,QAAO;AACjE,MAAI,UAAU,KAAK,KAAK,CAAC;AACzB,aAAW,OAAO,KAAK,KAAM,KAAI,IAAI,QAAQ,QAAQ,MAAO,WAAU;AACtE,SAAO,QAAQ;AACjB;","names":[]}
@@ -48,6 +48,7 @@ import {
48
48
  COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS
49
49
  } from "./company-page-indexable.js";
50
50
  import { countRecentActivity } from "./recent-activity.js";
51
+ import { followingFeedFallbackApp } from "./following-feed-fallback.js";
51
52
  import { SELF_APP_ID, excludeSelfApp } from "./self-app.js";
52
53
  import { actorShowsIdentity } from "./actor-identity.js";
53
54
  export {
@@ -68,6 +69,7 @@ export {
68
69
  entityDisambiguationLabel,
69
70
  entityResultKey,
70
71
  excludeSelfApp,
72
+ followingFeedFallbackApp,
71
73
  getFilledDimensionsMap,
72
74
  hasPersonalProfileContent,
73
75
  isBeyondLookahead,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/logic/index.ts"],"sourcesContent":["export {\n COMPLETENESS_MAX_SCORE,\n completenessPercent,\n completenessScore,\n type ProfileCompletion,\n} from './profile-completeness.js';\n\nexport {\n DIMENSIONS_MAX_SCORE,\n MIN_SKILLS,\n countFilledDimensions,\n dimensionsFromInputs,\n getFilledDimensionsMap,\n profileToDimensionInputs,\n type DimensionKey,\n type DimensionMap,\n type ProfileDimensionInputs,\n} from './profile-dimensions.js';\n\nexport { pickPrimaryPosition, type PrimaryPositionCandidate } from './primary-position.js';\n\nexport {\n DATE_LOOKAHEAD_MONTHS,\n isBeyondLookahead,\n isUpcomingStart,\n type DateLookaheadKind,\n} from './date-lookahead.js';\n\nexport { pickPrimaryFlagged, type PrimaryFlagCandidate } from './primary-item.js';\n\nexport {\n summarizeProfileView,\n type ProfileSummary,\n type SummarizeProfileViewOptions,\n} from './profile-summary.js';\n\nexport { isPseudoEmployer } from './pseudo-employer.js';\nexport { looksLikeDomain } from './domain-detect.js';\nexport {\n entityDisambiguationLabel,\n searchResultDisambiguation,\n entityResultKey,\n type DisambiguationFields,\n} from './entity-disambiguation.js';\nexport {\n classifyEntityRef,\n isLinked,\n ENTITY_REF_ANCHORS,\n type EntityRefAnchor,\n} from './entity-ref-anchor.js';\nexport { resolveAgentRef, type AgentRefFlat } from './agent-ref.js';\nexport {\n qualifiesAsOrg,\n isRegistrableDomainHandle,\n hasPersonalProfileContent,\n rendersPersonalProfile,\n rendersCompanyProfile,\n resolveAccountFacetMode,\n} from './org-floor.js';\nexport type { PersonalFacetContent } from './org-floor.js';\nexport {\n isCompanyPageIndexable,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n type CompanyFirmographics,\n} from './company-page-indexable.js';\nexport { countRecentActivity, type DailyActivityCount } from './recent-activity.js';\nexport { SELF_APP_ID, excludeSelfApp, type AppWithId } from './self-app.js';\nexport { actorShowsIdentity } from './actor-identity.js';\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEP,SAAS,2BAA0D;AAEnE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,0BAAqD;AAE9D;AAAA,EACE;AAAA,OAGK;AAEP,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,uBAA0C;AACnD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,2BAAoD;AAC7D,SAAS,aAAa,sBAAsC;AAC5D,SAAS,0BAA0B;","names":[]}
1
+ {"version":3,"sources":["../../src/logic/index.ts"],"sourcesContent":["export {\n COMPLETENESS_MAX_SCORE,\n completenessPercent,\n completenessScore,\n type ProfileCompletion,\n} from './profile-completeness.js';\n\nexport {\n DIMENSIONS_MAX_SCORE,\n MIN_SKILLS,\n countFilledDimensions,\n dimensionsFromInputs,\n getFilledDimensionsMap,\n profileToDimensionInputs,\n type DimensionKey,\n type DimensionMap,\n type ProfileDimensionInputs,\n} from './profile-dimensions.js';\n\nexport { pickPrimaryPosition, type PrimaryPositionCandidate } from './primary-position.js';\n\nexport {\n DATE_LOOKAHEAD_MONTHS,\n isBeyondLookahead,\n isUpcomingStart,\n type DateLookaheadKind,\n} from './date-lookahead.js';\n\nexport { pickPrimaryFlagged, type PrimaryFlagCandidate } from './primary-item.js';\n\nexport {\n summarizeProfileView,\n type ProfileSummary,\n type SummarizeProfileViewOptions,\n} from './profile-summary.js';\n\nexport { isPseudoEmployer } from './pseudo-employer.js';\nexport { looksLikeDomain } from './domain-detect.js';\nexport {\n entityDisambiguationLabel,\n searchResultDisambiguation,\n entityResultKey,\n type DisambiguationFields,\n} from './entity-disambiguation.js';\nexport {\n classifyEntityRef,\n isLinked,\n ENTITY_REF_ANCHORS,\n type EntityRefAnchor,\n} from './entity-ref-anchor.js';\nexport { resolveAgentRef, type AgentRefFlat } from './agent-ref.js';\nexport {\n qualifiesAsOrg,\n isRegistrableDomainHandle,\n hasPersonalProfileContent,\n rendersPersonalProfile,\n rendersCompanyProfile,\n resolveAccountFacetMode,\n} from './org-floor.js';\nexport type { PersonalFacetContent } from './org-floor.js';\nexport {\n isCompanyPageIndexable,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n type CompanyFirmographics,\n} from './company-page-indexable.js';\nexport { countRecentActivity, type DailyActivityCount } from './recent-activity.js';\nexport { followingFeedFallbackApp } from './following-feed-fallback.js';\nexport { SELF_APP_ID, excludeSelfApp, type AppWithId } from './self-app.js';\nexport { actorShowsIdentity } from './actor-identity.js';\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEP,SAAS,2BAA0D;AAEnE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,0BAAqD;AAE9D;AAAA,EACE;AAAA,OAGK;AAEP,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,uBAA0C;AACnD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,2BAAoD;AAC7D,SAAS,gCAAgC;AACzC,SAAS,aAAa,sBAAsC;AAC5D,SAAS,0BAA0B;","names":[]}
@@ -3,9 +3,9 @@ import {
3
3
  ACTIVITY_VERBS,
4
4
  STREAM_VERBS,
5
5
  getActivityVerbsVersion,
6
- streamVerbSchema,
7
6
  verbForCollection
8
7
  } from "./verbs.js";
8
+ import { streamVerbSchema } from "./verb-schema.js";
9
9
  import {
10
10
  streamAddressSchema,
11
11
  streamCardBodySchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stream/index.ts"],"sourcesContent":["export type { ActivityItem } from './activity-item.js';\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n streamVerbSchema,\n verbForCollection,\n type ActivityVerbMap,\n type StreamVerb,\n} from './verbs.js';\nexport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamMediaBase,\n StreamMediaBlob,\n StreamMediaResolved,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nexport {\n streamAddressSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamAuthorSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n} from './stream-card-vm-schema.js';\nexport {\n toStreamCardVM,\n toStreamCardVMs,\n type ToStreamCardVMOptions,\n} from './to-stream-card-vm.js';\nexport { isSelfAuthoredRich, renderAsLine } from './two-tier.js';\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAiBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,oBAAoB,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../../src/stream/index.ts"],"sourcesContent":["export type { ActivityItem } from './activity-item.js';\nexport {\n ACTIVITY_VERBS,\n STREAM_VERBS,\n getActivityVerbsVersion,\n verbForCollection,\n type ActivityVerbMap,\n type StreamVerb,\n} from './verbs.js';\nexport { streamVerbSchema } from './verb-schema.js';\nexport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamMediaBase,\n StreamMediaBlob,\n StreamMediaResolved,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nexport {\n streamAddressSchema,\n streamCardBodySchema,\n streamCardSubjectSchema,\n streamCardVMSchema,\n streamExternalLinkSchema,\n streamGeoSchema,\n streamMediaSchema,\n streamAuthorSchema,\n streamRichSegmentSchema,\n streamSourceSchema,\n streamThemeSchema,\n} from './stream-card-vm-schema.js';\nexport {\n toStreamCardVM,\n toStreamCardVMs,\n type ToStreamCardVMOptions,\n} from './to-stream-card-vm.js';\nexport { isSelfAuthoredRich, renderAsLine } from './two-tier.js';\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,wBAAwB;AAiBjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,SAAS,oBAAoB,oBAAoB;","names":[]}
@@ -1,6 +1,6 @@
1
1
  // src/stream/stream-card-vm-schema.ts
2
2
  import { z } from "zod";
3
- import { streamVerbSchema } from "./verbs.js";
3
+ import { streamVerbSchema } from "./verb-schema.js";
4
4
  var rgbChannelSchema = z.number().min(0).max(255);
5
5
  var rgbColorSchema = z.object({
6
6
  r: rgbChannelSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stream/stream-card-vm-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nimport { streamVerbSchema } from './verbs.js';\n\n/** RGB channel: finite number in [0, 255] (mirrors `isValidRgbColor`). */\nconst rgbChannelSchema = z.number().min(0).max(255);\nconst rgbColorSchema = z.object({\n r: rgbChannelSchema,\n g: rgbChannelSchema,\n b: rgbChannelSchema,\n});\n\nconst aspectRatioSchema = z.object({\n width: z.number(),\n height: z.number(),\n});\n\nexport const streamSourceSchema: z.ZodType<StreamSource> = z.object({\n appId: z.string(),\n label: z.string(),\n color: z.string(),\n});\n\nexport const streamAuthorSchema: z.ZodType<StreamAuthor> = z.object({\n did: z.string().optional(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\nexport const streamThemeSchema: z.ZodType<StreamTheme> = z.object({\n background: rgbColorSchema,\n foreground: rgbColorSchema,\n accent: rgbColorSchema,\n});\n\nconst streamMediaResolvedSchema = z.object({\n url: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nconst streamMediaBlobSchema = z.object({\n did: z.string(),\n cid: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nexport const streamMediaSchema: z.ZodType<StreamMedia> = z.union([\n streamMediaResolvedSchema,\n streamMediaBlobSchema,\n]);\n\nexport const streamExternalLinkSchema: z.ZodType<StreamExternalLink> = z.object({\n url: z.string(),\n title: z.string().optional(),\n thumb: z.string().optional(),\n});\n\nexport const streamGeoSchema: z.ZodType<StreamGeo> = z.object({\n latitude: z.number(),\n longitude: z.number(),\n});\n\nexport const streamAddressSchema: z.ZodType<StreamAddress> = z.object({\n name: z.string().optional(),\n street: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n country: z.string().optional(),\n postalCode: z.string().optional(),\n});\n\nexport const streamRichSegmentSchema: z.ZodType<StreamRichSegment> = z.object({\n text: z.string(),\n link: z.string().optional(),\n mention: z.string().optional(),\n tag: z.string().optional(),\n});\n\nexport const streamCardBodySchema: z.ZodType<StreamCardBody> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n richSegments: z.array(streamRichSegmentSchema).optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('media'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('link'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('track'),\n text: z.string().optional(),\n trackTitle: z.string().optional(),\n artist: z.string().optional(),\n }),\n z.object({\n kind: z.literal('generic'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('github-pr'),\n repoOwner: z.string(),\n repoName: z.string(),\n prNumber: z.number(),\n title: z.string(),\n url: z.string().optional(),\n language: z.string().optional(),\n additions: z.number(),\n deletions: z.number(),\n mergedAt: z.string().optional(),\n }),\n z.object({\n kind: z.literal('book'),\n title: z.string(),\n authors: z.array(z.string()),\n stars: z.number().optional(),\n status: z.string().optional(),\n review: z.string().optional(),\n }),\n z.object({\n kind: z.literal('media-review'),\n reviewKind: z.enum(['review', 'post', 'note', 'other']),\n title: z.string().optional(),\n mediaType: z.string().optional(),\n rating: z.number().optional(),\n mainCredit: z.string().optional(),\n reviewText: z.string().optional(),\n isRevisit: z.boolean(),\n }),\n z.object({\n kind: z.literal('event-rsvp'),\n rsvpStatus: z.enum(['going', 'interested', 'notgoing', 'unknown']),\n eventName: z.string().optional(),\n startsAt: z.string().optional(),\n endsAt: z.string().optional(),\n mode: z.enum(['inperson', 'virtual', 'hybrid']).optional(),\n locationName: z.string().optional(),\n locationLocality: z.string().optional(),\n locationCountry: z.string().optional(),\n }),\n z.object({\n kind: z.literal('verification'),\n platform: z.string(),\n verified: z.boolean(),\n subjectLabel: z.string().optional(),\n handle: z.string().optional(),\n profileUrl: z.string().optional(),\n }),\n z.object({\n kind: z.literal('membership'),\n communityName: z.string().optional(),\n description: z.string().optional(),\n communityUri: z.string().optional(),\n }),\n z.object({\n kind: z.literal('location'),\n venueName: z.string().optional(),\n shout: z.string().optional(),\n address: streamAddressSchema.optional(),\n geo: streamGeoSchema.optional(),\n }),\n z.object({\n kind: z.literal('travel'),\n origin: z.string().optional(),\n destination: z.string().optional(),\n transportation: z.string().optional(),\n carrier: z.string().optional(),\n carrierCode: z.string().optional(),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n }),\n z.object({\n kind: z.literal('standard-site'),\n title: z.string().optional(),\n description: z.string().optional(),\n siteUrl: z.string().optional(),\n path: z.string().optional(),\n publisherName: z.string().optional(),\n icon: z.string().optional(),\n coverImageUrl: z.string().optional(),\n readingTime: z.number().optional(),\n publishedAt: z.string().optional(),\n }),\n]);\n\n/**\n * A stream item's repost / reply / quote target. The `post` variant nests a\n * full {@link streamCardVMSchema} (deferred via `z.lazy` for recursion).\n */\nexport const streamCardSubjectSchema: z.ZodType<StreamCardSubject> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('post'),\n post: z.lazy(() => streamCardVMSchema),\n }),\n z.object({\n kind: z.literal('person'),\n did: z.string(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n }),\n z.object({\n kind: z.literal('record'),\n uri: z.string(),\n title: z.string().optional(),\n url: z.string().optional(),\n }),\n]);\n\n/** Hypercert credit roll + outbound links, hydrated by sifa-api. */\nconst hypercertDetailsSchema = z.object({\n contributors: z.array(\n z.object({\n displayName: z.string(),\n imageUrl: z.string().optional(),\n identifier: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n contributorCount: z.number(),\n attachments: z.array(z.object({ title: z.string().optional(), url: z.string() })),\n});\n\n/** An account a Certified record points at. */\nconst certifiedActorSchema = z.object({\n did: z.string(),\n handle: z.string(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\n/** Certified badge + resolved accounts, hydrated by sifa-api. */\nconst certifiedDetailsSchema = z.object({\n badge: z\n .object({\n title: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n badgeType: z.string().optional(),\n })\n .optional(),\n recipient: certifiedActorSchema.optional(),\n issuer: certifiedActorSchema.optional(),\n group: certifiedActorSchema.optional(),\n role: z.string().optional(),\n});\n\n/** Zod schema for a {@link StreamCardVM}. Recursive through `subject.post`. */\nexport const streamCardVMSchema: z.ZodType<StreamCardVM> = z.lazy(() =>\n z.object({\n uri: z.string(),\n cid: z.string(),\n verb: streamVerbSchema,\n source: streamSourceSchema,\n author: streamAuthorSchema.optional(),\n tier: z.enum(['creation', 'action', 'filtered']),\n timestamp: z.string(),\n title: z.string(),\n sourceUrl: z.string().optional(),\n body: streamCardBodySchema.optional(),\n media: z.array(streamMediaSchema).optional(),\n externalLink: streamExternalLinkSchema.optional(),\n theme: streamThemeSchema.optional(),\n subject: z.lazy(() => streamCardSubjectSchema).optional(),\n hypercertDetails: hypercertDetailsSchema.optional(),\n certifiedDetails: certifiedDetailsSchema.optional(),\n }),\n);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/stream/stream-card-vm-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport type {\n StreamAddress,\n StreamAuthor,\n StreamCardBody,\n StreamCardSubject,\n StreamCardVM,\n StreamExternalLink,\n StreamGeo,\n StreamMedia,\n StreamRichSegment,\n StreamSource,\n StreamTheme,\n} from './stream-card-vm.js';\nimport { streamVerbSchema } from './verb-schema.js';\n\n/** RGB channel: finite number in [0, 255] (mirrors `isValidRgbColor`). */\nconst rgbChannelSchema = z.number().min(0).max(255);\nconst rgbColorSchema = z.object({\n r: rgbChannelSchema,\n g: rgbChannelSchema,\n b: rgbChannelSchema,\n});\n\nconst aspectRatioSchema = z.object({\n width: z.number(),\n height: z.number(),\n});\n\nexport const streamSourceSchema: z.ZodType<StreamSource> = z.object({\n appId: z.string(),\n label: z.string(),\n color: z.string(),\n});\n\nexport const streamAuthorSchema: z.ZodType<StreamAuthor> = z.object({\n did: z.string().optional(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\nexport const streamThemeSchema: z.ZodType<StreamTheme> = z.object({\n background: rgbColorSchema,\n foreground: rgbColorSchema,\n accent: rgbColorSchema,\n});\n\nconst streamMediaResolvedSchema = z.object({\n url: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nconst streamMediaBlobSchema = z.object({\n did: z.string(),\n cid: z.string(),\n alt: z.string(),\n aspectRatio: aspectRatioSchema.optional(),\n mimeType: z.string().optional(),\n});\n\nexport const streamMediaSchema: z.ZodType<StreamMedia> = z.union([\n streamMediaResolvedSchema,\n streamMediaBlobSchema,\n]);\n\nexport const streamExternalLinkSchema: z.ZodType<StreamExternalLink> = z.object({\n url: z.string(),\n title: z.string().optional(),\n thumb: z.string().optional(),\n});\n\nexport const streamGeoSchema: z.ZodType<StreamGeo> = z.object({\n latitude: z.number(),\n longitude: z.number(),\n});\n\nexport const streamAddressSchema: z.ZodType<StreamAddress> = z.object({\n name: z.string().optional(),\n street: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n country: z.string().optional(),\n postalCode: z.string().optional(),\n});\n\nexport const streamRichSegmentSchema: z.ZodType<StreamRichSegment> = z.object({\n text: z.string(),\n link: z.string().optional(),\n mention: z.string().optional(),\n tag: z.string().optional(),\n});\n\nexport const streamCardBodySchema: z.ZodType<StreamCardBody> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n richSegments: z.array(streamRichSegmentSchema).optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('media'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('link'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('track'),\n text: z.string().optional(),\n trackTitle: z.string().optional(),\n artist: z.string().optional(),\n }),\n z.object({\n kind: z.literal('generic'),\n text: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n z.object({\n kind: z.literal('github-pr'),\n repoOwner: z.string(),\n repoName: z.string(),\n prNumber: z.number(),\n title: z.string(),\n url: z.string().optional(),\n language: z.string().optional(),\n additions: z.number(),\n deletions: z.number(),\n mergedAt: z.string().optional(),\n }),\n z.object({\n kind: z.literal('book'),\n title: z.string(),\n authors: z.array(z.string()),\n stars: z.number().optional(),\n status: z.string().optional(),\n review: z.string().optional(),\n }),\n z.object({\n kind: z.literal('media-review'),\n reviewKind: z.enum(['review', 'post', 'note', 'other']),\n title: z.string().optional(),\n mediaType: z.string().optional(),\n rating: z.number().optional(),\n mainCredit: z.string().optional(),\n reviewText: z.string().optional(),\n isRevisit: z.boolean(),\n }),\n z.object({\n kind: z.literal('event-rsvp'),\n rsvpStatus: z.enum(['going', 'interested', 'notgoing', 'unknown']),\n eventName: z.string().optional(),\n startsAt: z.string().optional(),\n endsAt: z.string().optional(),\n mode: z.enum(['inperson', 'virtual', 'hybrid']).optional(),\n locationName: z.string().optional(),\n locationLocality: z.string().optional(),\n locationCountry: z.string().optional(),\n }),\n z.object({\n kind: z.literal('verification'),\n platform: z.string(),\n verified: z.boolean(),\n subjectLabel: z.string().optional(),\n handle: z.string().optional(),\n profileUrl: z.string().optional(),\n }),\n z.object({\n kind: z.literal('membership'),\n communityName: z.string().optional(),\n description: z.string().optional(),\n communityUri: z.string().optional(),\n }),\n z.object({\n kind: z.literal('location'),\n venueName: z.string().optional(),\n shout: z.string().optional(),\n address: streamAddressSchema.optional(),\n geo: streamGeoSchema.optional(),\n }),\n z.object({\n kind: z.literal('travel'),\n origin: z.string().optional(),\n destination: z.string().optional(),\n transportation: z.string().optional(),\n carrier: z.string().optional(),\n carrierCode: z.string().optional(),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n }),\n z.object({\n kind: z.literal('standard-site'),\n title: z.string().optional(),\n description: z.string().optional(),\n siteUrl: z.string().optional(),\n path: z.string().optional(),\n publisherName: z.string().optional(),\n icon: z.string().optional(),\n coverImageUrl: z.string().optional(),\n readingTime: z.number().optional(),\n publishedAt: z.string().optional(),\n }),\n]);\n\n/**\n * A stream item's repost / reply / quote target. The `post` variant nests a\n * full {@link streamCardVMSchema} (deferred via `z.lazy` for recursion).\n */\nexport const streamCardSubjectSchema: z.ZodType<StreamCardSubject> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('post'),\n post: z.lazy(() => streamCardVMSchema),\n }),\n z.object({\n kind: z.literal('person'),\n did: z.string(),\n handle: z.string().optional(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n }),\n z.object({\n kind: z.literal('record'),\n uri: z.string(),\n title: z.string().optional(),\n url: z.string().optional(),\n }),\n]);\n\n/** Hypercert credit roll + outbound links, hydrated by sifa-api. */\nconst hypercertDetailsSchema = z.object({\n contributors: z.array(\n z.object({\n displayName: z.string(),\n imageUrl: z.string().optional(),\n identifier: z.string().optional(),\n weight: z.number().optional(),\n }),\n ),\n contributorCount: z.number(),\n attachments: z.array(z.object({ title: z.string().optional(), url: z.string() })),\n});\n\n/** An account a Certified record points at. */\nconst certifiedActorSchema = z.object({\n did: z.string(),\n handle: z.string(),\n displayName: z.string().optional(),\n avatar: z.string().optional(),\n});\n\n/** Certified badge + resolved accounts, hydrated by sifa-api. */\nconst certifiedDetailsSchema = z.object({\n badge: z\n .object({\n title: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n badgeType: z.string().optional(),\n })\n .optional(),\n recipient: certifiedActorSchema.optional(),\n issuer: certifiedActorSchema.optional(),\n group: certifiedActorSchema.optional(),\n role: z.string().optional(),\n});\n\n/** Zod schema for a {@link StreamCardVM}. Recursive through `subject.post`. */\nexport const streamCardVMSchema: z.ZodType<StreamCardVM> = z.lazy(() =>\n z.object({\n uri: z.string(),\n cid: z.string(),\n verb: streamVerbSchema,\n source: streamSourceSchema,\n author: streamAuthorSchema.optional(),\n tier: z.enum(['creation', 'action', 'filtered']),\n timestamp: z.string(),\n title: z.string(),\n sourceUrl: z.string().optional(),\n body: streamCardBodySchema.optional(),\n media: z.array(streamMediaSchema).optional(),\n externalLink: streamExternalLinkSchema.optional(),\n theme: streamThemeSchema.optional(),\n subject: z.lazy(() => streamCardSubjectSchema).optional(),\n hypercertDetails: hypercertDetailsSchema.optional(),\n certifiedDetails: certifiedDetailsSchema.optional(),\n }),\n);\n"],"mappings":"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","names":[]}
@@ -0,0 +1,8 @@
1
+ // src/stream/verb-schema.ts
2
+ import { z } from "zod";
3
+ import { STREAM_VERBS } from "./verbs.js";
4
+ var streamVerbSchema = z.enum(STREAM_VERBS);
5
+ export {
6
+ streamVerbSchema
7
+ };
8
+ //# sourceMappingURL=verb-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/stream/verb-schema.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { STREAM_VERBS } from './verbs.js';\n\n/**\n * Zod enum for a {@link StreamVerb}, shared with the view-model schema.\n *\n * Kept apart from `verbs.ts` so code that only maps collections to verbs does\n * not load zod.\n */\nexport const streamVerbSchema = z.enum(STREAM_VERBS);\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,oBAAoB;AAQtB,IAAM,mBAAmB,EAAE,KAAK,YAAY;","names":[]}
@@ -1,6 +1,3 @@
1
- // src/stream/verbs.ts
2
- import { z } from "zod";
3
-
4
1
  // src/stream/verbs.json
5
2
  var verbs_default = {
6
3
  $schema: "https://sifa.id/schemas/activity-verbs/v1.json",
@@ -94,14 +91,12 @@ var STREAM_VERBS = [
94
91
  "received",
95
92
  "styledCharacter"
96
93
  ];
97
- var streamVerbSchema = z.enum(STREAM_VERBS);
98
- var verbMapSchema = z.object({
99
- version: z.string(),
100
- updated: z.string(),
101
- defaultVerb: streamVerbSchema,
102
- verbs: z.record(z.string(), streamVerbSchema)
103
- });
104
- var parsed = verbMapSchema.parse(verbs_default);
94
+ var parsed = {
95
+ version: verbs_default.version,
96
+ updated: verbs_default.updated,
97
+ defaultVerb: verbs_default.defaultVerb,
98
+ verbs: verbs_default.verbs
99
+ };
105
100
  var ACTIVITY_VERBS = Object.freeze(parsed);
106
101
  function verbForCollection(collection) {
107
102
  if (!collection) return ACTIVITY_VERBS.defaultVerb;
@@ -114,7 +109,6 @@ export {
114
109
  ACTIVITY_VERBS,
115
110
  STREAM_VERBS,
116
111
  getActivityVerbsVersion,
117
- streamVerbSchema,
118
112
  verbForCollection
119
113
  };
120
114
  //# sourceMappingURL=verbs.js.map