@singi-labs/sifa-sdk 0.11.10 → 0.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-B5hAdi76.cjs';
2
- export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileLanguage, r as ProfileLocation, s as ProfileOverrideSource, t as ProfilePosition, u as ProfilePresentation, v as ProfileProject, w as ProfilePublication, x as ProfileVolunteering, y as PublicationContributor, z as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, B as hasAdultContent } from './adult-content-B5hAdi76.cjs';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BpZD_3ow.cjs';
2
+ export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileLanguage, r as ProfileLocation, s as ProfileOverrideSource, t as ProfilePosition, u as ProfilePresentation, v as ProfileProject, w as ProfilePublication, x as ProfileVolunteering, y as PublicationContributor, z as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, B as hasAdultContent } from './adult-content-BpZD_3ow.cjs';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.cjs';
4
4
  export { EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.cjs';
5
5
  export { A as AtmosphereFeedItem, d as AtmosphereFeedItemSchema, e as FEATURE_FLAGS, b as FeatureAllowlistEntry, f as FeatureAllowlistEntrySchema, c as FeatureFlag, g as FeedActor, h as FeedActorSchema, i as FeedCursor, j as FollowFeedItem, k as FollowFeedItemSchema, F as FollowFeedPage, l as FollowFeedPageSchema, a as FollowProfileItem, m as FollowProfilePage, n as FollowProfilePageSchema, o as FollowProfileSchema, S as SifaFeedItem, p as SifaFeedItemSchema, q as decodeFeedCursor, r as encodeFeedCursor } from './feed-DHTy7fUN.cjs';
@@ -762,16 +762,36 @@ interface ActivityItemForUrl {
762
762
  */
763
763
  declare function getAppIdForCollection(collection: string): string;
764
764
  /**
765
- * Resolve the canonical clickable URL for an activity item the same URL
766
- * the activity-card UI in sifa-web renders.
767
- *
768
- * Returns `null` when no link is appropriate (the card would render
769
- * non-clickable, or hide itself entirely).
765
+ * How the activity-card health scanner should verify a card is still live.
766
+ *
767
+ * - `record`: the URL is a first-party permalink that renders THIS record
768
+ * (e.g. a Bluesky post at bsky.app, a tangled repo, a smokesignal event).
769
+ * The authoritative liveness check is "does the record still exist on its
770
+ * PDS" — `com.atproto.repo.getRecord` on the item's own at-uri — NOT an
771
+ * HTTP probe of the rendering app. Rendering apps (bsky.app, tangled.sh)
772
+ * frequently answer HEAD with 404/405 while serving GET fine, which
773
+ * false-positives every permalink as broken.
774
+ * - `url`: the URL is a foreign or derived target — a bookmarked page, an
775
+ * external publisher, a *different* record's page, or a profile page.
776
+ * Its reachability is independent of this record, so probe the URL.
777
+ * - `none`: the card has no clickable URL; nothing to check.
778
+ */
779
+ type CardHealthStrategy = 'record' | 'url' | 'none';
780
+ interface CardHealth {
781
+ /** The clickable URL the card renders. Null when non-clickable. */
782
+ url: string | null;
783
+ /** How the scanner should verify liveness. See {@link CardHealthStrategy}. */
784
+ strategy: CardHealthStrategy;
785
+ }
786
+ /**
787
+ * Resolve the canonical clickable URL for an activity item **and** how its
788
+ * liveness should be checked — the single source of truth shared by:
789
+ * - sifa-web activity cards (which render `.url`), and
790
+ * - the sifa-api link-health scanner (which switches on `.strategy`: probe the
791
+ * record's PDS for `record`-strategy cards, probe the URL for `url`).
770
792
  *
771
- * Used by:
772
- * - sifa-web activity cards (single source of truth for href)
773
- * - sifa-api external-URL health scanner (must match what the UI links to,
774
- * so broken-link detection lines up with what users actually click)
793
+ * See {@link CardHealthStrategy} for why self-permalinks (bsky posts, etc.)
794
+ * must be verified by record existence rather than an HTTP probe of the app.
775
795
  *
776
796
  * Resolution order:
777
797
  * 1. Per-collection bespoke logic (tangled, kipclip, margin, smokesignal
@@ -780,6 +800,12 @@ declare function getAppIdForCollection(collection: string): string;
780
800
  * 2. Generic `record.url` field (used by hyperboards and similar).
781
801
  * 3. Pattern-based per-item / profile URL from the registry.
782
802
  */
803
+ declare function resolveCardHealth(item: ActivityItemForUrl): CardHealth;
804
+ /**
805
+ * Resolve the canonical clickable URL for an activity item — the same URL
806
+ * the activity-card UI in sifa-web renders. Thin wrapper over
807
+ * {@link resolveCardHealth}; returns `null` when no link is appropriate.
808
+ */
783
809
  declare function resolveCardUrl(item: ActivityItemForUrl): string | null;
784
810
 
785
811
  /**
@@ -993,4 +1019,4 @@ declare function pickPrimaryPosition<T extends PrimaryPositionCandidate>(positio
993
1019
  */
994
1020
  declare const SIFA_SDK_VERSION: string;
995
1021
 
996
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, type EmploymentTypeGroup, type EmploymentTypeOption, INDUSTRY_OPTIONS, type IndustryOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1022
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, type EmploymentTypeGroup, type EmploymentTypeOption, INDUSTRY_OPTIONS, type IndustryOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-B5hAdi76.js';
2
- export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileLanguage, r as ProfileLocation, s as ProfileOverrideSource, t as ProfilePosition, u as ProfilePresentation, v as ProfileProject, w as ProfilePublication, x as ProfileVolunteering, y as PublicationContributor, z as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, B as hasAdultContent } from './adult-content-B5hAdi76.js';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile } from './adult-content-BpZD_3ow.js';
2
+ export { e as ADULT_CONTENT_LABELS, f as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, g as Endorsement, h as EndorsementData, E as ExternalAccount, i as ExternalAccountKeytraceClaim, F as FeedItem, j as LanguageProficiency, k as PresentationLinkView, l as ProfileCertification, m as ProfileCourse, n as ProfileEducation, o as ProfileHonor, p as ProfileIndustry, q as ProfileLanguage, r as ProfileLocation, s as ProfileOverrideSource, t as ProfilePosition, u as ProfilePresentation, v as ProfileProject, w as ProfilePublication, x as ProfileVolunteering, y as PublicationContributor, z as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, B as hasAdultContent } from './adult-content-BpZD_3ow.js';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.js';
4
4
  export { EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileLanguageRecord, ProfileLanguageRecordSchema, ProfilePositionRecord, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecord, ProfileProjectRecordSchema, ProfilePublicationRecord, ProfilePublicationRecordSchema, ProfileSelfRecord, ProfileSelfRecordSchema, ProfileSkillRecord, ProfileSkillRecordSchema, ProfileVolunteeringRecord, ProfileVolunteeringRecordSchema, PublicationAuthor, PublicationAuthorSchema, atUriSchema, cidSchema, datetimeSchema, didSchema, externalRecordRefSchema, languageTagSchema, makeGraphFollowRecordSchema, maxGraphemes, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.js';
5
5
  export { A as AtmosphereFeedItem, d as AtmosphereFeedItemSchema, e as FEATURE_FLAGS, b as FeatureAllowlistEntry, f as FeatureAllowlistEntrySchema, c as FeatureFlag, g as FeedActor, h as FeedActorSchema, i as FeedCursor, j as FollowFeedItem, k as FollowFeedItemSchema, F as FollowFeedPage, l as FollowFeedPageSchema, a as FollowProfileItem, m as FollowProfilePage, n as FollowProfilePageSchema, o as FollowProfileSchema, S as SifaFeedItem, p as SifaFeedItemSchema, q as decodeFeedCursor, r as encodeFeedCursor } from './feed-DHTy7fUN.js';
@@ -762,16 +762,36 @@ interface ActivityItemForUrl {
762
762
  */
763
763
  declare function getAppIdForCollection(collection: string): string;
764
764
  /**
765
- * Resolve the canonical clickable URL for an activity item the same URL
766
- * the activity-card UI in sifa-web renders.
767
- *
768
- * Returns `null` when no link is appropriate (the card would render
769
- * non-clickable, or hide itself entirely).
765
+ * How the activity-card health scanner should verify a card is still live.
766
+ *
767
+ * - `record`: the URL is a first-party permalink that renders THIS record
768
+ * (e.g. a Bluesky post at bsky.app, a tangled repo, a smokesignal event).
769
+ * The authoritative liveness check is "does the record still exist on its
770
+ * PDS" — `com.atproto.repo.getRecord` on the item's own at-uri — NOT an
771
+ * HTTP probe of the rendering app. Rendering apps (bsky.app, tangled.sh)
772
+ * frequently answer HEAD with 404/405 while serving GET fine, which
773
+ * false-positives every permalink as broken.
774
+ * - `url`: the URL is a foreign or derived target — a bookmarked page, an
775
+ * external publisher, a *different* record's page, or a profile page.
776
+ * Its reachability is independent of this record, so probe the URL.
777
+ * - `none`: the card has no clickable URL; nothing to check.
778
+ */
779
+ type CardHealthStrategy = 'record' | 'url' | 'none';
780
+ interface CardHealth {
781
+ /** The clickable URL the card renders. Null when non-clickable. */
782
+ url: string | null;
783
+ /** How the scanner should verify liveness. See {@link CardHealthStrategy}. */
784
+ strategy: CardHealthStrategy;
785
+ }
786
+ /**
787
+ * Resolve the canonical clickable URL for an activity item **and** how its
788
+ * liveness should be checked — the single source of truth shared by:
789
+ * - sifa-web activity cards (which render `.url`), and
790
+ * - the sifa-api link-health scanner (which switches on `.strategy`: probe the
791
+ * record's PDS for `record`-strategy cards, probe the URL for `url`).
770
792
  *
771
- * Used by:
772
- * - sifa-web activity cards (single source of truth for href)
773
- * - sifa-api external-URL health scanner (must match what the UI links to,
774
- * so broken-link detection lines up with what users actually click)
793
+ * See {@link CardHealthStrategy} for why self-permalinks (bsky posts, etc.)
794
+ * must be verified by record existence rather than an HTTP probe of the app.
775
795
  *
776
796
  * Resolution order:
777
797
  * 1. Per-collection bespoke logic (tangled, kipclip, margin, smokesignal
@@ -780,6 +800,12 @@ declare function getAppIdForCollection(collection: string): string;
780
800
  * 2. Generic `record.url` field (used by hyperboards and similar).
781
801
  * 3. Pattern-based per-item / profile URL from the registry.
782
802
  */
803
+ declare function resolveCardHealth(item: ActivityItemForUrl): CardHealth;
804
+ /**
805
+ * Resolve the canonical clickable URL for an activity item — the same URL
806
+ * the activity-card UI in sifa-web renders. Thin wrapper over
807
+ * {@link resolveCardHealth}; returns `null` when no link is appropriate.
808
+ */
783
809
  declare function resolveCardUrl(item: ActivityItemForUrl): string | null;
784
810
 
785
811
  /**
@@ -993,4 +1019,4 @@ declare function pickPrimaryPosition<T extends PrimaryPositionCandidate>(positio
993
1019
  */
994
1020
  declare const SIFA_SDK_VERSION: string;
995
1021
 
996
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, type EmploymentTypeGroup, type EmploymentTypeOption, INDUSTRY_OPTIONS, type IndustryOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1022
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, type CardHealth, type CardHealthStrategy, type ContinentCode, type CsvRow, DIMENSIONS_MAX_SCORE, type DimensionKey, type DimensionMap, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, type EmploymentTypeGroup, type EmploymentTypeOption, INDUSTRY_OPTIONS, type IndustryOption, type KnownAppId, type LexiconEntry, LocationValue, MIN_SKILLS, type MergedProfileSkill, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, type OpenToGroup, type OpenToOption, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, type ParsedDelivery, type ParsedPresentation, type PdsProvider, PdsProviderInfo, type PlatformId, type PresentationDeliverySummary, PresentationDuration, type PresentationLinkTypeOption, type PresentationRoleOption, type PrimaryPositionCandidate, Profile, type ProfileCompletion, type ProfileDimensionInputs, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileSkill, type Publisher, type RgbColor, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SkillCategory, type TierMeta, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
package/dist/index.js CHANGED
@@ -2055,6 +2055,12 @@ function getAppIdForCollection(collection) {
2055
2055
  if (parts.length >= 2) return `${parts[0]}.${parts[1]}`;
2056
2056
  return collection;
2057
2057
  }
2058
+ function urlHealth(url) {
2059
+ return url ? { url, strategy: "url" } : { url: null, strategy: "none" };
2060
+ }
2061
+ function recordHealth(url) {
2062
+ return url ? { url, strategy: "record" } : { url: null, strategy: "none" };
2063
+ }
2058
2064
  function interpolate(pattern, vars) {
2059
2065
  let result = pattern;
2060
2066
  for (const [key, value] of Object.entries(vars)) {
@@ -2071,18 +2077,18 @@ function shouldUseItemPattern(appId, collection) {
2071
2077
  }
2072
2078
  return true;
2073
2079
  }
2074
- function patternUrl(appId, vars, collection) {
2080
+ function patternHealth(appId, vars, collection) {
2075
2081
  const patterns = APP_URL_PATTERNS[appId];
2076
- if (!patterns) return null;
2082
+ if (!patterns) return { url: null, strategy: "none" };
2077
2083
  if (patterns.urlPattern && shouldUseItemPattern(appId, collection)) {
2078
2084
  const url = interpolate(patterns.urlPattern, vars);
2079
- if (url) return url;
2085
+ if (url) return recordHealth(url);
2080
2086
  }
2081
2087
  if (patterns.profileUrlPattern) {
2082
2088
  const url = interpolate(patterns.profileUrlPattern, vars);
2083
- if (url) return url;
2089
+ if (url) return urlHealth(url);
2084
2090
  }
2085
- return null;
2091
+ return { url: null, strategy: "none" };
2086
2092
  }
2087
2093
  var TANGLED_REPO_SLUG = /^[a-zA-Z0-9._-]+$/;
2088
2094
  function stringOrNull(value) {
@@ -2095,33 +2101,31 @@ function parseAtUri(atUri) {
2095
2101
  if (!match || !match[1] || !match[2]) return null;
2096
2102
  return { did: match[1], rkey: match[2] };
2097
2103
  }
2098
- function resolveCardUrl(item) {
2104
+ function resolveCardHealth(item) {
2099
2105
  const { collection, record, uri, rkey, authorDid, authorHandle } = item;
2100
2106
  const appId = getAppIdForCollection(collection);
2101
2107
  if (collection.startsWith("sh.tangled.")) {
2102
2108
  const repoName = stringOrNull(record.name) ?? (collection === "sh.tangled.repo" ? rkey : null);
2103
2109
  if (repoName && authorHandle && TANGLED_REPO_SLUG.test(repoName)) {
2104
- return `https://tangled.sh/${authorHandle}/${repoName}`;
2110
+ return recordHealth(`https://tangled.sh/${authorHandle}/${repoName}`);
2105
2111
  }
2106
- return patternUrl("tangled", { handle: authorHandle, did: authorDid, rkey }, collection);
2112
+ return patternHealth("tangled", { handle: authorHandle, did: authorDid, rkey }, collection);
2107
2113
  }
2108
2114
  if (collection.startsWith("com.kipclip.") || collection.startsWith("community.lexicon.bookmarks.")) {
2109
2115
  const subject = stringOrNull(record.subject);
2110
- if (subject) return subject;
2111
- return patternUrl("kipclip", { handle: authorHandle, did: authorDid, rkey });
2116
+ if (subject) return urlHealth(subject);
2117
+ return patternHealth("kipclip", { handle: authorHandle, did: authorDid, rkey });
2112
2118
  }
2113
2119
  if (collection === "at.margin.bookmark") {
2114
- const source = stringOrNull(record.source);
2115
- if (source) return source;
2116
- return null;
2120
+ return urlHealth(stringOrNull(record.source));
2117
2121
  }
2118
2122
  if (collection === "at.margin.annotation" || collection === "at.margin.note") {
2119
2123
  const target = record.target;
2120
2124
  if (target != null && typeof target === "object") {
2121
2125
  const source = stringOrNull(target.source);
2122
- if (source) return source;
2126
+ if (source) return urlHealth(source);
2123
2127
  }
2124
- return APP_URL_PATTERNS.margin?.profileUrlPattern ?? null;
2128
+ return urlHealth(APP_URL_PATTERNS.margin?.profileUrlPattern ?? null);
2125
2129
  }
2126
2130
  if (collection === "community.lexicon.calendar.rsvp") {
2127
2131
  const subject = record.subject;
@@ -2130,65 +2134,68 @@ function resolveCardUrl(item) {
2130
2134
  if (subjectUri) {
2131
2135
  const parsed2 = parseAtUri(subjectUri);
2132
2136
  if (parsed2) {
2133
- return `https://smokesignal.events/${parsed2.did}/${parsed2.rkey}`;
2137
+ return urlHealth(`https://smokesignal.events/${parsed2.did}/${parsed2.rkey}`);
2134
2138
  }
2135
2139
  }
2136
2140
  }
2137
- return null;
2141
+ return { url: null, strategy: "none" };
2138
2142
  }
2139
2143
  if (collection === "community.lexicon.calendar.event") {
2140
2144
  const parsed2 = parseAtUri(uri);
2141
2145
  if (parsed2) {
2142
- return `https://smokesignal.events/${parsed2.did}/${parsed2.rkey}`;
2146
+ return recordHealth(`https://smokesignal.events/${parsed2.did}/${parsed2.rkey}`);
2143
2147
  }
2144
- return null;
2148
+ return { url: null, strategy: "none" };
2145
2149
  }
2146
2150
  if (collection === "quest.atmo.event") {
2147
2151
  const parsed2 = parseAtUri(uri);
2148
2152
  if (parsed2) {
2149
- return `https://atmo.rsvp/p/${parsed2.did}/e/${parsed2.rkey}`;
2153
+ return recordHealth(`https://atmo.rsvp/p/${parsed2.did}/e/${parsed2.rkey}`);
2150
2154
  }
2151
- return null;
2155
+ return { url: null, strategy: "none" };
2152
2156
  }
2153
2157
  if (collection === "quest.atmo.checkin") {
2154
2158
  const eventUri = stringOrNull(record.event);
2155
2159
  if (eventUri) {
2156
2160
  const parsed2 = parseAtUri(eventUri);
2157
2161
  if (parsed2) {
2158
- return `https://atmo.rsvp/p/${parsed2.did}/e/${parsed2.rkey}`;
2162
+ return urlHealth(`https://atmo.rsvp/p/${parsed2.did}/e/${parsed2.rkey}`);
2159
2163
  }
2160
2164
  }
2161
- return null;
2165
+ return { url: null, strategy: "none" };
2162
2166
  }
2163
2167
  if (collection === "fyi.atstore.listing.review") {
2164
2168
  const listingMeta = record.listingMeta;
2165
2169
  if (listingMeta != null && typeof listingMeta === "object") {
2166
2170
  const slug = stringOrNull(listingMeta.slug);
2167
- if (slug) return `https://atstore.fyi/products/${encodeURIComponent(slug)}`;
2171
+ if (slug) return urlHealth(`https://atstore.fyi/products/${encodeURIComponent(slug)}`);
2168
2172
  }
2169
- return APP_URL_PATTERNS.atstore?.profileUrlPattern ?? null;
2173
+ return urlHealth(APP_URL_PATTERNS.atstore?.profileUrlPattern ?? null);
2170
2174
  }
2171
2175
  if (collection === "social.crate.content") {
2172
- return stringOrNull(record.canonicalUrl);
2176
+ return urlHealth(stringOrNull(record.canonicalUrl));
2173
2177
  }
2174
2178
  if (collection === "social.crate.note") {
2175
- return null;
2179
+ return { url: null, strategy: "none" };
2176
2180
  }
2177
2181
  if (collection.startsWith("site.standard.")) {
2178
2182
  const siteUrl = stringOrNull(record.siteUrl);
2179
2183
  const path = stringOrNull(record.path);
2180
- if (siteUrl && path) return `${siteUrl}${path}`;
2181
- if (siteUrl) return siteUrl;
2184
+ if (siteUrl && path) return urlHealth(`${siteUrl}${path}`);
2185
+ if (siteUrl) return urlHealth(siteUrl);
2182
2186
  }
2183
2187
  if (collection === "io.kich.recipe.recipe") {
2184
- return patternUrl("kich", { handle: authorHandle, did: authorDid, rkey }, collection);
2188
+ return patternHealth("kich", { handle: authorHandle, did: authorDid, rkey }, collection);
2185
2189
  }
2186
2190
  if (collection === "exchange.recipe.recipe") {
2187
- return patternUrl("recipe", { handle: authorHandle, did: authorDid, rkey }, collection);
2191
+ return patternHealth("recipe", { handle: authorHandle, did: authorDid, rkey }, collection);
2188
2192
  }
2189
2193
  const recordUrl = stringOrNull(record.url);
2190
- if (recordUrl) return recordUrl;
2191
- return patternUrl(appId, { handle: authorHandle, did: authorDid, rkey }, collection);
2194
+ if (recordUrl) return urlHealth(recordUrl);
2195
+ return patternHealth(appId, { handle: authorHandle, did: authorDid, rkey }, collection);
2196
+ }
2197
+ function resolveCardUrl(item) {
2198
+ return resolveCardHealth(item).url;
2192
2199
  }
2193
2200
 
2194
2201
  // src/cards/visibility.ts
@@ -2628,6 +2635,8 @@ var ProfilePresentationDeliveryRecordSchema = z.object({
2628
2635
  links: z.array(PresentationLinkSchema).max(20).optional(),
2629
2636
  // Optional reference to a community.lexicon.calendar.event for this occasion.
2630
2637
  eventRef: externalRecordRefSchema.optional(),
2638
+ // DIDs of co-speakers who presented alongside the author at this occasion.
2639
+ coSpeakers: z.array(z.string().regex(/^did:[a-z]+:[^\s]+$/, "must be a DID")).max(20).optional(),
2631
2640
  createdAt: datetimeSchema
2632
2641
  });
2633
2642
  var ProfileProjectRecordSchema = z.object({
@@ -2684,8 +2693,8 @@ var ProfileVolunteeringRecordSchema = z.object({
2684
2693
  });
2685
2694
 
2686
2695
  // src/index.ts
2687
- var SIFA_SDK_VERSION = "0.11.10";
2696
+ var SIFA_SDK_VERSION = "0.11.12";
2688
2697
 
2689
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, AtmosphereFeedItemSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, DIMENSIONS_MAX_SCORE, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, EndorsementConfirmationRecordSchema, EndorsementRecordSchema, FEATURE_FLAGS, FeatureAllowlistEntrySchema, FeedActorSchema, FollowFeedItemSchema, FollowFeedPageSchema, FollowProfilePageSchema, FollowProfileSchema, GraphFollowRecordSchema, INDUSTRY_OPTIONS, MIN_SKILLS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, PresentationDurationSchema, PresentationLinkSchema, ProfileCertificationRecordSchema, ProfileCourseRecordSchema, ProfileEducationRecordSchema, ProfileExternalAccountRecordSchema, ProfileHonorRecordSchema, ProfileLanguageRecordSchema, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecordSchema, ProfilePublicationRecordSchema, ProfileSelfRecordSchema, ProfileSkillRecordSchema, ProfileVolunteeringRecordSchema, PublicationAuthorSchema, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, SifaFeedItemSchema, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, categoryForApp, certDateExtractor, cidSchema, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, externalRecordRefSchema, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, hasAdultContent, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, selfLabelsSchema, singleDateExtractor, sortByDateDesc, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, truncateGraphemes, uriSchema };
2698
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, AtmosphereFeedItemSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, DIMENSIONS_MAX_SCORE, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, EndorsementConfirmationRecordSchema, EndorsementRecordSchema, FEATURE_FLAGS, FeatureAllowlistEntrySchema, FeedActorSchema, FollowFeedItemSchema, FollowFeedPageSchema, FollowProfilePageSchema, FollowProfileSchema, GraphFollowRecordSchema, INDUSTRY_OPTIONS, MIN_SKILLS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PUBLISHERS, PresentationDurationSchema, PresentationLinkSchema, ProfileCertificationRecordSchema, ProfileCourseRecordSchema, ProfileEducationRecordSchema, ProfileExternalAccountRecordSchema, ProfileHonorRecordSchema, ProfileLanguageRecordSchema, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecordSchema, ProfilePublicationRecordSchema, ProfileSelfRecordSchema, ProfileSkillRecordSchema, ProfileVolunteeringRecordSchema, PublicationAuthorSchema, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, SifaFeedItemSchema, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, categoryForApp, certDateExtractor, cidSchema, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, externalRecordRefSchema, findIndustry, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, getAppCategoryIcon, getAppIdForCollection, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getWorkplaceTypeLabel, groupSkillsByCategory, hasAdultContent, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, rgbToString, sanitizeDisplayText, sanitizeHandleInput, selfLabelsSchema, singleDateExtractor, sortByDateDesc, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, truncateGraphemes, uriSchema };
2690
2699
  //# sourceMappingURL=index.js.map
2691
2700
  //# sourceMappingURL=index.js.map