@singi-labs/sifa-sdk 0.12.14 → 0.12.16
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.cjs +26 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -9
- package/dist/index.d.ts +14 -9
- package/dist/index.js +26 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -158,15 +158,6 @@ declare const PLATFORM_LABELS: {
|
|
|
158
158
|
readonly keyoxide: "Keyoxide";
|
|
159
159
|
};
|
|
160
160
|
type PlatformId = keyof typeof PLATFORM_LABELS;
|
|
161
|
-
/**
|
|
162
|
-
* Normalize a platform value to the short code used throughout the app (the
|
|
163
|
-
* editor, the API `VALID_PLATFORMS` enum, the DB, and {@link PLATFORM_LABELS}).
|
|
164
|
-
*
|
|
165
|
-
* External-account records may carry `platform` as the raw lexicon knownValue
|
|
166
|
-
* token (`id.sifa.defs#platformLinkedin`) instead of the short code — written by
|
|
167
|
-
* some third-party apps. This maps the token to its lowercase suffix
|
|
168
|
-
* (`linkedin`) and passes short codes / unknown values through unchanged.
|
|
169
|
-
*/
|
|
170
161
|
declare function normalizePlatformId(platform: string): string;
|
|
171
162
|
declare function isKnownPlatform(platform: string): platform is PlatformId;
|
|
172
163
|
declare function getPlatformLabel(platform: string): string;
|
|
@@ -1191,6 +1182,13 @@ interface ActivityItem {
|
|
|
1191
1182
|
rkey: string;
|
|
1192
1183
|
/** The raw record from the PDS / AppView. Parsed defensively by the transform. */
|
|
1193
1184
|
record: unknown;
|
|
1185
|
+
/**
|
|
1186
|
+
* The record author's handle, injected by the AppView. The activity snapshot
|
|
1187
|
+
* is per-author, so the api sets this per item (and per `subject` item) to let
|
|
1188
|
+
* handle-keyed apps (Bluesky, Popfeed, Tangled, ...) resolve a `sourceUrl`.
|
|
1189
|
+
* Absent when the handle is unknown; the transform then relies on the DID.
|
|
1190
|
+
*/
|
|
1191
|
+
authorHandle?: string;
|
|
1194
1192
|
/** App id from the app registry, e.g. `bluesky`. */
|
|
1195
1193
|
appId: string;
|
|
1196
1194
|
/** Human app name from the app registry, e.g. `Bluesky`. */
|
|
@@ -1487,6 +1485,13 @@ interface StreamCardVM {
|
|
|
1487
1485
|
timestamp: string;
|
|
1488
1486
|
/** Human sentence fragment, verb-aware. */
|
|
1489
1487
|
title: string;
|
|
1488
|
+
/**
|
|
1489
|
+
* Canonical http(s) permalink to this record on its source app (e.g. a
|
|
1490
|
+
* Bluesky post's `bsky.app` URL). Absent when no linkable URL is available —
|
|
1491
|
+
* see {@link resolveCardUrl}, which keys some apps on the author handle the
|
|
1492
|
+
* transform may not have. Consumers use this to make the card click through.
|
|
1493
|
+
*/
|
|
1494
|
+
sourceUrl?: string;
|
|
1490
1495
|
body?: StreamCardBody;
|
|
1491
1496
|
media?: StreamMedia[];
|
|
1492
1497
|
externalLink?: StreamExternalLink;
|
package/dist/index.d.ts
CHANGED
|
@@ -158,15 +158,6 @@ declare const PLATFORM_LABELS: {
|
|
|
158
158
|
readonly keyoxide: "Keyoxide";
|
|
159
159
|
};
|
|
160
160
|
type PlatformId = keyof typeof PLATFORM_LABELS;
|
|
161
|
-
/**
|
|
162
|
-
* Normalize a platform value to the short code used throughout the app (the
|
|
163
|
-
* editor, the API `VALID_PLATFORMS` enum, the DB, and {@link PLATFORM_LABELS}).
|
|
164
|
-
*
|
|
165
|
-
* External-account records may carry `platform` as the raw lexicon knownValue
|
|
166
|
-
* token (`id.sifa.defs#platformLinkedin`) instead of the short code — written by
|
|
167
|
-
* some third-party apps. This maps the token to its lowercase suffix
|
|
168
|
-
* (`linkedin`) and passes short codes / unknown values through unchanged.
|
|
169
|
-
*/
|
|
170
161
|
declare function normalizePlatformId(platform: string): string;
|
|
171
162
|
declare function isKnownPlatform(platform: string): platform is PlatformId;
|
|
172
163
|
declare function getPlatformLabel(platform: string): string;
|
|
@@ -1191,6 +1182,13 @@ interface ActivityItem {
|
|
|
1191
1182
|
rkey: string;
|
|
1192
1183
|
/** The raw record from the PDS / AppView. Parsed defensively by the transform. */
|
|
1193
1184
|
record: unknown;
|
|
1185
|
+
/**
|
|
1186
|
+
* The record author's handle, injected by the AppView. The activity snapshot
|
|
1187
|
+
* is per-author, so the api sets this per item (and per `subject` item) to let
|
|
1188
|
+
* handle-keyed apps (Bluesky, Popfeed, Tangled, ...) resolve a `sourceUrl`.
|
|
1189
|
+
* Absent when the handle is unknown; the transform then relies on the DID.
|
|
1190
|
+
*/
|
|
1191
|
+
authorHandle?: string;
|
|
1194
1192
|
/** App id from the app registry, e.g. `bluesky`. */
|
|
1195
1193
|
appId: string;
|
|
1196
1194
|
/** Human app name from the app registry, e.g. `Bluesky`. */
|
|
@@ -1487,6 +1485,13 @@ interface StreamCardVM {
|
|
|
1487
1485
|
timestamp: string;
|
|
1488
1486
|
/** Human sentence fragment, verb-aware. */
|
|
1489
1487
|
title: string;
|
|
1488
|
+
/**
|
|
1489
|
+
* Canonical http(s) permalink to this record on its source app (e.g. a
|
|
1490
|
+
* Bluesky post's `bsky.app` URL). Absent when no linkable URL is available —
|
|
1491
|
+
* see {@link resolveCardUrl}, which keys some apps on the author handle the
|
|
1492
|
+
* transform may not have. Consumers use this to make the card click through.
|
|
1493
|
+
*/
|
|
1494
|
+
sourceUrl?: string;
|
|
1490
1495
|
body?: StreamCardBody;
|
|
1491
1496
|
media?: StreamMedia[];
|
|
1492
1497
|
externalLink?: StreamExternalLink;
|
package/dist/index.js
CHANGED
|
@@ -803,11 +803,13 @@ var PLATFORM_LABELS = {
|
|
|
803
803
|
keyoxide: "Keyoxide"
|
|
804
804
|
};
|
|
805
805
|
var PLATFORM_TOKEN_PREFIX = "id.sifa.defs#platform";
|
|
806
|
+
var PLATFORM_ALIASES = {
|
|
807
|
+
activitypub: "fediverse",
|
|
808
|
+
mastodon: "fediverse"
|
|
809
|
+
};
|
|
806
810
|
function normalizePlatformId(platform) {
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
}
|
|
810
|
-
return platform;
|
|
811
|
+
const code = platform.startsWith(PLATFORM_TOKEN_PREFIX) ? platform.slice(PLATFORM_TOKEN_PREFIX.length).toLowerCase() : platform;
|
|
812
|
+
return PLATFORM_ALIASES[code.toLowerCase()] ?? code;
|
|
811
813
|
}
|
|
812
814
|
function isKnownPlatform(platform) {
|
|
813
815
|
return platform in PLATFORM_LABELS;
|
|
@@ -3009,6 +3011,7 @@ var streamCardVMSchema = z.lazy(
|
|
|
3009
3011
|
tier: z.enum(["creation", "action", "filtered"]),
|
|
3010
3012
|
timestamp: z.string(),
|
|
3011
3013
|
title: z.string(),
|
|
3014
|
+
sourceUrl: z.string().optional(),
|
|
3012
3015
|
body: streamCardBodySchema.optional(),
|
|
3013
3016
|
media: z.array(streamMediaSchema).optional(),
|
|
3014
3017
|
externalLink: streamExternalLinkSchema.optional(),
|
|
@@ -3184,6 +3187,20 @@ var TITLE_BY_VERB = {
|
|
|
3184
3187
|
function buildTitle(verb, label) {
|
|
3185
3188
|
return TITLE_BY_VERB[verb](label);
|
|
3186
3189
|
}
|
|
3190
|
+
function resolveSourceUrl(item, record) {
|
|
3191
|
+
const authorDid = didFromUri(item.uri);
|
|
3192
|
+
if (!authorDid) return void 0;
|
|
3193
|
+
const authorHandle = asNonEmptyString(item.authorHandle) ?? asNonEmptyString(record.handle);
|
|
3194
|
+
const url = resolveCardUrl({
|
|
3195
|
+
collection: item.collection,
|
|
3196
|
+
record,
|
|
3197
|
+
uri: item.uri,
|
|
3198
|
+
rkey: item.rkey,
|
|
3199
|
+
authorDid,
|
|
3200
|
+
...authorHandle ? { authorHandle } : {}
|
|
3201
|
+
});
|
|
3202
|
+
return url && /^https?:\/\//i.test(url) ? url : void 0;
|
|
3203
|
+
}
|
|
3187
3204
|
function readTheme(record) {
|
|
3188
3205
|
const theme = asRecord(record?.publicationTheme ?? record?.theme);
|
|
3189
3206
|
if (!theme) return void 0;
|
|
@@ -3681,6 +3698,10 @@ function toStreamCardVM(item, options = {}) {
|
|
|
3681
3698
|
};
|
|
3682
3699
|
const theme = readTheme(record);
|
|
3683
3700
|
if (theme) vm.theme = theme;
|
|
3701
|
+
if (record) {
|
|
3702
|
+
const sourceUrl = resolveSourceUrl(item, record);
|
|
3703
|
+
if (sourceUrl) vm.sourceUrl = sourceUrl;
|
|
3704
|
+
}
|
|
3684
3705
|
if (item.subject) {
|
|
3685
3706
|
vm.subject = { kind: "post", post: toStreamCardVM(item.subject, options) };
|
|
3686
3707
|
}
|
|
@@ -4542,7 +4563,7 @@ var ProfileVolunteeringRecordSchema = z.object({
|
|
|
4542
4563
|
});
|
|
4543
4564
|
|
|
4544
4565
|
// src/index.ts
|
|
4545
|
-
var SIFA_SDK_VERSION = "0.12.
|
|
4566
|
+
var SIFA_SDK_VERSION = "0.12.16";
|
|
4546
4567
|
|
|
4547
4568
|
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
4569
|
//# sourceMappingURL=index.js.map
|