@singi-labs/sifa-sdk 0.20.0 → 0.20.2

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.
Files changed (45) hide show
  1. package/dist/badge/index.cjs.map +1 -1
  2. package/dist/index.cjs +53 -1
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +14 -4
  5. package/dist/index.d.ts +14 -4
  6. package/dist/index.js +5 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/{network-map-CrkLq2Gz.d.ts → network-map-2OKh3wSB.d.ts} +2 -2
  9. package/dist/{network-map-BwM-Wvxt.d.cts → network-map-DJonNOl0.d.cts} +2 -2
  10. package/dist/{profile-summary-TkVxvll4.d.cts → profile-summary-BCOKt3qS.d.cts} +1 -1
  11. package/dist/{profile-summary-CwJymH9d.d.ts → profile-summary-DF8-evvA.d.ts} +1 -1
  12. package/dist/query/client.js +2 -1
  13. package/dist/query/client.js.map +1 -1
  14. package/dist/query/fetchers/index.cjs +57 -6
  15. package/dist/query/fetchers/index.cjs.map +1 -1
  16. package/dist/query/fetchers/index.d.cts +5 -5
  17. package/dist/query/fetchers/index.d.ts +5 -5
  18. package/dist/query/fetchers/index.js +6 -0
  19. package/dist/query/fetchers/index.js.map +1 -1
  20. package/dist/query/fetchers/org.js.map +1 -1
  21. package/dist/query/fetchers/roadmap.js +56 -3
  22. package/dist/query/fetchers/roadmap.js.map +1 -1
  23. package/dist/query/hooks/index.cjs +68 -6
  24. package/dist/query/hooks/index.cjs.map +1 -1
  25. package/dist/query/hooks/index.d.cts +3 -3
  26. package/dist/query/hooks/index.d.ts +3 -3
  27. package/dist/query/hooks/index.js +8 -1
  28. package/dist/query/hooks/index.js.map +1 -1
  29. package/dist/query/hooks/use-roadmap-mutations.js +36 -0
  30. package/dist/query/hooks/use-roadmap-mutations.js.map +1 -1
  31. package/dist/query/index.cjs +91 -6
  32. package/dist/query/index.cjs.map +1 -1
  33. package/dist/query/index.d.cts +8 -8
  34. package/dist/query/index.d.ts +8 -8
  35. package/dist/query/index.js +14 -1
  36. package/dist/query/index.js.map +1 -1
  37. package/dist/roadmap/board-body.js +55 -0
  38. package/dist/roadmap/board-body.js.map +1 -0
  39. package/dist/{types-CQA_vO39.d.ts → types-CkomzDlY.d.ts} +11 -2
  40. package/dist/{types-DMTHqi2m.d.cts → types-JydVIhN5.d.cts} +11 -2
  41. package/dist/{use-user-settings-BmuAd8D4.d.cts → use-user-settings-Cq_AHkkM.d.cts} +15 -3
  42. package/dist/{use-user-settings-1zgi6qwl.d.ts → use-user-settings-DoNP3tNl.d.ts} +15 -3
  43. package/dist/{user-settings-Btvrox4G.d.ts → user-settings-CBtacio1.d.ts} +55 -3
  44. package/dist/{user-settings-D4vdBf0A.d.cts → user-settings-DDP76dZH.d.cts} +55 -3
  45. package/package.json +1 -1
package/dist/index.d.cts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { P as ProfileSkill, a as ProfilePresentationDelivery, L as LocationValue, b as PdsProviderInfo, c as Profile, A as AccountFacetMode, d as ProfilePosition, e as ProfileCertification, f as ProfileEducation, g as ProfileHonor, h as ProfileLanguage, i as ProfileProject, j as ProfilePublication, k as ProfileInvolvement, R as RelatedIdentifier } from './index-BQAKeEoj.cjs';
2
2
  export { l as ActiveApp, m as ActorCard, n as AuthorSuggestion, C as CoSpeaker, E as Endorsement, o as EndorsementData, p as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, O as OrgAddressView, s as OrgFloorVerdict, t as OrgLinkView, u as OrgProfileView, v as PROJECT_ROLES, w as PositionConfirmations, x as PositionEmailVerification, y as PositionOrgVerification, z as PositionPeerVerification, B as PositionViewerConfirmation, D as PresentationLinkView, G as ProfileCourse, H as ProfileIndustry, I as ProfileInvestment, J as ProfileInvestmentLink, K as ProfileInvolvementLink, M as ProfileLocation, N as ProfileOverrideSource, Q as ProfilePresentation, S as ProfileVolunteering, T as ProjectEventView, U as ProjectMemberCard, V as ProjectRole, W as PublicationContributor, X as RecognizedEntity, Y as SkillRef, Z as SkillSuggestion, _ as TrustStat, $ as VerifiedAccount } from './index-BQAKeEoj.cjs';
3
- import { S as SearchFilters } from './types-DMTHqi2m.cjs';
4
- export { A as ADULT_CONTENT_LABELS, a as ActiveAppView, b as ActivityLabel, c as AdultContentLabel, d as AtfundLinkView, C as CertificationView, e as CoSpeakerView, f as ContributorView, g as CourseView, D as DurationView, E as EMPTY_SITE_ACTIVITY_PRESET, h as EducationView, i as ExternalAccountView, H as HonorView, I as IndustryDomain, j as InvolvementLinkView, k as InvolvementView, L as LanguageView, P as PositionView, l as PresentationDeliveryView, m as PresentationView, n as ProfileLocationView, o as ProfileView, p as ProjectMemberView, q as ProjectView, r as PublicationView, R as RepoCollectionGroup, s as RepoDeleteOutcome, t as RepoDeleteRecordResult, u as RepoDeleteResult, v as RepoGroupDefinition, w as RepoGroupId, x as RepoInventory, y as RepoRecordLabel, z as RepoRecordSummary, B as SIFA_REPO_GROUPS, F as SITE_PRESET_MAX_TAGS, G as SITE_PRESET_MAX_TAG_LENGTH, J as SITE_PRESET_TAG_CATEGORY, K as SiteActivityPreset, M as SkillView, V as VolunteeringView, N as describeSifaRecord, O as hasAdultContent, Q as isSiteActivityPresetActive, T as matchesSiteActivityPreset, U as matchesSitePresetTags, W as normalizeSitePresetTag, X as parseSitePresetTags, Y as recordTags, Z as repoGroupForCollection, _ as siteActivityPresetSchema, $ as siteActivityPresetUpdateSchema } from './types-DMTHqi2m.cjs';
3
+ import { S as SearchFilters } from './types-JydVIhN5.cjs';
4
+ export { A as ADULT_CONTENT_LABELS, a as ActiveAppView, b as ActivityLabel, c as AdultContentLabel, d as AtfundLinkView, C as CertificationView, e as CoSpeakerView, f as ContributorView, g as CourseView, D as DurationView, E as EMPTY_SITE_ACTIVITY_PRESET, h as EducationView, i as ExternalAccountView, H as HonorView, I as IndustryDomain, j as InvolvementLinkView, k as InvolvementView, L as LanguageView, P as PositionView, l as PresentationDeliveryView, m as PresentationView, n as ProfileLocationView, o as ProfileView, p as ProjectMemberView, q as ProjectView, r as PublicationView, R as RepoCollectionGroup, s as RepoDeleteOutcome, t as RepoDeleteRecordResult, u as RepoDeleteResult, v as RepoGroupDefinition, w as RepoGroupId, x as RepoInventory, y as RepoRecordLabel, z as RepoRecordSummary, B as SIFA_REPO_GROUPS, F as SITE_PRESET_MAX_TAGS, G as SITE_PRESET_MAX_TAG_LENGTH, J as SITE_PRESET_TAG_CATEGORY, K as SiteActivityPreset, M as SkillView, V as VolunteeringView, N as describeSifaRecord, O as hasAdultContent, Q as isSiteActivityPresetActive, T as matchesSiteActivityPreset, U as matchesSitePresetTags, W as normalizeSitePresetTag, X as parseSitePresetTags, Y as recordTags, Z as repoGroupForCollection, _ as siteActivityPresetSchema, $ as siteActivityPresetUpdateSchema } from './types-JydVIhN5.cjs';
5
5
  import { A as AgentRef } from './verification-providers-DeyGqaoC.cjs';
6
6
  export { a as AccountVerification, V as VERIFICATION_PROVIDERS, b as VerificationProvider, c as VerificationProviderId, d as VerificationSource, e as VerifierListItem, f as agentRefSchema, g as atUriSchema, h as buildVerifierListMembers, i as cidSchema, j as datetimeSchema, k as didSchema, l as externalRecordRefSchema, m as getVerificationProvider, n as isKnownVerificationProvider, o as languageTagSchema, p as maxGraphemes, q as partialDateSchema, r as primaryVerification, s as resolveVerificationBadges, t as resolveVerifierProvider, u as selfLabelsSchema, v as skillRefSchema, w as strongRefSchema, x as uriSchema, y as verificationLabel } from './verification-providers-DeyGqaoC.cjs';
7
7
  import { P as PresentationDuration, a as ProfilePresentationDeliveryRecord, b as ProfilePresentationRecord, O as OrgProfileRecord } from './profile-investment-QSwX2GL5.cjs';
