@singi-labs/sifa-sdk 0.12.14 → 0.12.15

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
@@ -1191,6 +1191,13 @@ interface ActivityItem {
1191
1191
  rkey: string;
1192
1192
  /** The raw record from the PDS / AppView. Parsed defensively by the transform. */
1193
1193
  record: unknown;
1194
+ /**
1195
+ * The record author's handle, injected by the AppView. The activity snapshot
1196
+ * is per-author, so the api sets this per item (and per `subject` item) to let
1197
+ * handle-keyed apps (Bluesky, Popfeed, Tangled, ...) resolve a `sourceUrl`.
1198
+ * Absent when the handle is unknown; the transform then relies on the DID.
1199
+ */
1200
+ authorHandle?: string;
1194
1201
  /** App id from the app registry, e.g. `bluesky`. */
1195
1202
  appId: string;
1196
1203
  /** Human app name from the app registry, e.g. `Bluesky`. */
@@ -1487,6 +1494,13 @@ interface StreamCardVM {
1487
1494
  timestamp: string;
1488
1495
  /** Human sentence fragment, verb-aware. */
1489
1496
  title: string;
1497
+ /**
1498
+ * Canonical http(s) permalink to this record on its source app (e.g. a
1499
+ * Bluesky post's `bsky.app` URL). Absent when no linkable URL is available —
1500
+ * see {@link resolveCardUrl}, which keys some apps on the author handle the
1501
+ * transform may not have. Consumers use this to make the card click through.
1502
+ */
1503
+ sourceUrl?: string;
1490
1504
  body?: StreamCardBody;
1491
1505
  media?: StreamMedia[];
1492
1506
  externalLink?: StreamExternalLink;
package/dist/index.d.ts CHANGED
@@ -1191,6 +1191,13 @@ interface ActivityItem {
1191
1191
  rkey: string;
1192
1192
  /** The raw record from the PDS / AppView. Parsed defensively by the transform. */
1193
1193
  record: unknown;
1194
+ /**
1195
+ * The record author's handle, injected by the AppView. The activity snapshot
1196
+ * is per-author, so the api sets this per item (and per `subject` item) to let
1197
+ * handle-keyed apps (Bluesky, Popfeed, Tangled, ...) resolve a `sourceUrl`.
1198
+ * Absent when the handle is unknown; the transform then relies on the DID.
1199
+ */
1200
+ authorHandle?: string;
1194
1201
  /** App id from the app registry, e.g. `bluesky`. */
1195
1202
  appId: string;
1196
1203
  /** Human app name from the app registry, e.g. `Bluesky`. */
@@ -1487,6 +1494,13 @@ interface StreamCardVM {
1487
1494
  timestamp: string;
1488
1495
  /** Human sentence fragment, verb-aware. */
1489
1496
  title: string;
1497
+ /**
1498
+ * Canonical http(s) permalink to this record on its source app (e.g. a
1499
+ * Bluesky post's `bsky.app` URL). Absent when no linkable URL is available —
1500
+ * see {@link resolveCardUrl}, which keys some apps on the author handle the
1501
+ * transform may not have. Consumers use this to make the card click through.
1502
+ */
1503
+ sourceUrl?: string;
1490
1504
  body?: StreamCardBody;
1491
1505
  media?: StreamMedia[];
1492
1506
  externalLink?: StreamExternalLink;
package/dist/index.js CHANGED
@@ -3009,6 +3009,7 @@ var streamCardVMSchema = z.lazy(
3009
3009
  tier: z.enum(["creation", "action", "filtered"]),
3010
3010
  timestamp: z.string(),
3011
3011
  title: z.string(),
3012
+ sourceUrl: z.string().optional(),
3012
3013
  body: streamCardBodySchema.optional(),
3013
3014
  media: z.array(streamMediaSchema).optional(),
3014
3015
  externalLink: streamExternalLinkSchema.optional(),
@@ -3184,6 +3185,20 @@ var TITLE_BY_VERB = {
3184
3185
  function buildTitle(verb, label) {
3185
3186
  return TITLE_BY_VERB[verb](label);
3186
3187
  }
3188
+ function resolveSourceUrl(item, record) {
3189
+ const authorDid = didFromUri(item.uri);
3190
+ if (!authorDid) return void 0;
3191
+ const authorHandle = asNonEmptyString(item.authorHandle) ?? asNonEmptyString(record.handle);
3192
+ const url = resolveCardUrl({
3193
+ collection: item.collection,
3194
+ record,
3195
+ uri: item.uri,
3196
+ rkey: item.rkey,
3197
+ authorDid,
3198
+ ...authorHandle ? { authorHandle } : {}
3199
+ });
3200
+ return url && /^https?:\/\//i.test(url) ? url : void 0;
3201
+ }
3187
3202
  function readTheme(record) {
3188
3203
  const theme = asRecord(record?.publicationTheme ?? record?.theme);
3189
3204
  if (!theme) return void 0;
@@ -3681,6 +3696,10 @@ function toStreamCardVM(item, options = {}) {
3681
3696
  };
3682
3697
  const theme = readTheme(record);
3683
3698
  if (theme) vm.theme = theme;
3699
+ if (record) {
3700
+ const sourceUrl = resolveSourceUrl(item, record);
3701
+ if (sourceUrl) vm.sourceUrl = sourceUrl;
3702
+ }
3684
3703
  if (item.subject) {
3685
3704
  vm.subject = { kind: "post", post: toStreamCardVM(item.subject, options) };
3686
3705
  }
@@ -4542,7 +4561,7 @@ var ProfileVolunteeringRecordSchema = z.object({
4542
4561
  });
4543
4562
 
4544
4563
  // src/index.ts
4545
- var SIFA_SDK_VERSION = "0.12.14";
4564
+ var SIFA_SDK_VERSION = "0.12.15";
4546
4565
 
4547
4566
  export { ACTIVITY_TIERS, ACTIVITY_VERBS, ACTIVITY_VISIBILITY_RULES, ADULT_CONTENT_LABELS, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, ArtifactLinkSchema, AtmosphereFeedItemSchema, BlobRefSchema, CALENDAR_EVENT_MODE_LABELS, CALENDAR_EVENT_STATUS_LABELS, CATEGORY_LABELS, CATEGORY_ORDER, COLLECTION_TO_APP, COMPANY_OPTIONAL_EMPLOYMENT_TYPES, COMPANY_PAGE_MIN_FIRMOGRAPHIC_FIELDS, COMPLETENESS_MAX_SCORE, CONTINENTS, COUNTRIES, DIMENSIONS_MAX_SCORE, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, EndorsementConfirmationRecordSchema, EndorsementRecordSchema, EntityImportSearchResponseSchema, EntityMintDomainResponseSchema, EntityResolveDomainRequestSchema, EntityResolveDomainResponseSchema, EntitySearchResponseSchema, EntitySearchResultSchema, EntitySelectRequestSchema, EntitySelectResponseSchema, FEATURE_FLAGS, FeatureAllowlistEntrySchema, FeedActorSchema, FollowFeedItemSchema, FollowFeedPageSchema, FollowProfilePageSchema, FollowProfileSchema, GraphFollowRecordSchema, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, MIN_SKILLS, OPEN_TO_OPTIONS, OPEN_TO_TOKENS, OPEN_TO_TOKEN_TO_VALUE, OPEN_TO_VALUE_TO_TOKEN, OrgEmploymentAttestationRecordSchema, OrgProfileRecordSchema, PLATFORM_LABELS, PLATFORM_OPTIONS, PRESENTATION_LINK_TYPE_LABELS, PRESENTATION_LINK_TYPE_OPTIONS, PRESENTATION_ROLE_LABELS, PRESENTATION_ROLE_OPTIONS, PROFILE_INVOLVEMENT_NSID, PUBLISHERS, PresentationDurationSchema, PresentationLinkSchema, ProfileCertificationRecordSchema, ProfileCourseRecordSchema, ProfileEducationRecordSchema, ProfileExternalAccountRecordSchema, ProfileHonorRecordSchema, ProfileInvolvementRecordSchema, ProfileLanguageRecordSchema, ProfilePositionRecordSchema, ProfilePresentationDeliveryRecordSchema, ProfilePresentationRecordSchema, ProfileProjectRecordSchema, ProfilePublicationRecordSchema, ProfileSelfRecordSchema, ProfileSkillRecordSchema, ProfileVolunteeringRecordSchema, PublicationAuthorSchema, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, STREAM_VERBS, SifaFeedItemSchema, VERIFICATION_PROVIDERS, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, atUriSchema, buildTalkSlug, categoryForApp, certDateExtractor, cidSchema, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, datetimeSchema, decodeFeedCursor, dedupeSkills, detectPdsProvider, didSchema, dimensionsFromInputs, durationFromMinutes, encodeFeedCursor, entityDisambiguationLabel, entityResultKey, externalRecordRefSchema, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, getActivityVerbsVersion, getAppCategoryIcon, getAppIdForCollection, getArtifactLinkKindLabel, getCalendarEventModeLabel, getCalendarEventStatusLabel, getContinent, getDisplayLabel, getEmploymentTypeLabel, getFaviconUrl, getFilledDimensionsMap, getHandleStem, getIndustryLabelKey, getInvolvementKindHeading, getInvolvementKindLabel, getLexiconEntry, getOpenToLabelKey, getPdsDisplayName, getPlatformLabel, getPresentationLinkTypeLabel, getPresentationRoleLabel, getPublisherByHost, getPublisherById, getPublisherFromSiteUrl, getTierMeta, getVerificationProvider, getVisibleSectionIds, getWorkplaceTypeLabel, groupInvolvementByHeading, groupSkillsByCategory, hasAdultContent, hoistPrimary, isAppCategory, isCompanyPageIndexable, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isRegistrableDomainHandle, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, languageTagSchema, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, makeGraphFollowRecordSchema, maxGraphemes, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, parseTalkRkey, partialDateSchema, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, qualifiesAsOrg, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveEmbed, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, selfLabelsSchema, singleDateExtractor, slugifyTitle, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, streamAddressSchema, streamCardBodySchema, streamCardSubjectSchema, streamCardVMSchema, streamExternalLinkSchema, streamGeoSchema, streamMediaSchema, streamRichSegmentSchema, streamSourceSchema, streamThemeSchema, streamVerbSchema, stripHtmlToText, strongRefSchema, summarizePresentationDeliveries, toStreamCardVM, toStreamCardVMs, truncateGraphemes, uriSchema, verbForCollection, visibleItems, youtubeThumbnailUrl, youtubeVideoId };
4548
4567
  //# sourceMappingURL=index.js.map