@singi-labs/sifa-sdk 0.12.76 → 0.12.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{index-a3xqWsNm.d.cts → index-Uj1NC0QC.d.cts} +28 -1
  2. package/dist/{index-a3xqWsNm.d.ts → index-Uj1NC0QC.d.ts} +28 -1
  3. package/dist/index.cjs +9 -2
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +19 -5
  6. package/dist/index.d.ts +19 -5
  7. package/dist/index.js +9 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/jsonld/index.d.cts +1 -1
  10. package/dist/jsonld/index.d.ts +1 -1
  11. package/dist/{network-map-D5PJAs_l.d.cts → network-map-DMpXK9rM.d.cts} +30 -5
  12. package/dist/{network-map-BFjdjlj3.d.ts → network-map-kR4Ndke4.d.ts} +30 -5
  13. package/dist/{org-Co9muK52.d.ts → org-CnAMbO63.d.ts} +4 -3
  14. package/dist/{org-BOivj-0M.d.cts → org-DQyVyZ65.d.cts} +4 -3
  15. package/dist/{profile-summary-BTZAwG1z.d.cts → profile-summary-CbzSrQoE.d.cts} +1 -1
  16. package/dist/{profile-summary-Do5FY7Q0.d.ts → profile-summary-Yq3_odUX.d.ts} +1 -1
  17. package/dist/query/fetchers/index.cjs +24 -1
  18. package/dist/query/fetchers/index.cjs.map +1 -1
  19. package/dist/query/fetchers/index.d.cts +6 -6
  20. package/dist/query/fetchers/index.d.ts +6 -6
  21. package/dist/query/fetchers/index.js +24 -2
  22. package/dist/query/fetchers/index.js.map +1 -1
  23. package/dist/query/hooks/index.cjs +4 -1
  24. package/dist/query/hooks/index.cjs.map +1 -1
  25. package/dist/query/hooks/index.d.cts +5 -5
  26. package/dist/query/hooks/index.d.ts +5 -5
  27. package/dist/query/hooks/index.js +4 -1
  28. package/dist/query/hooks/index.js.map +1 -1
  29. package/dist/query/index.cjs +33 -1
  30. package/dist/query/index.cjs.map +1 -1
  31. package/dist/query/index.d.cts +19 -10
  32. package/dist/query/index.d.ts +19 -10
  33. package/dist/query/index.js +32 -2
  34. package/dist/query/index.js.map +1 -1
  35. package/dist/{types-D0LWpGtY.d.cts → types-B3KOVEYy.d.cts} +1 -1
  36. package/dist/{types-C3xxTGUE.d.ts → types-Ct7WNyn9.d.ts} +1 -1
  37. package/dist/{use-org-notification-emails-Do-Zjtf8.d.cts → use-org-notification-emails-C45soS39.d.cts} +3 -3
  38. package/dist/{use-org-notification-emails-Cz6OldEp.d.ts → use-org-notification-emails-DaZqJMfA.d.ts} +3 -3
  39. package/package.json +1 -2
@@ -202,6 +202,25 @@ interface PublicationContributor {
202
202
  did?: string;
203
203
  handle?: string;
204
204
  }