8
8
  export { A as ArtifactLink, c as ArtifactLinkSchema, d as AtmosphereFeedItem, e as AtmosphereFeedItemSchema, B as BlobRef, f as BlobRefSchema, E as EMPLOYMENT_STATUS_TOKENS, g as EmploymentVerificationRecord, h as EmploymentVerificationRecordSchema, i as EmploymentVerificationResolution, j as EndorsementConfirmationRecord, k as EndorsementConfirmationRecordSchema, l as EndorsementRecord, m as EndorsementRecordSchema, F as FeedActor, n as FeedActorSchema, o as FeedCursor, p as FollowFeedItem, q as FollowFeedItemSchema, r as FollowFeedPage, s as FollowFeedPageSchema, G as GraphFollowRecord, t as GraphFollowRecordSchema, I as InvestmentAmountSchema, u as OrgEmploymentAttestationRecord, v as OrgEmploymentAttestationRecordSchema, w as OrgProfileRecordSchema, x as PROFILE_INVESTMENT_NSID, y as PROFILE_INVOLVEMENT_NSID, z as PresentationDurationSchema, C as PresentationLink, D as PresentationLinkSchema, H as ProfileCertificationRecord, J as ProfileCertificationRecordSchema, K as ProfileCourseRecord, L as ProfileCourseRecordSchema, M as ProfileEducationRecord, N as ProfileEducationRecordSchema, Q as ProfileExternalAccountRecord, R as ProfileExternalAccountRecordSchema, S as ProfileHonorRecord, T as ProfileHonorRecordSchema, U as ProfileInvestmentRecordSchema, V as ProfileInvolvementRecord, W as ProfileInvolvementRecordSchema, X as ProfileLanguageRecord, Y as ProfileLanguageRecordSchema, Z as ProfilePositionRecord, _ as ProfilePositionRecordSchema, $ as ProfilePresentationDeliveryRecordSchema, a0 as ProfilePresentationRecordSchema, a1 as ProfileProjectRecord, a2 as ProfileProjectRecordSchema, a3 as ProfilePublicationRecord, a4 as ProfilePublicationRecordSchema, a5 as ProfileSelfRecord, a6 as ProfileSelfRecordSchema, a7 as ProfileSkillRecord, a8 as ProfileSkillRecordSchema, a9 as ProfileVolunteeringRecord, aa as ProfileVolunteeringRecordSchema, ab as PublicationAuthor, ac as PublicationAuthorSchema, ad as RelatedIdentifierSchema, ae as ResolveEmploymentVerificationOptions, af as SifaFeedItem, ag as SifaFeedItemSchema, ah as VERIFICATION_METHOD_TOKENS, ai as decodeFeedCursor, aj as encodeFeedCursor, ak as makeGraphFollowRecordSchema, al as resolveEmploymentVerification } from './profile-investment-QSwX2GL5.cjs';
9
9
  import { z } from 'zod';
10
- export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-TkVxvll4.cjs';
10
+ export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-BCOKt3qS.cjs';
11
11
  import { E as EntitySearchResult } from './follow-profile-CgLLLQtJ.cjs';
12
12
  export { a as EntityImportSearchResponse, b as EntityImportSearchResponseSchema, c as EntityMintDomainResponse, d as EntityMintDomainResponseSchema, e as EntityResolveDomainRequest, f as EntityResolveDomainRequestSchema, g as EntityResolveDomainResponse, h as EntityResolveDomainResponseSchema, i as EntitySearchResponse, j as EntitySearchResponseSchema, k as EntitySearchResultSchema, l as EntitySelectRequest, m as EntitySelectRequestSchema, n as EntitySelectResponse, o as EntitySelectResponseSchema, F as FEATURE_FLAGS, p as FeatureAllowlistEntry, q as FeatureAllowlistEntrySchema, r as FeatureFlag, s as FollowProfileItem, t as FollowProfilePage, u as FollowProfilePageSchema, v as FollowProfileSchema } from './follow-profile-CgLLLQtJ.cjs';
13
13
  import { G as GermDeclarationRecord } from './germ-declaration-BQBocGww.cjs';
@@ -3357,6 +3357,16 @@ declare const ROADMAP_ITEM_META: Record<string, RoadmapItemMeta>;
3357
3357
  /** The GitHub issue URL for a sifa-workspace issue number. */
3358
3358
  declare function roadmapIssueUrl(issue: number): string;
3359
3359
 
3360
+ interface RoadmapIssueLink {
3361
+ number: number;
3362
+ url: string;
3363
+ }
3364
+ interface RoadmapBodyParts {
3365
+ description: string | null;
3366
+ issues: RoadmapIssueLink[];
3367
+ }
3368
+ declare function splitRoadmapBody(body: string | null | undefined): RoadmapBodyParts;
3369
+
3360
3370
  /**
3361
3371
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
3362
3372
  *
@@ -3366,4 +3376,4 @@ declare function roadmapIssueUrl(issue: number): string;
3366
3376
  */
3367
3377
  declare const SIFA_SDK_VERSION: string;
3368
3378
 
3369
- 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 ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BlobProxyVariant, type BuildGermMessageUrlInput, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_DESCRIPTION_LENGTH, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPANY_PAGE_ROSTER_MIN_MEMBERS, 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 CompanyHqFacts, 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, GERM_MESSAGE_HOSTS, type GermButtonAudience, GermDeclarationRecord, type GermPlatform, 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, OPTIONAL_COMPLETENESS_SIGNALS, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_MODE_VALUES, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PRESENTATION_ROLE_VALUES, 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 ShouldShowGermButtonInput, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardContent, 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 TalksImportIssue, type TalksImportIssueCode, type TalksImportValidation, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, type VersionablePublication, WIKIDATA_ORG_TYPE_CLASSES, WIKIDATA_ORG_TYPE_CLASS_QIDS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, appLinksItems, blobProxyUrl, buildGermMessageUrl, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, companyPageRichness, 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, germButtonAudience, germPlatformFromUserAgent, 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, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isOnBehalfOfApplicable, isOptionalCompletenessSignal, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isStrictDid, isTeachingCourse, isTimelineWorthy, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openAlexWorkUrl, openToTokenToValue, openToValueToToken, orgTypeFromRorTypes, orgTypeFromWikidataClasses, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, shouldShowGermButton, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodyContent, streamCardBodySchema, streamCardContent, streamCardSubjectSchema, streamCardSubjectText, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, validateTalksImport, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
3379
+ 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 ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BlobProxyVariant, type BuildGermMessageUrlInput, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_DESCRIPTION_LENGTH, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPANY_PAGE_ROSTER_MIN_MEMBERS, 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 CompanyHqFacts, 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, GERM_MESSAGE_HOSTS, type GermButtonAudience, GermDeclarationRecord, type GermPlatform, 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, OPTIONAL_COMPLETENESS_SIGNALS, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_MODE_VALUES, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PRESENTATION_ROLE_VALUES, 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 RoadmapBodyParts, type RoadmapIssueLink, 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 ShouldShowGermButtonInput, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardContent, 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 TalksImportIssue, type TalksImportIssueCode, type TalksImportValidation, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, type VersionablePublication, WIKIDATA_ORG_TYPE_CLASSES, WIKIDATA_ORG_TYPE_CLASS_QIDS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, appLinksItems, blobProxyUrl, buildGermMessageUrl, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, companyPageRichness, 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, germButtonAudience, germPlatformFromUserAgent, 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, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isOnBehalfOfApplicable, isOptionalCompletenessSignal, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isStrictDid, isTeachingCourse, isTimelineWorthy, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openAlexWorkUrl, openToTokenToValue, openToValueToToken, orgTypeFromRorTypes, orgTypeFromWikidataClasses, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, shouldShowGermButton, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, splitRoadmapBody, streamAddressSchema, streamAuthorSchema, streamCardBodyContent, streamCardBodySchema, streamCardContent, streamCardSubjectSchema, streamCardSubjectText, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, validateTalksImport, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { P as ProfileSkill, a as ProfilePresentationDelivery, L as LocationValue, b as PdsProviderInfo, c as Profile, A as AccountFacetMode, d as ProfilePosition, e as ProfileCertification, f as ProfileEducation, g as ProfileHonor, h as ProfileLanguage, i as ProfileProject, j as ProfilePublication, k as ProfileInvolvement, R as RelatedIdentifier } from './index-DDh2RLvx.js';
2
2
  export { l as ActiveApp, m as ActorCard, n as AuthorSuggestion, C as CoSpeaker, E as Endorsement, o as EndorsementData, p as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, O as OrgAddressView, s as OrgFloorVerdict, t as OrgLinkView, u as OrgProfileView, v as PROJECT_ROLES, w as PositionConfirmations, x as PositionEmailVerification, y as PositionOrgVerification, z as PositionPeerVerification, B as PositionViewerConfirmation, D as PresentationLinkView, G as ProfileCourse, H as ProfileIndustry, I as ProfileInvestment, J as ProfileInvestmentLink, K as ProfileInvolvementLink, M as ProfileLocation, N as ProfileOverrideSource, Q as ProfilePresentation, S as ProfileVolunteering, T as ProjectEventView, U as ProjectMemberCard, V as ProjectRole, W as PublicationContributor, X as RecognizedEntity, Y as SkillRef, Z as SkillSuggestion, _ as TrustStat, $ as VerifiedAccount } from './index-DDh2RLvx.js';
