@singi-labs/sifa-sdk 0.12.0 → 0.12.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.
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-BO4nea-m.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 ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.cjs';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile, e as ProfilePosition, f as ProfileCertification, g as ProfileEducation, h as ProfileHonor, i as ProfileLanguage, j as ProfileProject, k as ProfilePublication, l as ProfileInvolvement } from './adult-content-DDGP8W1e.cjs';
2
+ export { m as ADULT_CONTENT_LABELS, n as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, o as Endorsement, p as EndorsementData, E as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, s as PresentationLinkView, t as ProfileCourse, u as ProfileIndustry, v as ProfileInvolvementLink, w as ProfileLocation, x as ProfileOverrideSource, y as ProfilePresentation, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-DDGP8W1e.cjs';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.cjs';
4
4
  export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, 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, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.cjs';
5
5
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.cjs';
@@ -653,6 +653,17 @@ declare function formatRelativeTime(dateString: string): string;
653
653
  */
654
654
  declare function formatPresentationDuration(duration: PresentationDuration | undefined | null): string | undefined;
655
655
 
656
+ /**
657
+ * Server-safe timeline date formatters shared by every profile surface.
658
+ */
659
+ /** Format "2007-01" as "Jan 2007", pass through year-only strings. */
660
+ declare function formatTimelineDate(dateStr: string): string;
661
+ /**
662
+ * Format a date range for display. Handles missing dates, equal start/end,
663
+ * and ongoing entries (showPresent defaults to true).
664
+ */
665
+ declare function formatDateRange(start?: string, end?: string, showPresent?: boolean): string;
666
+
656
667
  /** A compact roll-up of a presentation's deliveries for the collapsed view. */
657
668
  interface PresentationDeliverySummary {
658
669
  /** Times the talk was actually delivered (cancelled occasions excluded). */
@@ -1258,6 +1269,205 @@ declare function classifyEntityRef(entityRef: string | null | undefined): Entity
1258
1269
  /** Whether a position carries a durable link of any anchor quality. */
1259
1270
  declare function isLinked(entityRef: string | null | undefined): boolean;
1260
1271
 
1272
+ /**
1273
+ * Shared, single-source-of-truth model for which profile sections render, in
1274
+ * what order, their nav grouping, and which items a given viewer may see.
1275
+ *
1276
+ * Every Sifa profile surface builds on this: the HTML profile page, the
1277
+ * Markdown / DOCX / print exports, and the standalone personal-site renderer.
1278
+ * Adding a section to {@link ALL_SECTIONS} makes it appear everywhere (the
1279
+ * exports drive presence + order from here, and {@link SECTION_LABELS} is an
1280
+ * exhaustive `Record<SectionId, string>`, so a new id is a compile error until
1281
+ * it has a label).
1282
+ *
1283
+ * The per-section sorts live in `./section-sorts.js`, built on the same SDK
1284
+ * date extractors the HTML section components use, so the surfaces cannot
1285
+ * diverge on ordering.
1286
+ */
1287
+
1288
+ /**
1289
+ * Side-nav groups, in display order. Each labels a contiguous run of sections
1290
+ * in {@link ALL_SECTIONS}. `labelKey` resolves against the consumer's `sections`
1291
+ * i18n namespace.
1292
+ */
1293
+ declare const SECTION_GROUPS: readonly [{
1294
+ readonly id: "overview";
1295
+ readonly labelKey: "groupOverview";
1296
+ }, {
1297
+ readonly id: "experience";
1298
+ readonly labelKey: "groupExperience";
1299
+ }, {
1300
+ readonly id: "qualifications";
1301
+ readonly labelKey: "groupQualifications";
1302
+ }, {
1303
+ readonly id: "more";
1304
+ readonly labelKey: "groupMore";
1305
+ }];
1306
+ type SectionGroupId = (typeof SECTION_GROUPS)[number]['id'];
1307
+ /**
1308
+ * Profile body sections in render + nav order (evidence-first): identity and
1309
+ * activity lead, then living work (career, skills, projects, talks,
1310
+ * publications), then the formal record (credentials, education, courses), then
1311
+ * the rest. `ns` selects the consumer's i18n namespace for `labelKey`; `group`
1312
+ * ties the section to a {@link SECTION_GROUPS} header.
1313
+ */
1314
+ declare const ALL_SECTIONS: readonly [{
1315
+ readonly id: "about";
1316
+ readonly labelKey: "about";
1317
+ readonly ns: "profile";
1318
+ readonly group: "overview";
1319
+ }, {
1320
+ readonly id: "career";
1321
+ readonly labelKey: "career";
1322
+ readonly ns: "sections";
1323
+ readonly group: "experience";
1324
+ }, {
1325
+ readonly id: "skills";
1326
+ readonly labelKey: "skills";
1327
+ readonly ns: "sections";
1328
+ readonly group: "experience";
1329
+ }, {
1330
+ readonly id: "projects";
1331
+ readonly labelKey: "projects";
1332
+ readonly ns: "sections";
1333
+ readonly group: "experience";
1334
+ }, {
1335
+ readonly id: "presentations";
1336
+ readonly labelKey: "talksAndSessions";
1337
+ readonly ns: "sections";
1338
+ readonly group: "experience";
1339
+ }, {
1340
+ readonly id: "publications";
1341
+ readonly labelKey: "publications";
1342
+ readonly ns: "sections";
1343
+ readonly group: "experience";
1344
+ }, {
1345
+ readonly id: "credentials";
1346
+ readonly labelKey: "credentials";
1347
+ readonly ns: "sections";
1348
+ readonly group: "qualifications";
1349
+ }, {
1350
+ readonly id: "education";
1351
+ readonly labelKey: "education";
1352
+ readonly ns: "sections";
1353
+ readonly group: "qualifications";
1354
+ }, {
1355
+ readonly id: "courses";
1356
+ readonly labelKey: "courses";
1357
+ readonly ns: "sections";
1358
+ readonly group: "qualifications";
1359
+ }, {
1360
+ readonly id: "awards";
1361
+ readonly labelKey: "awards";
1362
+ readonly ns: "sections";
1363
+ readonly group: "more";
1364
+ }, {
1365
+ readonly id: "involvement";
1366
+ readonly labelKey: "involvement";
1367
+ readonly ns: "sections";
1368
+ readonly group: "more";
1369
+ }, {
1370
+ readonly id: "languages";
1371
+ readonly labelKey: "languages";
1372
+ readonly ns: "sections";
1373
+ readonly group: "more";
1374
+ }, {
1375
+ readonly id: "other-profiles";
1376
+ readonly labelKey: "otherProfiles";
1377
+ readonly ns: "sections";
1378
+ readonly group: "more";
1379
+ }];
1380
+ /** Every profile section id, in canonical render order. */
1381
+ type SectionId = (typeof ALL_SECTIONS)[number]['id'];
1382
+ /** Whether a section has content for a given profile (used to hide empty nav entries for visitors). */
1383
+ declare function isSectionPopulated(profile: Profile, id: string): boolean;
1384
+ /**
1385
+ * The section ids a given viewer should see, in {@link ALL_SECTIONS} order.
1386
+ * Owners see every section; visitors only see populated ones.
1387
+ */
1388
+ declare function getVisibleSectionIds(profile: Profile, isOwnProfile: boolean): SectionId[];
1389
+ /** Drop items the owner has hidden from visitors. */
1390
+ declare function filterHidden<T extends {
1391
+ hidden?: boolean;
1392
+ }>(items: T[] | undefined): T[];
1393
+ /**
1394
+ * Items visible to a given viewer: owners see their own hidden items, visitors
1395
+ * do not. Shared by every export format (markdown, docx, print) and the public
1396
+ * `.md` route so the hidden rule lives in one place.
1397
+ */
1398
+ declare function visibleItems<T extends {
1399
+ hidden?: boolean;
1400
+ }>(items: T[] | undefined, isOwnProfile: boolean): T[];
1401
+ /**
1402
+ * English heading text for each section, keyed by {@link SectionId} (e.g.
1403
+ * `other-profiles` renders as "Links"). Exhaustive `Record<SectionId, string>`:
1404
+ * adding a section to {@link ALL_SECTIONS} without a label here is a compile
1405
+ * error, so a section can never silently render without (or with a stale)
1406
+ * heading. Consumers with i18n resolve their own localized labels via
1407
+ * `labelKey`; this is the canonical English fallback used by the exports.
1408
+ */
1409
+ declare const SECTION_LABELS: Record<SectionId, string>;
1410
+
1411
+ /**
1412
+ * Per-section item sorts, shared by every profile surface so ordering can't
1413
+ * diverge between the HTML page and the Markdown / DOCX / print exports and the
1414
+ * standalone personal-site renderer. Thin wrappers over the SDK date extractors
1415
+ * plus the range/language sorts in this directory.
1416
+ */
1417
+
1418
+ /**
1419
+ * Move a `primary && !endedAt` position to the top, matching the HTML career
1420
+ * section, so the current primary role always leads.
1421
+ */
1422
+ declare function hoistPrimary(positions: ProfilePosition[]): ProfilePosition[];
1423
+ declare const sortPositions: (items: ProfilePosition[]) => ProfilePosition[];
1424
+ declare const sortEducation: (items: ProfileEducation[]) => ProfileEducation[];
1425
+ declare const sortProjects: (items: ProfileProject[]) => ProfileProject[];
1426
+ declare const sortPublications: (items: ProfilePublication[]) => ProfilePublication[];
1427
+ declare const sortCertifications: (items: ProfileCertification[]) => ProfileCertification[];
1428
+ declare const sortHonors: (items: ProfileHonor[]) => ProfileHonor[];
1429
+ declare const sortLanguages: (items: ProfileLanguage[]) => ProfileLanguage[];
1430
+
1431
+ /**
1432
+ * Sort items by date range, floating ongoing entries (startDate present, endDate
1433
+ * absent) to the top. Items with no dates sink to the bottom.
1434
+ *
1435
+ * Used by sections whose lexicons have no explicit `current` flag -- ongoing is
1436
+ * implicit from a missing endDate. Without this wrapper, the shared
1437
+ * `dateRangeExtractor` reads `item.current` (always undefined for these items)
1438
+ * and sinks ongoing entries below completed ones.
1439
+ *
1440
+ * Sections using lexicon-aligned `startedAt`/`endedAt` fields (positions,
1441
+ * education) should use `lexiconDateExtractor` instead -- that extractor already
1442
+ * derives `current` correctly.
1443
+ */
1444
+ declare function sortByActiveDateRange<T extends {
1445
+ startDate?: string;
1446
+ endDate?: string;
1447
+ }>(items: T[]): T[];
1448
+
1449
+ /** Sort languages by proficiency (native first), then alphabetically within a rank. */
1450
+ declare function sortLanguagesByProficiency<T extends {
1451
+ language?: string;
1452
+ proficiency?: string;
1453
+ }>(items: T[]): T[];
1454
+
1455
+ /**
1456
+ * Fixed display order of involvement headings. A group renders only when it has
1457
+ * records. Charity + mapped legacy volunteering fall under "Volunteering".
1458
+ */
1459
+ declare const INVOLVEMENT_HEADING_ORDER: readonly ["Open Source", "Community", "Volunteering", "Civic", "Other"];
1460
+ interface InvolvementGroup {
1461
+ heading: string;
1462
+ items: ProfileInvolvement[];
1463
+ }
1464
+ /**
1465
+ * Group involvement records by their kind's display heading, in the fixed order
1466
+ * above, most-recent first within a group. Empty groups are omitted. An unknown
1467
+ * kind falls under "Other" (via the shared heading map).
1468
+ */
1469
+ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
1470
+
1261
1471
  /**
1262
1472
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
1263
1473
  *
@@ -1267,4 +1477,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1267
1477
  */
1268
1478
  declare const SIFA_SDK_VERSION: string;
1269
1479
 
1270
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, 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, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementKindOption, 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, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, 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, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1480
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, 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, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, 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, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SectionGroupId, type SectionId, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, 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, hoistPrimary, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes, visibleItems };
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-BO4nea-m.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 ProfileInvolvement, r as ProfileInvolvementLink, s as ProfileLanguage, t as ProfileLocation, u as ProfileOverrideSource, v as ProfilePosition, w as ProfilePresentation, x as ProfileProject, y as ProfilePublication, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-BO4nea-m.js';
1
+ import { P as ProfileSkill, b as ProfilePresentationDelivery, L as LocationValue, c as PdsProviderInfo, d as Profile, e as ProfilePosition, f as ProfileCertification, g as ProfileEducation, h as ProfileHonor, i as ProfileLanguage, j as ProfileProject, k as ProfilePublication, l as ProfileInvolvement } from './adult-content-DDGP8W1e.js';
2
+ export { m as ADULT_CONTENT_LABELS, n as ActiveApp, a as ActivityLabel, A as AdultContentLabel, C as CoSpeaker, o as Endorsement, p as EndorsementData, E as ExternalAccount, q as ExternalAccountKeytraceClaim, F as FeedItem, r as LanguageProficiency, s as PresentationLinkView, t as ProfileCourse, u as ProfileIndustry, v as ProfileInvolvementLink, w as ProfileLocation, x as ProfileOverrideSource, y as ProfilePresentation, z as ProfileVolunteering, B as PublicationContributor, D as SkillRef, S as SkillSuggestion, T as TrustStat, V as VerifiedAccount, G as hasAdultContent } from './adult-content-DDGP8W1e.js';
3
3
  import { PresentationDuration, ProfilePresentationDeliveryRecord, ProfilePresentationRecord } from './schemas/index.js';
4
4
  export { ArtifactLink, ArtifactLinkSchema, EndorsementConfirmationRecord, EndorsementConfirmationRecordSchema, EndorsementRecord, EndorsementRecordSchema, GraphFollowRecord, GraphFollowRecordSchema, PROFILE_INVOLVEMENT_NSID, PresentationDurationSchema, PresentationLink, PresentationLinkSchema, ProfileCertificationRecord, ProfileCertificationRecordSchema, ProfileCourseRecord, ProfileCourseRecordSchema, ProfileEducationRecord, ProfileEducationRecordSchema, ProfileExternalAccountRecord, ProfileExternalAccountRecordSchema, ProfileHonorRecord, ProfileHonorRecordSchema, ProfileInvolvementRecord, ProfileInvolvementRecordSchema, 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, partialDateSchema, selfLabelsSchema, strongRefSchema, uriSchema } from './schemas/index.js';
5
5
  import { E as EntitySearchResult } from './feed-D2ZV8Eaj.js';
@@ -653,6 +653,17 @@ declare function formatRelativeTime(dateString: string): string;
653
653
  */
654
654
  declare function formatPresentationDuration(duration: PresentationDuration | undefined | null): string | undefined;
655
655
 
656
+ /**
657
+ * Server-safe timeline date formatters shared by every profile surface.
658
+ */
659
+ /** Format "2007-01" as "Jan 2007", pass through year-only strings. */
660
+ declare function formatTimelineDate(dateStr: string): string;
661
+ /**
662
+ * Format a date range for display. Handles missing dates, equal start/end,
663
+ * and ongoing entries (showPresent defaults to true).
664
+ */
665
+ declare function formatDateRange(start?: string, end?: string, showPresent?: boolean): string;
666
+
656
667
  /** A compact roll-up of a presentation's deliveries for the collapsed view. */
657
668
  interface PresentationDeliverySummary {
658
669
  /** Times the talk was actually delivered (cancelled occasions excluded). */
@@ -1258,6 +1269,205 @@ declare function classifyEntityRef(entityRef: string | null | undefined): Entity
1258
1269
  /** Whether a position carries a durable link of any anchor quality. */
1259
1270
  declare function isLinked(entityRef: string | null | undefined): boolean;
1260
1271
 
1272
+ /**
1273
+ * Shared, single-source-of-truth model for which profile sections render, in
1274
+ * what order, their nav grouping, and which items a given viewer may see.
1275
+ *
1276
+ * Every Sifa profile surface builds on this: the HTML profile page, the
1277
+ * Markdown / DOCX / print exports, and the standalone personal-site renderer.
1278
+ * Adding a section to {@link ALL_SECTIONS} makes it appear everywhere (the
1279
+ * exports drive presence + order from here, and {@link SECTION_LABELS} is an
1280
+ * exhaustive `Record<SectionId, string>`, so a new id is a compile error until
1281
+ * it has a label).
1282
+ *
1283
+ * The per-section sorts live in `./section-sorts.js`, built on the same SDK
1284
+ * date extractors the HTML section components use, so the surfaces cannot
1285
+ * diverge on ordering.
1286
+ */
1287
+
1288
+ /**
1289
+ * Side-nav groups, in display order. Each labels a contiguous run of sections
1290
+ * in {@link ALL_SECTIONS}. `labelKey` resolves against the consumer's `sections`
1291
+ * i18n namespace.
1292
+ */
1293
+ declare const SECTION_GROUPS: readonly [{
1294
+ readonly id: "overview";
1295
+ readonly labelKey: "groupOverview";
1296
+ }, {
1297
+ readonly id: "experience";
1298
+ readonly labelKey: "groupExperience";
1299
+ }, {
1300
+ readonly id: "qualifications";
1301
+ readonly labelKey: "groupQualifications";
1302
+ }, {
1303
+ readonly id: "more";
1304
+ readonly labelKey: "groupMore";
1305
+ }];
1306
+ type SectionGroupId = (typeof SECTION_GROUPS)[number]['id'];
1307
+ /**
1308
+ * Profile body sections in render + nav order (evidence-first): identity and
1309
+ * activity lead, then living work (career, skills, projects, talks,
1310
+ * publications), then the formal record (credentials, education, courses), then
1311
+ * the rest. `ns` selects the consumer's i18n namespace for `labelKey`; `group`
1312
+ * ties the section to a {@link SECTION_GROUPS} header.
1313
+ */
1314
+ declare const ALL_SECTIONS: readonly [{
1315
+ readonly id: "about";
1316
+ readonly labelKey: "about";
1317
+ readonly ns: "profile";
1318
+ readonly group: "overview";
1319
+ }, {
1320
+ readonly id: "career";
1321
+ readonly labelKey: "career";
1322
+ readonly ns: "sections";
1323
+ readonly group: "experience";
1324
+ }, {
1325
+ readonly id: "skills";
1326
+ readonly labelKey: "skills";
1327
+ readonly ns: "sections";
1328
+ readonly group: "experience";
1329
+ }, {
1330
+ readonly id: "projects";
1331
+ readonly labelKey: "projects";
1332
+ readonly ns: "sections";
1333
+ readonly group: "experience";
1334
+ }, {
1335
+ readonly id: "presentations";
1336
+ readonly labelKey: "talksAndSessions";
1337
+ readonly ns: "sections";
1338
+ readonly group: "experience";
1339
+ }, {
1340
+ readonly id: "publications";
1341
+ readonly labelKey: "publications";
1342
+ readonly ns: "sections";
1343
+ readonly group: "experience";
1344
+ }, {
1345
+ readonly id: "credentials";
1346
+ readonly labelKey: "credentials";
1347
+ readonly ns: "sections";
1348
+ readonly group: "qualifications";
1349
+ }, {
1350
+ readonly id: "education";
1351
+ readonly labelKey: "education";
1352
+ readonly ns: "sections";
1353
+ readonly group: "qualifications";
1354
+ }, {
1355
+ readonly id: "courses";
1356
+ readonly labelKey: "courses";
1357
+ readonly ns: "sections";
1358
+ readonly group: "qualifications";
1359
+ }, {
1360
+ readonly id: "awards";
1361
+ readonly labelKey: "awards";
1362
+ readonly ns: "sections";
1363
+ readonly group: "more";
1364
+ }, {
1365
+ readonly id: "involvement";
1366
+ readonly labelKey: "involvement";
1367
+ readonly ns: "sections";
1368
+ readonly group: "more";
1369
+ }, {
1370
+ readonly id: "languages";
1371
+ readonly labelKey: "languages";
1372
+ readonly ns: "sections";
1373
+ readonly group: "more";
1374
+ }, {
1375
+ readonly id: "other-profiles";
1376
+ readonly labelKey: "otherProfiles";
1377
+ readonly ns: "sections";
1378
+ readonly group: "more";
1379
+ }];
1380
+ /** Every profile section id, in canonical render order. */
1381
+ type SectionId = (typeof ALL_SECTIONS)[number]['id'];
1382
+ /** Whether a section has content for a given profile (used to hide empty nav entries for visitors). */
1383
+ declare function isSectionPopulated(profile: Profile, id: string): boolean;
1384
+ /**
1385
+ * The section ids a given viewer should see, in {@link ALL_SECTIONS} order.
1386
+ * Owners see every section; visitors only see populated ones.
1387
+ */
1388
+ declare function getVisibleSectionIds(profile: Profile, isOwnProfile: boolean): SectionId[];
1389
+ /** Drop items the owner has hidden from visitors. */
1390
+ declare function filterHidden<T extends {
1391
+ hidden?: boolean;
1392
+ }>(items: T[] | undefined): T[];
1393
+ /**
1394
+ * Items visible to a given viewer: owners see their own hidden items, visitors
1395
+ * do not. Shared by every export format (markdown, docx, print) and the public
1396
+ * `.md` route so the hidden rule lives in one place.
1397
+ */
1398
+ declare function visibleItems<T extends {
1399
+ hidden?: boolean;
1400
+ }>(items: T[] | undefined, isOwnProfile: boolean): T[];
1401
+ /**
1402
+ * English heading text for each section, keyed by {@link SectionId} (e.g.
1403
+ * `other-profiles` renders as "Links"). Exhaustive `Record<SectionId, string>`:
1404
+ * adding a section to {@link ALL_SECTIONS} without a label here is a compile
1405
+ * error, so a section can never silently render without (or with a stale)
1406
+ * heading. Consumers with i18n resolve their own localized labels via
1407
+ * `labelKey`; this is the canonical English fallback used by the exports.
1408
+ */
1409
+ declare const SECTION_LABELS: Record<SectionId, string>;
1410
+
1411
+ /**
1412
+ * Per-section item sorts, shared by every profile surface so ordering can't
1413
+ * diverge between the HTML page and the Markdown / DOCX / print exports and the
1414
+ * standalone personal-site renderer. Thin wrappers over the SDK date extractors
1415
+ * plus the range/language sorts in this directory.
1416
+ */
1417
+
1418
+ /**
1419
+ * Move a `primary && !endedAt` position to the top, matching the HTML career
1420
+ * section, so the current primary role always leads.
1421
+ */
1422
+ declare function hoistPrimary(positions: ProfilePosition[]): ProfilePosition[];
1423
+ declare const sortPositions: (items: ProfilePosition[]) => ProfilePosition[];
1424
+ declare const sortEducation: (items: ProfileEducation[]) => ProfileEducation[];
1425
+ declare const sortProjects: (items: ProfileProject[]) => ProfileProject[];
1426
+ declare const sortPublications: (items: ProfilePublication[]) => ProfilePublication[];
1427
+ declare const sortCertifications: (items: ProfileCertification[]) => ProfileCertification[];
1428
+ declare const sortHonors: (items: ProfileHonor[]) => ProfileHonor[];
1429
+ declare const sortLanguages: (items: ProfileLanguage[]) => ProfileLanguage[];
1430
+
1431
+ /**
1432
+ * Sort items by date range, floating ongoing entries (startDate present, endDate
1433
+ * absent) to the top. Items with no dates sink to the bottom.
1434
+ *
1435
+ * Used by sections whose lexicons have no explicit `current` flag -- ongoing is
1436
+ * implicit from a missing endDate. Without this wrapper, the shared
1437
+ * `dateRangeExtractor` reads `item.current` (always undefined for these items)
1438
+ * and sinks ongoing entries below completed ones.
1439
+ *
1440
+ * Sections using lexicon-aligned `startedAt`/`endedAt` fields (positions,
1441
+ * education) should use `lexiconDateExtractor` instead -- that extractor already
1442
+ * derives `current` correctly.
1443
+ */
1444
+ declare function sortByActiveDateRange<T extends {
1445
+ startDate?: string;
1446
+ endDate?: string;
1447
+ }>(items: T[]): T[];
1448
+
1449
+ /** Sort languages by proficiency (native first), then alphabetically within a rank. */
1450
+ declare function sortLanguagesByProficiency<T extends {
1451
+ language?: string;
1452
+ proficiency?: string;
1453
+ }>(items: T[]): T[];
1454
+
1455
+ /**
1456
+ * Fixed display order of involvement headings. A group renders only when it has
1457
+ * records. Charity + mapped legacy volunteering fall under "Volunteering".
1458
+ */
1459
+ declare const INVOLVEMENT_HEADING_ORDER: readonly ["Open Source", "Community", "Volunteering", "Civic", "Other"];
1460
+ interface InvolvementGroup {
1461
+ heading: string;
1462
+ items: ProfileInvolvement[];
1463
+ }
1464
+ /**
1465
+ * Group involvement records by their kind's display heading, in the fixed order
1466
+ * above, most-recent first within a group. Empty groups are omitted. An unknown
1467
+ * kind falls under "Other" (via the shared heading map).
1468
+ */
1469
+ declare function groupInvolvementByHeading(items: ProfileInvolvement[]): InvolvementGroup[];
1470
+
1261
1471
  /**
1262
1472
  * Sifa SDK -- public client library for the Sifa AppView on AT Protocol.
1263
1473
  *
@@ -1267,4 +1477,4 @@ declare function isLinked(entityRef: string | null | undefined): boolean;
1267
1477
  */
1268
1478
  declare const SIFA_SDK_VERSION: string;
1269
1479
 
1270
- export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, 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, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementKindOption, 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, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, findIndustry, formatCompanyName, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, getActivityTaxonomyVersion, getActivityTier, 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, getWorkplaceTypeLabel, groupSkillsByCategory, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByDateDesc, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes };
1480
+ export { ACTIVITY_TIERS, ACTIVITY_VISIBILITY_RULES, ALL_SECTIONS, APP_CATEGORIES, APP_CATEGORY_IDS, APP_CATEGORY_MAP, APP_URL_PATTERNS, ARTIFACT_LINK_KIND_LABELS, ARTIFACT_LINK_KIND_OPTIONS, type AccountVerification, type ActivityItemForUrl, type ActivityTaxonomy, type ActivityTier, type AppCategoryId, type AppUrlPatterns, type ArtifactLinkKindOption, 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, type DisambiguationFields, EMPLOYMENT_TYPE_GROUPS, EMPLOYMENT_TYPE_LABELS, ENTITY_REF_ANCHORS, type EmploymentTypeGroup, type EmploymentTypeOption, type EntityRefAnchor, EntitySearchResult, INDUSTRY_OPTIONS, INVOLVEMENT_HEADING_ORDER, INVOLVEMENT_KIND_HEADINGS, INVOLVEMENT_KIND_LABELS, INVOLVEMENT_KIND_OPTIONS, type IndustryOption, type InvolvementGroup, type InvolvementKindOption, 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, ProfileCertification, type ProfileCompletion, type ProfileDimensionInputs, ProfileEducation, ProfileHonor, ProfileInvolvement, ProfileLanguage, ProfilePosition, ProfilePresentationDelivery, ProfilePresentationDeliveryRecord, ProfilePresentationRecord, ProfileProject, ProfilePublication, ProfileSkill, type Publisher, type RgbColor, SECTION_GROUPS, SECTION_LABELS, SIFA_SDK_VERSION, SKILL_CATEGORIES, STANDARD_PUBLISHER_ID, type SectionGroupId, type SectionId, type SkillCategory, type TierMeta, VERIFICATION_PROVIDERS, type VerificationProvider, type VerificationProviderId, type VerificationSource, WORKPLACE_TYPE_LABELS, WORKPLACE_TYPE_OPTIONS, type WorkplaceTypeOption, categoryForApp, certDateExtractor, classifyEntityRef, completenessPercent, completenessScore, contrastRatio, countFilledDimensions, countryCodeToFlag, dateRangeExtractor, dedupeSkills, detectPdsProvider, dimensionsFromInputs, durationFromMinutes, entityDisambiguationLabel, entityResultKey, filterHidden, findIndustry, formatCompanyName, formatDateRange, formatDistanceToNow, formatLocation, formatPresentationDuration, formatRelativeTime, formatTimelineDate, getActivityTaxonomyVersion, getActivityTier, 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, hoistPrimary, isAppCategory, isCompanyRequired, isKnownAppId, isKnownPlatform, isKnownVerificationProvider, isLinked, isPseudoEmployer, isSectionPopulated, isValidRgbColor, isVisibleActivityItem, lexiconDateExtractor, limitCombiningMarks, looksLikeDomain, meetsContrastAA, normalizeCompanyKey, normalizeLegalForm, normalizeOpenTo, normalizePlatformId, normalizePresentationMode, normalizePresentationRole, normalizeWorkplaceTypes, openToTokenToValue, openToValueToToken, parseIntendedAudiences, parseLocationString, parsePresentationDuration, pdsProviderFromApi, pickPrimaryPosition, presentationCsvRowToRecord, presentationDeliveryCsvRowToRecord, primaryVerification, profileToDimensionInputs, relativeLuminance, resolveCardHealth, resolveCardUrl, resolveVerifierProvider, rgbToString, sanitizeDisplayText, sanitizeHandleInput, searchResultDisambiguation, singleDateExtractor, sortByActiveDateRange, sortByDateDesc, sortCertifications, sortEducation, sortHonors, sortLanguages, sortLanguagesByProficiency, sortPositions, sortProjects, sortPublications, stripHtmlToText, summarizePresentationDeliveries, truncateGraphemes, visibleItems };