205
+ /**
206
+ * A co-author an importer produced that the profile owner can offer to link to
207
+ * a Sifa account.
208
+ *
209
+ * Matched on verified ORCID iD only, never on name: "A. Example", "Alice
210
+ * Example", and "Example, A." are one person, and "J. Smith" is four hundred.
211
+ *
212
+ * A suggestion, never a claim. Nothing reaches any repository until the owner
213
+ * acts, which is what makes ORCID re-syncing safe: matching writes nothing, so
214
+ * a re-sync cannot generate a confirmation request.
215
+ */
216
+ interface AuthorSuggestion {
217
+ /** ORCID iD the match was made on. The join key back to a contributor. */
218
+ orcidId: string;
219
+ did: string;
220
+ handle: string;
221
+ /** Display name on the matched account, for showing what is being proposed. */
222
+ displayName?: string;
223
+ }
205
224
  interface ProfilePublication {
206
225
  rkey: string;
207
226
  title: string;
@@ -764,6 +783,14 @@ interface Profile {
764
783
  certifications?: ProfileCertification[];
765
784
  projects?: ProfileProject[];
766
785
  publications?: ProfilePublication[];
786
+ /**
787
+ * Co-authors on imported publications that resolve to a Sifa account.
788
+ *
789
+ * Owner-only, and absent rather than empty for every other viewer, so a
790
+ * consumer cannot tell "no suggestions" from "not yours". Join to a
791
+ * publication contributor by `orcidId`.
792
+ */
793
+ authorSuggestions?: AuthorSuggestion[];
767
794
  volunteering?: ProfileVolunteering[];
768
795
  involvement?: ProfileInvolvement[];
769
796
  investments?: ProfileInvestment[];
@@ -775,4 +802,4 @@ interface Profile {
775
802
  externalAccounts?: ExternalAccount[];
776
803
  }
777
804
 
778
- export { type AccountFacetMode as A, type ProfileInvolvementLink as B, type CoSpeaker as C, type ProfileLocation as D, type Endorsement as E, type FeedItem as F, type ProfileOverrideSource as G, type ProfilePresentation as H, type ProfileVolunteering as I, type ProjectMemberCard as J, type ProjectRole as K, type LocationValue as L, type PublicationContributor as M, type SkillSuggestion as N, type OrgAddressView as O, type ProfileSkill as P, type RecognizedEntity as R, type SkillRef as S, type TrustStat as T, type VerifiedAccount as V, type ProfilePresentationDelivery as a, type PdsProviderInfo as b, type Profile as c, type ProfilePosition as d, type ProfileCertification as e, type ProfileEducation as f, type ProfileHonor as g, type ProfileLanguage as h, type ProfileProject as i, type ProfilePublication as j, type ProfileInvolvement as k, type ActiveApp as l, type ActorCard as m, type EndorsementData as n, type ExternalAccount as o, type ExternalAccountKeytraceClaim as p, type LanguageProficiency as q, type OrgFloorVerdict as r, type OrgLinkView as s, type OrgProfileView as t, PROJECT_ROLES as u, type PresentationLinkView as v, type ProfileCourse as w, type ProfileIndustry as x, type ProfileInvestment as y, type ProfileInvestmentLink as z };
805
+ export { type AccountFacetMode as A, type ProfileInvestmentLink as B, type CoSpeaker as C, type ProfileInvolvementLink as D, type Endorsement as E, type FeedItem as F, type ProfileLocation as G, type ProfileOverrideSource as H, type ProfilePresentation as I, type ProfileVolunteering as J, type ProjectMemberCard as K, type LocationValue as L, type ProjectRole as M, type PublicationContributor as N, type OrgAddressView as O, type ProfileSkill as P, type SkillSuggestion as Q, type RecognizedEntity as R, type SkillRef as S, type TrustStat as T, type VerifiedAccount as V, type ProfilePresentationDelivery as a, type PdsProviderInfo as b, type Profile as c, type ProfilePosition as d, type ProfileCertification as e, type ProfileEducation as f, type ProfileHonor as g, type ProfileLanguage as h, type ProfileProject as i, type ProfilePublication as j, type ProfileInvolvement as k, type ActiveApp as l, type ActorCard as m, type AuthorSuggestion as n, type EndorsementData as o, type ExternalAccount as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type OrgFloorVerdict as s, type OrgLinkView as t, type OrgProfileView as u, PROJECT_ROLES as v, type PresentationLinkView as w, type ProfileCourse as x, type ProfileIndustry as y, type ProfileInvestment as z };
@@ -202,6 +202,25 @@ interface PublicationContributor {
202
202
  did?: string;
203
203
  handle?: string;
204
204
  }
205
+ /**
206
+ * A co-author an importer produced that the profile owner can offer to link to
207
+ * a Sifa account.
208
+ *
209
+ * Matched on verified ORCID iD only, never on name: "A. Example", "Alice
210
+ * Example", and "Example, A." are one person, and "J. Smith" is four hundred.
211
+ *
212
+ * A suggestion, never a claim. Nothing reaches any repository until the owner
213
+ * acts, which is what makes ORCID re-syncing safe: matching writes nothing, so
214
+ * a re-sync cannot generate a confirmation request.
215
+ */
216
+ interface AuthorSuggestion {
217
+ /** ORCID iD the match was made on. The join key back to a contributor. */
218
+ orcidId: string;
219
+ did: string;
220
+ handle: string;
221
+ /** Display name on the matched account, for showing what is being proposed. */
222
+ displayName?: string;
223
+ }
205
224
  interface ProfilePublication {
206
225
  rkey: string;
207
226
  title: string;
@@ -764,6 +783,14 @@ interface Profile {
764
783
  certifications?: ProfileCertification[];
765
784
  projects?: ProfileProject[];
766
785
  publications?: ProfilePublication[];
786
+ /**
787
+ * Co-authors on imported publications that resolve to a Sifa account.
788
+ *
789
+ * Owner-only, and absent rather than empty for every other viewer, so a
790
+ * consumer cannot tell "no suggestions" from "not yours". Join to a
791
+ * publication contributor by `orcidId`.
792
+ */
793
+ authorSuggestions?: AuthorSuggestion[];
767
794
  volunteering?: ProfileVolunteering[];
768
795
  involvement?: ProfileInvolvement[];
769
796
  investments?: ProfileInvestment[];
@@ -775,4 +802,4 @@ interface Profile {
775
802
  externalAccounts?: ExternalAccount[];
776
803
  }
777
804
 
778
- export { type AccountFacetMode as A, type ProfileInvolvementLink as B, type CoSpeaker as C, type ProfileLocation as D, type Endorsement as E, type FeedItem as F, type ProfileOverrideSource as G, type ProfilePresentation as H, type ProfileVolunteering as I, type ProjectMemberCard as J, type ProjectRole as K, type LocationValue as L, type PublicationContributor as M, type SkillSuggestion as N, type OrgAddressView as O, type ProfileSkill as P, type RecognizedEntity as R, type SkillRef as S, type TrustStat as T, type VerifiedAccount as V, type ProfilePresentationDelivery as a, type PdsProviderInfo as b, type Profile as c, type ProfilePosition as d, type ProfileCertification as e, type ProfileEducation as f, type ProfileHonor as g, type ProfileLanguage as h, type ProfileProject as i, type ProfilePublication as j, type ProfileInvolvement as k, type ActiveApp as l, type ActorCard as m, type EndorsementData as n, type ExternalAccount as o, type ExternalAccountKeytraceClaim as p, type LanguageProficiency as q, type OrgFloorVerdict as r, type OrgLinkView as s, type OrgProfileView as t, PROJECT_ROLES as u, type PresentationLinkView as v, type ProfileCourse as w, type ProfileIndustry as x, type ProfileInvestment as y, type ProfileInvestmentLink as z };
805
+ export { type AccountFacetMode as A, type ProfileInvestmentLink as B, type CoSpeaker as C, type ProfileInvolvementLink as D, type Endorsement as E, type FeedItem as F, type ProfileLocation as G, type ProfileOverrideSource as H, type ProfilePresentation as I, type ProfileVolunteering as J, type ProjectMemberCard as K, type LocationValue as L, type ProjectRole as M, type PublicationContributor as N, type OrgAddressView as O, type ProfileSkill as P, type SkillSuggestion as Q, type RecognizedEntity as R, type SkillRef as S, type TrustStat as T, type VerifiedAccount as V, type ProfilePresentationDelivery as a, type PdsProviderInfo as b, type Profile as c, type ProfilePosition as d, type ProfileCertification as e, type ProfileEducation as f, type ProfileHonor as g, type ProfileLanguage as h, type ProfileProject as i, type ProfilePublication as j, type ProfileInvolvement as k, type ActiveApp as l, type ActorCard as m, type AuthorSuggestion as n, type EndorsementData as o, type ExternalAccount as p, type ExternalAccountKeytraceClaim as q, type LanguageProficiency as r, type OrgFloorVerdict as s, type OrgLinkView as t, type OrgProfileView as u, PROJECT_ROLES as v, type PresentationLinkView as w, type ProfileCourse as x, type ProfileIndustry as y, type ProfileInvestment as z };
package/dist/index.cjs CHANGED
@@ -879,6 +879,12 @@ var CATEGORY_LABELS = {
879
879
  ...Object.fromEntries(SKILL_CATEGORIES.map((c) => [c.value, c.label])),
880
880
  other: "Other"
881
881
  };
882
+ function normalizeSkillCategory(value) {
883
+ if (typeof value !== "string") return void 0;
884
+ const afterRef = value.includes("#") ? value.slice(value.lastIndexOf("#") + 1) : value;
885
+ const token = afterRef.trim().toLowerCase();
886
+ return token === "" ? void 0 : token;
887
+ }
882
888
 
883
889
  // src/taxonomy/skill-grouping.ts
884
890
  function dedupeSkills(skills) {
@@ -914,7 +920,7 @@ function dedupeSkills(skills) {
914
920
  function groupSkillsByCategory(skills) {
915
921
  const grouped = /* @__PURE__ */ new Map();
916
922
  for (const skill of skills) {
917
- const normalised = skill.category?.toLowerCase().trim() ?? "";
923
+ const normalised = normalizeSkillCategory(skill.category) ?? "";
918
924
  const key = CATEGORY_ORDER.includes(normalised) ? normalised : "other";
919
925
  const bucket = grouped.get(key) ?? [];
920
926
  bucket.push(skill);
@@ -5816,7 +5822,7 @@ function describeSifaRecord(collection, value) {
5816
5822
  }
5817
5823
 
5818
5824
  // src/index.ts
5819
- var SIFA_SDK_VERSION = "0.12.76";
5825
+ var SIFA_SDK_VERSION = "0.12.78";
5820
5826
 
5821
5827
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
5822
5828
  exports.ACTIVITY_VERBS = ACTIVITY_VERBS;
@@ -6027,6 +6033,7 @@ exports.normalizeOpenTo = normalizeOpenTo;
6027
6033
  exports.normalizePlatformId = normalizePlatformId;
6028
6034
  exports.normalizePresentationMode = normalizePresentationMode;
6029
6035
  exports.normalizePresentationRole = normalizePresentationRole;
6036
+ exports.normalizeSkillCategory = normalizeSkillCategory;
6030
6037
  exports.normalizeWorkplaceTypes = normalizeWorkplaceTypes;
6031
6038
  exports.openToTokenToValue = openToTokenToValue;
6032
6039
  exports.openToValueToToken = openToValueToToken;