3
- import { S as SearchFilters } from './types-CQA_vO39.js';
4
- export { A as ADULT_CONTENT_LABELS, a as ActiveAppView, b as ActivityLabel, c as AdultContentLabel, d as AtfundLinkView, C as CertificationView, e as CoSpeakerView, f as ContributorView, g as CourseView, D as DurationView, E as EMPTY_SITE_ACTIVITY_PRESET, h as EducationView, i as ExternalAccountView, H as HonorView, I as IndustryDomain, j as InvolvementLinkView, k as InvolvementView, L as LanguageView, P as PositionView, l as PresentationDeliveryView, m as PresentationView, n as ProfileLocationView, o as ProfileView, p as ProjectMemberView, q as ProjectView, r as PublicationView, R as RepoCollectionGroup, s as RepoDeleteOutcome, t as RepoDeleteRecordResult, u as RepoDeleteResult, v as RepoGroupDefinition, w as RepoGroupId, x as RepoInventory, y as RepoRecordLabel, z as RepoRecordSummary, B as SIFA_REPO_GROUPS, F as SITE_PRESET_MAX_TAGS, G as SITE_PRESET_MAX_TAG_LENGTH, J as SITE_PRESET_TAG_CATEGORY, K as SiteActivityPreset, M as SkillView, V as VolunteeringView, N as describeSifaRecord, O as hasAdultContent, Q as isSiteActivityPresetActive, T as matchesSiteActivityPreset, U as matchesSitePresetTags, W as normalizeSitePresetTag, X as parseSitePresetTags, Y as recordTags, Z as repoGroupForCollection, _ as siteActivityPresetSchema, $ as siteActivityPresetUpdateSchema } from './types-CQA_vO39.js';
3
+ import { S as SearchFilters } from './types-CkomzDlY.js';
4
+ export { A as ADULT_CONTENT_LABELS, a as ActiveAppView, b as ActivityLabel, c as AdultContentLabel, d as AtfundLinkView, C as CertificationView, e as CoSpeakerView, f as ContributorView, g as CourseView, D as DurationView, E as EMPTY_SITE_ACTIVITY_PRESET, h as EducationView, i as ExternalAccountView, H as HonorView, I as IndustryDomain, j as InvolvementLinkView, k as InvolvementView, L as LanguageView, P as PositionView, l as PresentationDeliveryView, m as PresentationView, n as ProfileLocationView, o as ProfileView, p as ProjectMemberView, q as ProjectView, r as PublicationView, R as RepoCollectionGroup, s as RepoDeleteOutcome, t as RepoDeleteRecordResult, u as RepoDeleteResult, v as RepoGroupDefinition, w as RepoGroupId, x as RepoInventory, y as RepoRecordLabel, z as RepoRecordSummary, B as SIFA_REPO_GROUPS, F as SITE_PRESET_MAX_TAGS, G as SITE_PRESET_MAX_TAG_LENGTH, J as SITE_PRESET_TAG_CATEGORY, K as SiteActivityPreset, M as SkillView, V as VolunteeringView, N as describeSifaRecord, O as hasAdultContent, Q as isSiteActivityPresetActive, T as matchesSiteActivityPreset, U as matchesSitePresetTags, W as normalizeSitePresetTag, X as parseSitePresetTags, Y as recordTags, Z as repoGroupForCollection, _ as siteActivityPresetSchema, $ as siteActivityPresetUpdateSchema } from './types-CkomzDlY.js';
5
5
  import { A as AgentRef } from './verification-providers-DeyGqaoC.js';
6
6
  export { a as AccountVerification, V as VERIFICATION_PROVIDERS, b as VerificationProvider, c as VerificationProviderId, d as VerificationSource, e as VerifierListItem, f as agentRefSchema, g as atUriSchema, h as buildVerifierListMembers, i as cidSchema, j as datetimeSchema, k as didSchema, l as externalRecordRefSchema, m as getVerificationProvider, n as isKnownVerificationProvider, o as languageTagSchema, p as maxGraphemes, q as partialDateSchema, r as primaryVerification, s as resolveVerificationBadges, t as resolveVerifierProvider, u as selfLabelsSchema, v as skillRefSchema, w as strongRefSchema, x as uriSchema, y as verificationLabel } from './verification-providers-DeyGqaoC.js';
7
7
  import { P as PresentationDuration, a as ProfilePresentationDeliveryRecord, b as ProfilePresentationRecord, O as OrgProfileRecord } from './profile-investment-QSwX2GL5.js';
8
8
  export { A as ArtifactLink, c as ArtifactLinkSchema, d as AtmosphereFeedItem, e as AtmosphereFeedItemSchema, B as BlobRef, f as BlobRefSchema, E as EMPLOYMENT_STATUS_TOKENS, g as EmploymentVerificationRecord, h as EmploymentVerificationRecordSchema, i as EmploymentVerificationResolution, j as EndorsementConfirmationRecord, k as EndorsementConfirmationRecordSchema, l as EndorsementRecord, m as EndorsementRecordSchema, F as FeedActor, n as FeedActorSchema, o as FeedCursor, p as FollowFeedItem, q as FollowFeedItemSchema, r as FollowFeedPage, s as FollowFeedPageSchema, G as GraphFollowRecord, t as GraphFollowRecordSchema, I as InvestmentAmountSchema, u as OrgEmploymentAttestationRecord, v as OrgEmploymentAttestationRecordSchema, w as OrgProfileRecordSchema, x as PROFILE_INVESTMENT_NSID, y as PROFILE_INVOLVEMENT_NSID, z as PresentationDurationSchema, C as PresentationLink, D as PresentationLinkSchema, H as ProfileCertificationRecord, J as ProfileCertificationRecordSchema, K as ProfileCourseRecord, L as ProfileCourseRecordSchema, M as ProfileEducationRecord, N as ProfileEducationRecordSchema, Q as ProfileExternalAccountRecord, R as ProfileExternalAccountRecordSchema, S as ProfileHonorRecord, T as ProfileHonorRecordSchema, U as ProfileInvestmentRecordSchema, V as ProfileInvolvementRecord, W as ProfileInvolvementRecordSchema, X as ProfileLanguageRecord, Y as ProfileLanguageRecordSchema, Z as ProfilePositionRecord, _ as ProfilePositionRecordSchema, $ as ProfilePresentationDeliveryRecordSchema, a0 as ProfilePresentationRecordSchema, a1 as ProfileProjectRecord, a2 as ProfileProjectRecordSchema, a3 as ProfilePublicationRecord, a4 as ProfilePublicationRecordSchema, a5 as ProfileSelfRecord, a6 as ProfileSelfRecordSchema, a7 as ProfileSkillRecord, a8 as ProfileSkillRecordSchema, a9 as ProfileVolunteeringRecord, aa as ProfileVolunteeringRecordSchema, ab as PublicationAuthor, ac as PublicationAuthorSchema, ad as RelatedIdentifierSchema, ae as ResolveEmploymentVerificationOptions, af as SifaFeedItem, ag as SifaFeedItemSchema, ah as VERIFICATION_METHOD_TOKENS, ai as decodeFeedCursor, aj as encodeFeedCursor, ak as makeGraphFollowRecordSchema, al as resolveEmploymentVerification } from './profile-investment-QSwX2GL5.js';
9
9
  import { z } from 'zod';
10
- export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-CwJymH9d.js';
10
+ export { P as ProfileSummary, S as SummarizeProfileViewOptions, s as summarizeProfileView } from './profile-summary-DF8-evvA.js';
11
11
  import { E as EntitySearchResult } from './follow-profile-CVcA2w1v.js';
12
12
  export { a as EntityImportSearchResponse, b as EntityImportSearchResponseSchema, c as EntityMintDomainResponse, d as EntityMintDomainResponseSchema, e as EntityResolveDomainRequest, f as EntityResolveDomainRequestSchema, g as EntityResolveDomainResponse, h as EntityResolveDomainResponseSchema, i as EntitySearchResponse, j as EntitySearchResponseSchema, k as EntitySearchResultSchema, l as EntitySelectRequest, m as EntitySelectRequestSchema, n as EntitySelectResponse, o as EntitySelectResponseSchema, F as FEATURE_FLAGS, p as FeatureAllowlistEntry, q as FeatureAllowlistEntrySchema, r as FeatureFlag, s as FollowProfileItem, t as FollowProfilePage, u as FollowProfilePageSchema, v as FollowProfileSchema } from './follow-profile-CVcA2w1v.js';
13
13
  import { G as GermDeclarationRecord } from './germ-declaration-BQBocGww.js';
@@ -3357,6 +3357,16 @@ declare const ROADMAP_ITEM_META: Record<string, RoadmapItemMeta>;
3357
3357
  /** The GitHub issue URL for a sifa-workspace issue number. */
3358
3358
  declare function roadmapIssueUrl(issue: number): string;
3359
3359
 
3360
+ interface RoadmapIssueLink {
3361
+ number: number;
3362
+ url: string;
3363
+ }
3364
+ interface RoadmapBodyParts {
3365
+ description: string | null;
3366
+ issues: RoadmapIssueLink[];
3367
+ }
3368
+ declare function splitRoadmapBody(body: string | null | undefined): RoadmapBodyParts;
3369
+
3360
3370
  /**
3361
3371
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
3362
3372
  *
@@ -3366,4 +3376,4 @@ declare function roadmapIssueUrl(issue: number): string;
3366
3376
  */
3367
3377
  declare const SIFA_SDK_VERSION: string;
3368
3378
 
3369
- 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 ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BlobProxyVariant, type BuildGermMessageUrlInput, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_DESCRIPTION_LENGTH, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPANY_PAGE_ROSTER_MIN_MEMBERS, 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 CompanyHqFacts, 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, GERM_MESSAGE_HOSTS, type GermButtonAudience, GermDeclarationRecord, type GermPlatform, 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, OPTIONAL_COMPLETENESS_SIGNALS, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_MODE_VALUES, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PRESENTATION_ROLE_VALUES, 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 ShouldShowGermButtonInput, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardContent, 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 TalksImportIssue, type TalksImportIssueCode, type TalksImportValidation, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, type VersionablePublication, WIKIDATA_ORG_TYPE_CLASSES, WIKIDATA_ORG_TYPE_CLASS_QIDS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, appLinksItems, blobProxyUrl, buildGermMessageUrl, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, companyPageRichness, 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, germButtonAudience, germPlatformFromUserAgent, 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, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isOnBehalfOfApplicable, isOptionalCompletenessSignal, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isStrictDid, isTeachingCourse, isTimelineWorthy, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openAlexWorkUrl, openToTokenToValue, openToValueToToken, orgTypeFromRorTypes, orgTypeFromWikidataClasses, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, shouldShowGermButton, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, streamAddressSchema, streamAuthorSchema, streamCardBodyContent, streamCardBodySchema, streamCardContent, streamCardSubjectSchema, streamCardSubjectText, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, validateTalksImport, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
3379
+ 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 ActivityItem, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type ActivityVerbMap, AgentRef, type AgentRefFlat, type AppCategoryId, type AppUrlPatterns, type AppWithId, type ArtifactLinkKindOption, type BlobProxyVariant, type BuildGermMessageUrlInput, type BuildProfileHighlightsOptions, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_DESCRIPTION_LENGTH, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPANY_PAGE_ROSTER_MIN_MEMBERS, 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 CompanyHqFacts, 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, GERM_MESSAGE_HOSTS, type GermButtonAudience, GermDeclarationRecord, type GermPlatform, 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, OPTIONAL_COMPLETENESS_SIGNALS, type OpenToGroup, type OpenToOption, OrgProfileRecord, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_MODE_VALUES, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PRESENTATION_ROLE_VALUES, 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 RoadmapBodyParts, type RoadmapIssueLink, 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 ShouldShowGermButtonInput, type SkillCategory, type StreamAddress, type StreamAuthor, type StreamCardBody, type StreamCardContent, 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 TalksImportIssue, type TalksImportIssueCode, type TalksImportValidation, type TierMeta, type ToStreamCardVMOptions, type UrlPathPolicy, type VersionablePublication, WIKIDATA_ORG_TYPE_CLASSES, WIKIDATA_ORG_TYPE_CLASS_QIDS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, actorShowsIdentity, appLinksItems, blobProxyUrl, buildGermMessageUrl, buildMetaDescription, buildProfileHighlights, buildTalkSlug, categoryForApp, certDateExtractor, classifyEntityRef, collapseContributors, companyPageRichness, 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, germButtonAudience, germPlatformFromUserAgent, 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, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupPublicationVersions, groupSkillsByCategory, groupSkillsBySubCategory, groupSkillsForDisplay, hasPersonalProfileContent, hoistPrimary, isAppCategory, isBeyondLookahead, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isLinked, isOnBehalfOfApplicable, isOptionalCompletenessSignal, isPseudoEmployer, isRegistrableDomainHandle, isRelationalActivity, isRoleLineRedundant, isSectionPopulated, isSelfAuthoredRich, isStrictDid, isTeachingCourse, isTimelineWorthy, isUpcomingStart, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, locationSegments, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeDoi, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeSkillCategory, normalizeWorkplaceTypes, openAlexWorkUrl, openToTokenToValue, openToValueToToken, orgTypeFromRorTypes, orgTypeFromWikidataClasses, parseEndorsementComment, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, pdsProviderFromApi, pickPrimaryFlagged, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, qualifiesAsOrg, readEqfLevel, relativeLuminance, renderAsLine, rendersCompanyProfile, rendersPersonalProfile, resolveAccountFacetMode, resolveAgentRef, resolveCardHealth, resolveCardUrl, resolveEmbed, rgbToString, roadmapIssueUrl, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, shouldRenderHighlights, shouldShowGermButton, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, splitCoursesByRole, splitRoadmapBody, streamAddressSchema, streamAuthorSchema, streamCardBodyContent, streamCardBodySchema, streamCardContent, streamCardSubjectSchema, streamCardSubjectText, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, suggestEqfLevelFromDegree, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, validateTalksImport, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
package/dist/index.js CHANGED
@@ -392,8 +392,11 @@ import {
392
392
  ROADMAP_ISSUES_REPO,
393
393
  roadmapIssueUrl
394
394
  } from "./roadmap/index.js";
395
+ import {
396
+ splitRoadmapBody
397
+ } from "./roadmap/board-body.js";
395
398
  import { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from "./repo/index.js";
396
- var SIFA_SDK_VERSION = "0.20.0";
399
+ var SIFA_SDK_VERSION = "0.20.2";
397
400
  export {
398
401
  ACTIVITY_TIERS,
399
402
  ACTIVITY_VERBS,
@@ -740,6 +743,7 @@ export {
740
743
  sortProjects,
741
744
  sortPublications,
742
745
  splitCoursesByRole,
746
+ splitRoadmapBody,
743
747
  streamAddressSchema,
744
748
  streamAuthorSchema,
745
749
  streamCardBodyContent,
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 PositionConfirmations,\n PositionViewerConfirmation,\n PositionOrgVerification,\n PositionEmailVerification,\n PositionPeerVerification,\n ProfilePresentation,\n CoSpeaker,\n ActorCard,\n AuthorSuggestion,\n ProjectMemberCard,\n ProjectRole,\n ProfilePresentationDelivery,\n ProfileProject,\n ProjectEventView,\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 buildVerifierListMembers,\n primaryVerification,\n resolveVerificationBadges,\n verificationLabel,\n type AccountVerification,\n type VerifierListItem,\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 openAlexWorkUrl,\n blobProxyUrl,\n type BlobProxyVariant,\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 PRESENTATION_ROLE_VALUES,\n PRESENTATION_MODE_VALUES,\n type CsvRow,\n type ParsedPresentation,\n type ParsedDelivery,\n validateTalksImport,\n type TalksImportIssue,\n type TalksImportIssueCode,\n type TalksImportValidation,\n} from './import/index.js';\n\nexport {\n ACTIVITY_VISIBILITY_RULES,\n ADULT_CONTENT_LABELS,\n APP_URL_PATTERNS,\n COLLECTION_TO_APP,\n appLinksItems,\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 isTimelineWorthy,\n renderAsLine,\n streamCardBodyContent,\n streamCardContent,\n streamCardSubjectText,\n toStreamCardVM,\n toStreamCardVMs,\n type ActivityItem,\n type StreamCardContent,\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 isOptionalCompletenessSignal,\n OPTIONAL_COMPLETENESS_SIGNALS,\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 companyPageRichness,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n COMPANY_PAGE_MIN_DESCRIPTION_LENGTH,\n COMPANY_PAGE_ROSTER_MIN_MEMBERS,\n countRecentActivity,\n followingFeedFallbackApp,\n SELF_APP_ID,\n excludeSelfApp,\n GERM_MESSAGE_HOSTS,\n isStrictDid,\n germButtonAudience,\n shouldShowGermButton,\n buildGermMessageUrl,\n germPlatformFromUserAgent,\n type GermPlatform,\n type GermButtonAudience,\n type ShouldShowGermButtonInput,\n type BuildGermMessageUrlInput,\n actorShowsIdentity,\n EMPTY_SITE_ACTIVITY_PRESET,\n SITE_PRESET_TAG_CATEGORY,\n SITE_PRESET_MAX_TAGS,\n SITE_PRESET_MAX_TAG_LENGTH,\n normalizeSitePresetTag,\n parseSitePresetTags,\n isSiteActivityPresetActive,\n recordTags,\n matchesSitePresetTags,\n matchesSiteActivityPreset,\n siteActivityPresetSchema,\n siteActivityPresetUpdateSchema,\n type SiteActivityPreset,\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 CompanyHqFacts,\n type PersonalFacetContent,\n resolveAgentRef,\n type AgentRefFlat,\n WIKIDATA_ORG_TYPE_CLASSES,\n WIKIDATA_ORG_TYPE_CLASS_QIDS,\n orgTypeFromRorTypes,\n orgTypeFromWikidataClasses,\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 EmploymentVerificationRecordSchema,\n EMPLOYMENT_STATUS_TOKENS,\n VERIFICATION_METHOD_TOKENS,\n resolveEmploymentVerification,\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 EmploymentVerificationRecord,\n type EmploymentVerificationResolution,\n type ResolveEmploymentVerificationOptions,\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 GermDeclarationRecordSchema,\n GERM_SHOW_BUTTON_TO_VALUES,\n type GermDeclarationRecord,\n type GermShowButtonTo,\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":";AAgGA,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,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAiBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","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 PositionConfirmations,\n PositionViewerConfirmation,\n PositionOrgVerification,\n PositionEmailVerification,\n PositionPeerVerification,\n ProfilePresentation,\n CoSpeaker,\n ActorCard,\n AuthorSuggestion,\n ProjectMemberCard,\n ProjectRole,\n ProfilePresentationDelivery,\n ProfileProject,\n ProjectEventView,\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 buildVerifierListMembers,\n primaryVerification,\n resolveVerificationBadges,\n verificationLabel,\n type AccountVerification,\n type VerifierListItem,\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 openAlexWorkUrl,\n blobProxyUrl,\n type BlobProxyVariant,\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 PRESENTATION_ROLE_VALUES,\n PRESENTATION_MODE_VALUES,\n type CsvRow,\n type ParsedPresentation,\n type ParsedDelivery,\n validateTalksImport,\n type TalksImportIssue,\n type TalksImportIssueCode,\n type TalksImportValidation,\n} from './import/index.js';\n\nexport {\n ACTIVITY_VISIBILITY_RULES,\n ADULT_CONTENT_LABELS,\n APP_URL_PATTERNS,\n COLLECTION_TO_APP,\n appLinksItems,\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 isTimelineWorthy,\n renderAsLine,\n streamCardBodyContent,\n streamCardContent,\n streamCardSubjectText,\n toStreamCardVM,\n toStreamCardVMs,\n type ActivityItem,\n type StreamCardContent,\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 isOptionalCompletenessSignal,\n OPTIONAL_COMPLETENESS_SIGNALS,\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 companyPageRichness,\n COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS,\n COMPANY_PAGE_MIN_DESCRIPTION_LENGTH,\n COMPANY_PAGE_ROSTER_MIN_MEMBERS,\n countRecentActivity,\n followingFeedFallbackApp,\n SELF_APP_ID,\n excludeSelfApp,\n GERM_MESSAGE_HOSTS,\n isStrictDid,\n germButtonAudience,\n shouldShowGermButton,\n buildGermMessageUrl,\n germPlatformFromUserAgent,\n type GermPlatform,\n type GermButtonAudience,\n type ShouldShowGermButtonInput,\n type BuildGermMessageUrlInput,\n actorShowsIdentity,\n EMPTY_SITE_ACTIVITY_PRESET,\n SITE_PRESET_TAG_CATEGORY,\n SITE_PRESET_MAX_TAGS,\n SITE_PRESET_MAX_TAG_LENGTH,\n normalizeSitePresetTag,\n parseSitePresetTags,\n isSiteActivityPresetActive,\n recordTags,\n matchesSitePresetTags,\n matchesSiteActivityPreset,\n siteActivityPresetSchema,\n siteActivityPresetUpdateSchema,\n type SiteActivityPreset,\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 CompanyHqFacts,\n type PersonalFacetContent,\n resolveAgentRef,\n type AgentRefFlat,\n WIKIDATA_ORG_TYPE_CLASSES,\n WIKIDATA_ORG_TYPE_CLASS_QIDS,\n orgTypeFromRorTypes,\n orgTypeFromWikidataClasses,\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 EmploymentVerificationRecordSchema,\n EMPLOYMENT_STATUS_TOKENS,\n VERIFICATION_METHOD_TOKENS,\n resolveEmploymentVerification,\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 EmploymentVerificationRecord,\n type EmploymentVerificationResolution,\n type ResolveEmploymentVerificationOptions,\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 GermDeclarationRecordSchema,\n GERM_SHOW_BUTTON_TO_VALUES,\n type GermDeclarationRecord,\n type GermShowButtonTo,\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';\nexport {\n splitRoadmapBody,\n type RoadmapBodyParts,\n type RoadmapIssueLink,\n} from './roadmap/board-body.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":";AAgGA,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,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAiBK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { c as Profile, d as ProfilePosition, Y as SkillRef, D as PresentationLinkView } from './index-DDh2RLvx.js';
2
- import { a1 as SifaApiConfig, a0 as ApiFetchOptions, o as ProfileView, a3 as CreateResult, a2 as WriteResult } from './types-CQA_vO39.js';
2
+ import { a1 as SifaApiConfig, a0 as ApiFetchOptions, o as ProfileView, a3 as CreateResult, a2 as WriteResult } from './types-CkomzDlY.js';
3
3
  import { c as GermShowButtonTo } from './germ-declaration-BQBocGww.js';
4
- import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-CwJymH9d.js';
4
+ import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-DF8-evvA.js';
5
5
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, l as EntitySelectRequest, n as EntitySelectResponse } from './follow-profile-CVcA2w1v.js';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { c as Profile, d as ProfilePosition, Y as SkillRef, D as PresentationLinkView } from './index-BQAKeEoj.cjs';
2
- import { a1 as SifaApiConfig, a0 as ApiFetchOptions, o as ProfileView, a3 as CreateResult, a2 as WriteResult } from './types-DMTHqi2m.cjs';
2
+ import { a1 as SifaApiConfig, a0 as ApiFetchOptions, o as ProfileView, a3 as CreateResult, a2 as WriteResult } from './types-JydVIhN5.cjs';
3
3
  import { c as GermShowButtonTo } from './germ-declaration-BQBocGww.cjs';
4
- import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-TkVxvll4.cjs';
4
+ import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-BCOKt3qS.cjs';
5
5
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, l as EntitySelectRequest, n as EntitySelectResponse } from './follow-profile-CgLLLQtJ.cjs';
6
6
 
7
7
  /**
@@ -1,4 +1,4 @@
1
- import { o as ProfileView } from './types-DMTHqi2m.cjs';
1
+ import { o as ProfileView } from './types-JydVIhN5.cjs';
2
2
 
3
3
  /**
4
4
  * Compact professional summary derived from a {@link ProfileView}.
@@ -1,4 +1,4 @@
1
- import { o as ProfileView } from './types-CQA_vO39.js';
1
+ import { o as ProfileView } from './types-CkomzDlY.js';
2
2
 
3
3
  /**
4
4
  * Compact professional summary derived from a {@link ProfileView}.
@@ -104,7 +104,8 @@ function extractWriteError(e) {
104
104
  error: body.message ?? body.error ?? `Request failed (${e.status})`,
105
105
  status: e.status,
106
106
  ...e.retryAfterSeconds !== void 0 ? { retryAfterSeconds: e.retryAfterSeconds } : {},
107
- ...body.pdsHost ? { pdsHost: body.pdsHost } : {}
107
+ ...body.pdsHost ? { pdsHost: body.pdsHost } : {},
108
+ ...typeof body.code === "string" && body.code !== "" ? { code: body.code } : {}
108
109
  };
109
110
  }
110
111
  async function apiWrite(config, path, method, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query/client.ts"],"sourcesContent":["/**\n * Foundation HTTP client for talking to the Sifa AppView.\n *\n * Stateless. Consumers supply a {@link SifaApiConfig} per call (the React\n * hooks read it from context; non-React consumers pass it explicitly). No\n * singletons, no module-level state.\n */\n\n/** Configuration passed to every fetcher. */\nexport interface SifaApiConfig {\n /** Base URL of the sifa-api AppView, e.g. `https://api.sifa.id`. No trailing slash. */\n baseUrl: string;\n /**\n * Optional fetch implementation. Defaults to {@link globalThis.fetch}.\n * Lets Next.js consumers pass their cache-enhanced fetch; node/Expo\n * consumers can leave this unset.\n */\n fetch?: typeof fetch;\n /**\n * Optional per-request auth-token minter for auth-required reads. The NATIVE\n * app supplies this (it has no sifa-api session cookie): given a method NSID\n * (`lxm`), it mints a short-lived AT Protocol service-auth JWT on the user's\n * PDS (see the SDK's `/atproto` `mintServiceAuthToken`) and returns it; the\n * fetcher attaches it as `Authorization: Bearer`. Web omits this and relies on\n * its session cookie (`credentials: 'include'`). Return `null` to send no\n * token. See `sifa-api` `createIdentityMiddleware`.\n */\n getAuthToken?: (lxm: string) => Promise<string | null>;\n}\n\n/** Options accepted by {@link apiFetch}. */\nexport interface ApiFetchOptions {\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n /** Request body. Serialized to JSON automatically. */\n body?: unknown;\n /** AbortSignal. Defaults to `AbortSignal.timeout(timeoutMs)` if `timeoutMs` is set. */\n signal?: AbortSignal;\n /** Per-call timeout in milliseconds. Default: 10_000. Ignored if `signal` is provided. */\n timeoutMs?: number;\n /** Retry on HTTP 429 up to 3 times with the server's `Retry-After` delay (capped at 3s). */\n retryOn429?: boolean;\n /** Additional headers. `Content-Type: application/json` is set automatically when `body` is present. */\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n cache?: RequestCache;\n /**\n * Next.js-specific cache hints. Ignored on non-Next runtimes. Passed\n * through transparently as part of {@link RequestInit}.\n */\n next?: { revalidate?: number | false; tags?: string[] };\n}\n\n/** Error thrown by {@link apiFetch} on non-2xx responses. */\nexport class ApiError extends Error {\n readonly status: number;\n readonly body: unknown;\n /** Seconds until a rate limit resets, read from the headers of a 429. */\n readonly retryAfterSeconds?: number;\n\n constructor(message: string, status: number, body?: unknown, retryAfterSeconds?: number) {\n super(message);\n this.name = 'ApiError';\n this.status = status;\n this.body = body;\n if (retryAfterSeconds !== undefined) this.retryAfterSeconds = retryAfterSeconds;\n }\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst MAX_RATE_LIMIT_RETRIES = 3;\nconst RATE_LIMIT_RETRY_CAP_SECONDS = 3;\n\n/**\n * Headers sifa-api (`@fastify/rate-limit`) sets on a 429, in preference order.\n * Both carry an integer count of seconds until the limit resets.\n */\nconst RATE_LIMIT_RESET_HEADERS = ['retry-after', 'x-ratelimit-reset'] as const;\n\n/**\n * Seconds to wait before retrying a rate-limited response, or `undefined` when\n * no header carries a positive integer (`Retry-After` may also be an HTTP\n * date, which sifa-api never sends).\n */\nfunction parseRetryAfterSeconds(headers: Headers): number | undefined {\n for (const name of RATE_LIMIT_RESET_HEADERS) {\n const seconds = Number.parseInt(headers.get(name) ?? '', 10);\n if (Number.isFinite(seconds) && seconds > 0) return seconds;\n }\n return undefined;\n}\n\n/**\n * Encode a handle or DID for safe interpolation into a request path,\n * idempotently.\n *\n * Plain {@link encodeURIComponent} double-encodes an already-encoded\n * identifier: Next.js hands route params to RSC pages percent-encoded on a\n * hard navigation (`did%3Aplc%3A...`) but decoded on client-side navigation\n * (`did:plc:...`). Encoding the former again turns `%` into `%25`, so the\n * AppView reads `did%3A...` as a literal handle, finds no match, and 404s —\n * which is why DID profile links broke on direct visits but worked when\n * clicked within the app.\n *\n * AT identifiers (handles are domain names, DIDs are `did:method:...`) never\n * contain a literal `%`, so decoding a decoded value is a no-op. A malformed\n * percent sequence (lone `%`) makes {@link decodeURIComponent} throw; in that\n * case we keep the original value so behaviour matches the prior bare\n * `encodeURIComponent`.\n */\nexport function encodeIdentifier(value: string): string {\n let decoded = value;\n try {\n decoded = decodeURIComponent(value);\n } catch {\n // Malformed percent-encoding — fall back to the raw value.\n }\n return encodeURIComponent(decoded);\n}\n\n/**\n * Generic fetcher used by all SDK query and mutation functions.\n *\n * Returns parsed JSON typed as `T`. Throws {@link ApiError} on non-2xx\n * responses. Use {@link apiFetchOrNull} when 404 should resolve to `null`\n * instead.\n */\nexport async function apiFetch<T = unknown>(\n config: SifaApiConfig,\n path: string,\n options: ApiFetchOptions = {},\n): Promise<T> {\n const fetchFn = config.fetch ?? globalThis.fetch;\n const url = `${config.baseUrl}${path}`;\n const maxRetries = options.retryOn429 ? MAX_RATE_LIMIT_RETRIES : 0;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const signal = options.signal ?? AbortSignal.timeout(options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n\n const headers: Record<string, string> = { ...(options.headers ?? {}) };\n let body: BodyInit | undefined;\n if (options.body !== undefined) {\n headers['Content-Type'] ??= 'application/json';\n body = JSON.stringify(options.body);\n }\n\n // `next` is a Next.js extension to RequestInit; cast through.\n const init = {\n method: options.method ?? 'GET',\n headers,\n body,\n signal,\n credentials: options.credentials,\n cache: options.cache,\n ...(options.next ? { next: options.next } : {}),\n } as RequestInit;\n\n const res = await fetchFn(url, init);\n\n if (res.status === 429 && attempt < maxRetries) {\n const retryAfterRaw = res.headers.get('retry-after');\n const retryAfter = retryAfterRaw ? Number.parseInt(retryAfterRaw, 10) : 2;\n const waitSeconds = Math.min(\n Number.isFinite(retryAfter) ? retryAfter : 2,\n RATE_LIMIT_RETRY_CAP_SECONDS,\n );\n await new Promise((r) => setTimeout(r, waitSeconds * 1000));\n continue;\n }\n\n if (!res.ok) {\n let errBody: unknown;\n try {\n errBody = (await res.json()) as unknown;\n } catch {\n try {\n errBody = await res.text();\n } catch {\n errBody = undefined;\n }\n }\n throw new ApiError(\n `Sifa API ${res.status} on ${path}`,\n res.status,\n errBody,\n res.status === 429 ? parseRetryAfterSeconds(res.headers) : undefined,\n );\n }\n\n // 204 and 205 are defined to carry no body, so res.json() throws on them.\n // apiWrite treats that throw as a failed write, which turned every\n // successful no-content response (roadmap unvote, remove reaction,\n // dismiss endorsement) into a reported error.\n if (res.status === 204 || res.status === 205) {\n return undefined as T;\n }\n\n return (await res.json()) as T;\n }\n\n throw new ApiError(`Sifa API exhausted retries on ${path}`, 429);\n}\n\n/**\n * Variant of {@link apiFetch} that resolves to `null` on HTTP 404 instead\n * of throwing. Useful for \"fetch by handle\" reads where missing is\n * expected (e.g. unknown profile).\n */\nexport async function apiFetchOrNull<T>(\n config: SifaApiConfig,\n path: string,\n options: ApiFetchOptions = {},\n): Promise<T | null> {\n try {\n return await apiFetch<T>(config, path, options);\n } catch (e) {\n if (e instanceof ApiError && e.status === 404) return null;\n throw e;\n }\n}\n\n/**\n * Failed branch of a {@link WriteResult}.\n *\n * Never throws -- writes against the user's PDS can fail in many ways\n * (network, PDS unreachable, rate limit) and the UI needs structured\n * results to render appropriate messages.\n */\nexport interface WriteFailure {\n success: false;\n error?: string;\n /**\n * PDS hostname returned by sifa-api when a write failed at the user's\n * Personal Data Server (issue #167). Lets the UI render\n * \"Your data server (eurosky.social) isn't responding\" instead of a\n * generic \"Request failed (500)\".\n */\n pdsHost?: string;\n /** HTTP status of a failed write. Absent on network errors. */\n status?: number;\n /**\n * Seconds until the rate limit resets, when a write was rejected with 429\n * and the server said how long to wait (sifa-workspace#533). Lets the UI say\n * \"try again in N seconds\" instead of a generic failure.\n */\n retryAfterSeconds?: number;\n}\n\n/**\n * Successful branch of a {@link WriteResult}: the response body fields\n * (`TExtra`) plus the optional failure fields. A body field that shares a name\n * with a failure field (e.g. a body `status`) keeps its body type here, so it\n * never collides with the HTTP status on the failure branch.\n */\nexport type WriteSuccess<TExtra extends object = Record<never, never>> = { success: true } & Omit<\n WriteFailure,\n 'success' | keyof TExtra\n> &\n TExtra;\n\n/**\n * Result returned by record-write mutations (create / update / delete),\n * discriminated on `success`. Narrow on `success` to read a body `status`\n * (success) or the HTTP `status` (failure). Other fields stay readable without\n * narrowing.\n */\nexport type WriteResult<TExtra extends object = Record<never, never>> =\n WriteSuccess<TExtra> | (WriteFailure & Partial<Omit<TExtra, keyof WriteFailure>>);\n\n/** Result returned by create mutations. Includes the newly created `rkey`. */\nexport type CreateResult = WriteResult<{ rkey?: string }>;\n\ninterface ApiErrorBody {\n message?: string;\n error?: string;\n pdsHost?: string;\n}\n\nfunction extractWriteError(e: ApiError): Omit<WriteFailure, 'success'> {\n const body = (e.body && typeof e.body === 'object' ? e.body : {}) as ApiErrorBody;\n return {\n // Fastify puts the detail in `message` and the status phrase in `error`;\n // sifa-api's own handlers (and the rate limiter) only set `error`.\n error: body.message ?? body.error ?? `Request failed (${e.status})`,\n status: e.status,\n ...(e.retryAfterSeconds !== undefined ? { retryAfterSeconds: e.retryAfterSeconds } : {}),\n ...(body.pdsHost ? { pdsHost: body.pdsHost } : {}),\n };\n}\n\n/**\n * Write mutation against the Sifa AppView. Wraps {@link apiFetch} with the\n * never-throws contract used by all sifa-web mutations: returns a\n * structured {@link WriteResult} on both success and failure, and\n * preserves the `pdsHost` field when the AppView reports a PDS-side\n * failure (issue #167).\n *\n * On success: returns `{ success: true, ...payload }` where `payload` is\n * whatever the server returned in JSON (or `{}` for 204).\n *\n * On failure: returns `{ success: false, error, pdsHost? }`. Never throws.\n *\n * Use {@link apiWriteCreate} when you specifically need the `rkey` from a\n * create response folded into the result shape.\n */\nexport async function apiWrite<TExtra extends object = Record<never, never>>(\n config: SifaApiConfig,\n path: string,\n method: 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n options: Omit<ApiFetchOptions, 'method'> = {},\n): Promise<WriteResult<TExtra>> {\n try {\n const data = await apiFetch<TExtra>(config, path, {\n method,\n credentials: 'include',\n ...options,\n });\n return { success: true, ...(data ?? ({} as TExtra)) };\n } catch (e) {\n if (e instanceof ApiError) {\n return { success: false, ...extractWriteError(e) };\n }\n return { success: false, error: 'Network error' };\n }\n}\n\n/**\n * Write mutation that expects the server to return a record key (`rkey`)\n * in its response body. Wraps {@link apiWrite} and folds the `rkey` into\n * the result shape so consumers get `{ success, rkey?, error?, pdsHost? }`.\n *\n * If the server returns additional fields (e.g. `feedUrl` from external\n * account creation), pass them via the `TExtra` generic to keep them\n * typed.\n */\nexport function apiWriteCreate<TExtra extends object = Record<never, never>>(\n config: SifaApiConfig,\n path: string,\n body: unknown,\n options: Omit<ApiFetchOptions, 'method' | 'body'> = {},\n): Promise<WriteResult<{ rkey?: string } & TExtra>> {\n return apiWrite<{ rkey?: string } & TExtra>(config, path, 'POST', {\n body,\n ...options,\n });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/query/client.ts"],"sourcesContent":["/**\n * Foundation HTTP client for talking to the Sifa AppView.\n *\n * Stateless. Consumers supply a {@link SifaApiConfig} per call (the React\n * hooks read it from context; non-React consumers pass it explicitly). No\n * singletons, no module-level state.\n */\n\n/** Configuration passed to every fetcher. */\nexport interface SifaApiConfig {\n /** Base URL of the sifa-api AppView, e.g. `https://api.sifa.id`. No trailing slash. */\n baseUrl: string;\n /**\n * Optional fetch implementation. Defaults to {@link globalThis.fetch}.\n * Lets Next.js consumers pass their cache-enhanced fetch; node/Expo\n * consumers can leave this unset.\n */\n fetch?: typeof fetch;\n /**\n * Optional per-request auth-token minter for auth-required reads. The NATIVE\n * app supplies this (it has no sifa-api session cookie): given a method NSID\n * (`lxm`), it mints a short-lived AT Protocol service-auth JWT on the user's\n * PDS (see the SDK's `/atproto` `mintServiceAuthToken`) and returns it; the\n * fetcher attaches it as `Authorization: Bearer`. Web omits this and relies on\n * its session cookie (`credentials: 'include'`). Return `null` to send no\n * token. See `sifa-api` `createIdentityMiddleware`.\n */\n getAuthToken?: (lxm: string) => Promise<string | null>;\n}\n\n/** Options accepted by {@link apiFetch}. */\nexport interface ApiFetchOptions {\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n /** Request body. Serialized to JSON automatically. */\n body?: unknown;\n /** AbortSignal. Defaults to `AbortSignal.timeout(timeoutMs)` if `timeoutMs` is set. */\n signal?: AbortSignal;\n /** Per-call timeout in milliseconds. Default: 10_000. Ignored if `signal` is provided. */\n timeoutMs?: number;\n /** Retry on HTTP 429 up to 3 times with the server's `Retry-After` delay (capped at 3s). */\n retryOn429?: boolean;\n /** Additional headers. `Content-Type: application/json` is set automatically when `body` is present. */\n headers?: Record<string, string>;\n credentials?: RequestCredentials;\n cache?: RequestCache;\n /**\n * Next.js-specific cache hints. Ignored on non-Next runtimes. Passed\n * through transparently as part of {@link RequestInit}.\n */\n next?: { revalidate?: number | false; tags?: string[] };\n}\n\n/** Error thrown by {@link apiFetch} on non-2xx responses. */\nexport class ApiError extends Error {\n readonly status: number;\n readonly body: unknown;\n /** Seconds until a rate limit resets, read from the headers of a 429. */\n readonly retryAfterSeconds?: number;\n\n constructor(message: string, status: number, body?: unknown, retryAfterSeconds?: number) {\n super(message);\n this.name = 'ApiError';\n this.status = status;\n this.body = body;\n if (retryAfterSeconds !== undefined) this.retryAfterSeconds = retryAfterSeconds;\n }\n}\n\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst MAX_RATE_LIMIT_RETRIES = 3;\nconst RATE_LIMIT_RETRY_CAP_SECONDS = 3;\n\n/**\n * Headers sifa-api (`@fastify/rate-limit`) sets on a 429, in preference order.\n * Both carry an integer count of seconds until the limit resets.\n */\nconst RATE_LIMIT_RESET_HEADERS = ['retry-after', 'x-ratelimit-reset'] as const;\n\n/**\n * Seconds to wait before retrying a rate-limited response, or `undefined` when\n * no header carries a positive integer (`Retry-After` may also be an HTTP\n * date, which sifa-api never sends).\n */\nfunction parseRetryAfterSeconds(headers: Headers): number | undefined {\n for (const name of RATE_LIMIT_RESET_HEADERS) {\n const seconds = Number.parseInt(headers.get(name) ?? '', 10);\n if (Number.isFinite(seconds) && seconds > 0) return seconds;\n }\n return undefined;\n}\n\n/**\n * Encode a handle or DID for safe interpolation into a request path,\n * idempotently.\n *\n * Plain {@link encodeURIComponent} double-encodes an already-encoded\n * identifier: Next.js hands route params to RSC pages percent-encoded on a\n * hard navigation (`did%3Aplc%3A...`) but decoded on client-side navigation\n * (`did:plc:...`). Encoding the former again turns `%` into `%25`, so the\n * AppView reads `did%3A...` as a literal handle, finds no match, and 404s —\n * which is why DID profile links broke on direct visits but worked when\n * clicked within the app.\n *\n * AT identifiers (handles are domain names, DIDs are `did:method:...`) never\n * contain a literal `%`, so decoding a decoded value is a no-op. A malformed\n * percent sequence (lone `%`) makes {@link decodeURIComponent} throw; in that\n * case we keep the original value so behaviour matches the prior bare\n * `encodeURIComponent`.\n */\nexport function encodeIdentifier(value: string): string {\n let decoded = value;\n try {\n decoded = decodeURIComponent(value);\n } catch {\n // Malformed percent-encoding — fall back to the raw value.\n }\n return encodeURIComponent(decoded);\n}\n\n/**\n * Generic fetcher used by all SDK query and mutation functions.\n *\n * Returns parsed JSON typed as `T`. Throws {@link ApiError} on non-2xx\n * responses. Use {@link apiFetchOrNull} when 404 should resolve to `null`\n * instead.\n */\nexport async function apiFetch<T = unknown>(\n config: SifaApiConfig,\n path: string,\n options: ApiFetchOptions = {},\n): Promise<T> {\n const fetchFn = config.fetch ?? globalThis.fetch;\n const url = `${config.baseUrl}${path}`;\n const maxRetries = options.retryOn429 ? MAX_RATE_LIMIT_RETRIES : 0;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const signal = options.signal ?? AbortSignal.timeout(options.timeoutMs ?? DEFAULT_TIMEOUT_MS);\n\n const headers: Record<string, string> = { ...(options.headers ?? {}) };\n let body: BodyInit | undefined;\n if (options.body !== undefined) {\n headers['Content-Type'] ??= 'application/json';\n body = JSON.stringify(options.body);\n }\n\n // `next` is a Next.js extension to RequestInit; cast through.\n const init = {\n method: options.method ?? 'GET',\n headers,\n body,\n signal,\n credentials: options.credentials,\n cache: options.cache,\n ...(options.next ? { next: options.next } : {}),\n } as RequestInit;\n\n const res = await fetchFn(url, init);\n\n if (res.status === 429 && attempt < maxRetries) {\n const retryAfterRaw = res.headers.get('retry-after');\n const retryAfter = retryAfterRaw ? Number.parseInt(retryAfterRaw, 10) : 2;\n const waitSeconds = Math.min(\n Number.isFinite(retryAfter) ? retryAfter : 2,\n RATE_LIMIT_RETRY_CAP_SECONDS,\n );\n await new Promise((r) => setTimeout(r, waitSeconds * 1000));\n continue;\n }\n\n if (!res.ok) {\n let errBody: unknown;\n try {\n errBody = (await res.json()) as unknown;\n } catch {\n try {\n errBody = await res.text();\n } catch {\n errBody = undefined;\n }\n }\n throw new ApiError(\n `Sifa API ${res.status} on ${path}`,\n res.status,\n errBody,\n res.status === 429 ? parseRetryAfterSeconds(res.headers) : undefined,\n );\n }\n\n // 204 and 205 are defined to carry no body, so res.json() throws on them.\n // apiWrite treats that throw as a failed write, which turned every\n // successful no-content response (roadmap unvote, remove reaction,\n // dismiss endorsement) into a reported error.\n if (res.status === 204 || res.status === 205) {\n return undefined as T;\n }\n\n return (await res.json()) as T;\n }\n\n throw new ApiError(`Sifa API exhausted retries on ${path}`, 429);\n}\n\n/**\n * Variant of {@link apiFetch} that resolves to `null` on HTTP 404 instead\n * of throwing. Useful for \"fetch by handle\" reads where missing is\n * expected (e.g. unknown profile).\n */\nexport async function apiFetchOrNull<T>(\n config: SifaApiConfig,\n path: string,\n options: ApiFetchOptions = {},\n): Promise<T | null> {\n try {\n return await apiFetch<T>(config, path, options);\n } catch (e) {\n if (e instanceof ApiError && e.status === 404) return null;\n throw e;\n }\n}\n\n/**\n * Failed branch of a {@link WriteResult}.\n *\n * Never throws -- writes against the user's PDS can fail in many ways\n * (network, PDS unreachable, rate limit) and the UI needs structured\n * results to render appropriate messages.\n */\nexport interface WriteFailure {\n success: false;\n error?: string;\n /**\n * PDS hostname returned by sifa-api when a write failed at the user's\n * Personal Data Server (issue #167). Lets the UI render\n * \"Your data server (eurosky.social) isn't responding\" instead of a\n * generic \"Request failed (500)\".\n */\n pdsHost?: string;\n /** HTTP status of a failed write. Absent on network errors. */\n status?: number;\n /**\n * Seconds until the rate limit resets, when a write was rejected with 429\n * and the server said how long to wait (sifa-workspace#533). Lets the UI say\n * \"try again in N seconds\" instead of a generic failure.\n */\n retryAfterSeconds?: number;\n /**\n * Stable, machine-readable error code from the response body (for example\n * `'CustomDomainRequired'`), when sifa-api sends one (sifa-workspace#736).\n * Branch on this instead of matching the `error` text, which can change.\n * Present only when the body carries a non-empty string `code`.\n */\n code?: string;\n}\n\n/**\n * Successful branch of a {@link WriteResult}: the response body fields\n * (`TExtra`) plus the optional failure fields. A body field that shares a name\n * with a failure field (e.g. a body `status`) keeps its body type here, so it\n * never collides with the HTTP status on the failure branch.\n */\nexport type WriteSuccess<TExtra extends object = Record<never, never>> = { success: true } & Omit<\n WriteFailure,\n 'success' | keyof TExtra\n> &\n TExtra;\n\n/**\n * Result returned by record-write mutations (create / update / delete),\n * discriminated on `success`. Narrow on `success` to read a body `status`\n * (success) or the HTTP `status` (failure). Other fields stay readable without\n * narrowing.\n */\nexport type WriteResult<TExtra extends object = Record<never, never>> =\n WriteSuccess<TExtra> | (WriteFailure & Partial<Omit<TExtra, keyof WriteFailure>>);\n\n/** Result returned by create mutations. Includes the newly created `rkey`. */\nexport type CreateResult = WriteResult<{ rkey?: string }>;\n\ninterface ApiErrorBody {\n message?: string;\n error?: string;\n pdsHost?: string;\n code?: unknown;\n}\n\nfunction extractWriteError(e: ApiError): Omit<WriteFailure, 'success'> {\n const body = (e.body && typeof e.body === 'object' ? e.body : {}) as ApiErrorBody;\n return {\n // Fastify puts the detail in `message` and the status phrase in `error`;\n // sifa-api's own handlers (and the rate limiter) only set `error`.\n error: body.message ?? body.error ?? `Request failed (${e.status})`,\n status: e.status,\n ...(e.retryAfterSeconds !== undefined ? { retryAfterSeconds: e.retryAfterSeconds } : {}),\n ...(body.pdsHost ? { pdsHost: body.pdsHost } : {}),\n ...(typeof body.code === 'string' && body.code !== '' ? { code: body.code } : {}),\n };\n}\n\n/**\n * Write mutation against the Sifa AppView. Wraps {@link apiFetch} with the\n * never-throws contract used by all sifa-web mutations: returns a\n * structured {@link WriteResult} on both success and failure, and\n * preserves the `pdsHost` field when the AppView reports a PDS-side\n * failure (issue #167) and the `code` field when the AppView sends a\n * stable error code.\n *\n * On success: returns `{ success: true, ...payload }` where `payload` is\n * whatever the server returned in JSON (or `{}` for 204).\n *\n * On failure: returns `{ success: false, error, status?, retryAfterSeconds?,\n * pdsHost?, code? }`. Never throws.\n *\n * Use {@link apiWriteCreate} when you specifically need the `rkey` from a\n * create response folded into the result shape.\n */\nexport async function apiWrite<TExtra extends object = Record<never, never>>(\n config: SifaApiConfig,\n path: string,\n method: 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n options: Omit<ApiFetchOptions, 'method'> = {},\n): Promise<WriteResult<TExtra>> {\n try {\n const data = await apiFetch<TExtra>(config, path, {\n method,\n credentials: 'include',\n ...options,\n });\n return { success: true, ...(data ?? ({} as TExtra)) };\n } catch (e) {\n if (e instanceof ApiError) {\n return { success: false, ...extractWriteError(e) };\n }\n return { success: false, error: 'Network error' };\n }\n}\n\n/**\n * Write mutation that expects the server to return a record key (`rkey`)\n * in its response body. Wraps {@link apiWrite} and folds the `rkey` into\n * the result shape so consumers get `{ success, rkey?, error?, pdsHost? }`.\n *\n * If the server returns additional fields (e.g. `feedUrl` from external\n * account creation), pass them via the `TExtra` generic to keep them\n * typed.\n */\nexport function apiWriteCreate<TExtra extends object = Record<never, never>>(\n config: SifaApiConfig,\n path: string,\n body: unknown,\n options: Omit<ApiFetchOptions, 'method' | 'body'> = {},\n): Promise<WriteResult<{ rkey?: string } & TExtra>> {\n return apiWrite<{ rkey?: string } & TExtra>(config, path, 'POST', {\n body,\n ...options,\n });\n}\n"],"mappings":"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","names":[]}
@@ -108,7 +108,8 @@ function extractWriteError(e) {
108
108
  error: body.message ?? body.error ?? `Request failed (${e.status})`,
109
109
  status: e.status,
110
110
  ...e.retryAfterSeconds !== void 0 ? { retryAfterSeconds: e.retryAfterSeconds } : {},
111
- ...body.pdsHost ? { pdsHost: body.pdsHost } : {}
111
+ ...body.pdsHost ? { pdsHost: body.pdsHost } : {},
112
+ ...typeof body.code === "string" && body.code !== "" ? { code: body.code } : {}
112
113
  };
113
114
  }
114
115
  async function apiWrite(config, path, method, options = {}) {
@@ -1648,8 +1649,6 @@ async function resolveQuotedPosts(config, uris, options = {}) {
1648
1649
  );
1649
1650
  return results;
1650
1651
  }
1651
-
1652
- // src/query/fetchers/roadmap.ts
1653
1652
  async function fetchRoadmapVotes(config, options = {}) {
1654
1653
  try {
1655
1654
  return await apiFetch(config, "/api/roadmap/votes", {
@@ -1674,13 +1673,16 @@ async function fetchMyRoadmapVotes(config, options = {}) {
1674
1673
  return [];
1675
1674
  }
1676
1675
  }
1677
- async function castRoadmapVote(config, key, options = {}) {
1676
+ function castRoadmapVote(config, key, options = {}) {
1677
+ return castUpvote(config, `/api/roadmap/votes/${encodeURIComponent(key)}`, options);
1678
+ }
1679
+ async function castUpvote(config, path, options) {
1678
1680
  const fetchFn = config.fetch ?? globalThis.fetch;
1679
- const url = `${config.baseUrl}/api/roadmap/votes/${encodeURIComponent(key)}`;
1681
+ const url = `${config.baseUrl}${path}`;
1680
1682
  try {
1681
1683
  const res = await fetchFn(url, {
1682
1684
  method: "POST",
1683
- // No body: the item key is in the URL. Do NOT declare a JSON content-type
1685
+ // No body: the item is in the URL. Do NOT declare a JSON content-type
1684
1686
  // for an empty body — Fastify rejects that with a 400 before the handler
1685
1687
  // runs. Only forward caller-provided headers.
1686
1688
  ...options.headers ? { headers: options.headers } : {},
@@ -1711,6 +1713,52 @@ async function castRoadmapVote(config, key, options = {}) {
1711
1713
  function retractRoadmapVote(config, key, options = {}) {
1712
1714
  return apiWrite(config, `/api/roadmap/votes/${encodeURIComponent(key)}`, "DELETE", options);
1713
1715
  }
1716
+ var roadmapBoardItemSchema = zod.z.object({
1717
+ uri: zod.z.string(),
1718
+ did: zod.z.string(),
1719
+ rkey: zod.z.string(),
1720
+ title: zod.z.string(),
1721
+ body: zod.z.string().nullable(),
1722
+ tags: zod.z.array(zod.z.string()),
1723
+ size: zod.z.enum(["small", "medium", "epic"]).nullable(),
1724
+ status: zod.z.enum(["done", "in-progress", "planned", "later", "under-review"]),
1725
+ votable: zod.z.boolean(),
1726
+ votes: zod.z.object({
1727
+ count: zod.z.number(),
1728
+ voters: zod.z.array(zod.z.object({ did: zod.z.string(), avatarUrl: zod.z.string().optional() }))
1729
+ }),
1730
+ createdAt: zod.z.string(),
1731
+ viewerVoted: zod.z.boolean()
1732
+ });
1733
+ async function fetchRoadmap(config, options = {}) {
1734
+ const { cookieHeader, ...rest } = options;
1735
+ const headers = { ...rest.headers ?? {} };
1736
+ if (cookieHeader) headers.cookie = cookieHeader;
1737
+ try {
1738
+ const data = await apiFetch(config, "/api/roadmap", {
1739
+ cache: "no-store",
1740
+ credentials: "include",
1741
+ ...rest,
1742
+ headers
1743
+ });
1744
+ if (!Array.isArray(data.items)) return null;
1745
+ return data.items.flatMap((raw) => {
1746
+ const parsed = roadmapBoardItemSchema.safeParse(raw);
1747
+ return parsed.success ? [parsed.data] : [];
1748
+ });
1749
+ } catch {
1750
+ return null;
1751
+ }
1752
+ }
1753
+ function itemVotePath(item) {
1754
+ return `/api/roadmap/items/${encodeURIComponent(item.did)}/${encodeURIComponent(item.rkey)}/vote`;
1755
+ }
1756
+ function castRoadmapItemVote(config, item, options = {}) {
1757
+ return castUpvote(config, itemVotePath(item), options);
1758
+ }
1759
+ function retractRoadmapItemVote(config, item, options = {}) {
1760
+ return apiWrite(config, itemVotePath(item), "DELETE", options);
1761
+ }
1714
1762
 
1715
1763
  // src/query/fetchers/destructive.ts
1716
1764
  function fetchWipePreview(config, options = {}) {
@@ -2333,6 +2381,7 @@ exports.bulkHideProfileItems = bulkHideProfileItems;
2333
2381
  exports.bulkHideStandardPublications = bulkHideStandardPublications;
2334
2382
  exports.bulkUnhideProfileItems = bulkUnhideProfileItems;
2335
2383
  exports.bulkUnhideStandardPublications = bulkUnhideStandardPublications;
2384
+ exports.castRoadmapItemVote = castRoadmapItemVote;
2336
2385
  exports.castRoadmapVote = castRoadmapVote;
2337
2386
  exports.checkAppAccount = checkAppAccount;
2338
2387
  exports.checkNetworkMapJobStatus = checkNetworkMapJobStatus;
@@ -2397,6 +2446,7 @@ exports.fetchReactionStatus = fetchReactionStatus;
2397
2446
  exports.fetchReceivedEndorsements = fetchReceivedEndorsements;
2398
2447
  exports.fetchReciprocityCandidate = fetchReciprocityCandidate;
2399
2448
  exports.fetchRepoInventory = fetchRepoInventory;
2449
+ exports.fetchRoadmap = fetchRoadmap;
2400
2450
  exports.fetchRoadmapVotes = fetchRoadmapVotes;
2401
2451
  exports.fetchRpgClaimable = fetchRpgClaimable;
2402
2452
  exports.fetchRpgStatus = fetchRpgStatus;
@@ -2442,6 +2492,7 @@ exports.repoExportUrl = repoExportUrl;
2442
2492
  exports.requestOrgDomainChallenge = requestOrgDomainChallenge;
2443
2493
  exports.resetProfile = resetProfile;
2444
2494
  exports.resolveQuotedPosts = resolveQuotedPosts;
2495
+ exports.retractRoadmapItemVote = retractRoadmapItemVote;
2445
2496
  exports.retractRoadmapVote = retractRoadmapVote;
2446
2497
  exports.revealMarqueDomain = revealMarqueDomain;
2447
2498
  exports.revokeConfirmation = revokeConfirmation;