@singi-labs/sifa-sdk 0.19.77 → 0.19.79

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 (76) hide show
  1. package/dist/{index-DAiJZvPg.d.ts → index-B0BDMGLm.d.ts} +8 -0
  2. package/dist/{index-k6tBrbEU.d.cts → index-BrWWVQLL.d.cts} +8 -0
  3. package/dist/index.cjs +7 -1
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +7 -7
  6. package/dist/index.d.ts +7 -7
  7. package/dist/index.js +1 -1
  8. package/dist/jsonld/index.cjs +11 -0
  9. package/dist/jsonld/index.cjs.map +1 -1
  10. package/dist/jsonld/index.d.cts +1 -1
  11. package/dist/jsonld/index.d.ts +1 -1
  12. package/dist/jsonld/terms.js +11 -0
  13. package/dist/jsonld/terms.js.map +1 -1
  14. package/dist/{network-map-DvALufF9.d.ts → network-map-BEOM5v7g.d.ts} +4 -53
  15. package/dist/{network-map-DInAc_DB.d.cts → network-map-DMDU4liU.d.cts} +4 -53
  16. package/dist/{profile-investment-Cn5b--EG.d.cts → profile-investment-QSwX2GL5.d.cts} +1 -0
  17. package/dist/{profile-investment-Cn5b--EG.d.ts → profile-investment-QSwX2GL5.d.ts} +1 -0
  18. package/dist/{profile-summary-PRDqxAQT.d.ts → profile-summary-1oXL1guc.d.ts} +1 -1
  19. package/dist/{profile-summary-BcbJrph1.d.cts → profile-summary-CpM9l8iq.d.cts} +1 -1
  20. package/dist/query/fetchers/index.cjs +29 -0
  21. package/dist/query/fetchers/index.cjs.map +1 -1
  22. package/dist/query/fetchers/index.d.cts +6 -6
  23. package/dist/query/fetchers/index.d.ts +6 -6
  24. package/dist/query/fetchers/index.js +5 -1
  25. package/dist/query/fetchers/index.js.map +1 -1
  26. package/dist/query/fetchers/profile-mutations.js.map +1 -1
  27. package/dist/query/fetchers/rpg.js +22 -0
  28. package/dist/query/fetchers/rpg.js.map +1 -1
  29. package/dist/query/hooks/index.cjs +81 -0
  30. package/dist/query/hooks/index.cjs.map +1 -1
  31. package/dist/query/hooks/index.d.cts +4 -4
  32. package/dist/query/hooks/index.d.ts +4 -4
  33. package/dist/query/hooks/index.js +4 -0
  34. package/dist/query/hooks/index.js.map +1 -1
  35. package/dist/query/hooks/use-rpg-claimable.js +19 -0
  36. package/dist/query/hooks/use-rpg-claimable.js.map +1 -0
  37. package/dist/query/hooks/use-rpg-status.js +19 -0
  38. package/dist/query/hooks/use-rpg-status.js.map +1 -0
  39. package/dist/query/index.cjs +47 -0
  40. package/dist/query/index.cjs.map +1 -1
  41. package/dist/query/index.d.cts +9 -9
  42. package/dist/query/index.d.ts +9 -9
  43. package/dist/query/index.js +9 -1
  44. package/dist/query/index.js.map +1 -1
  45. package/dist/query/keys.js +7 -0
  46. package/dist/query/keys.js.map +1 -1
  47. package/dist/resume/index.d.cts +1 -1
  48. package/dist/resume/index.d.ts +1 -1
  49. package/dist/rpg/avatar.js +6 -0
  50. package/dist/rpg/avatar.js.map +1 -0
  51. package/dist/rpg/index.cjs +4 -0
  52. package/dist/rpg/index.cjs.map +1 -1
  53. package/dist/rpg/index.d.cts +9 -1
  54. package/dist/rpg/index.d.ts +9 -1
  55. package/dist/rpg/index.js +2 -0
  56. package/dist/rpg/index.js.map +1 -1
  57. package/dist/schemas/index.cjs +6 -0
  58. package/dist/schemas/index.cjs.map +1 -1
  59. package/dist/schemas/index.d.cts +1 -1
  60. package/dist/schemas/index.d.ts +1 -1
  61. package/dist/schemas/profile-self.js +6 -0
  62. package/dist/schemas/profile-self.js.map +1 -1
  63. package/dist/schemas/write/index.cjs +13 -1
  64. package/dist/schemas/write/index.cjs.map +1 -1
  65. package/dist/schemas/write/index.d.cts +3 -0
  66. package/dist/schemas/write/index.d.ts +3 -0
  67. package/dist/schemas/write/profile-self.js +9 -1
  68. package/dist/schemas/write/profile-self.js.map +1 -1
  69. package/dist/types/index.js.map +1 -1
  70. package/dist/{types-CI24asgo.d.ts → types-DB7UkX43.d.ts} +1 -1
  71. package/dist/{types-qw55KvoV.d.cts → types-DQfWqSud.d.cts} +1 -1
  72. package/dist/{use-user-settings-B1rJmjQR.d.ts → use-user-settings-A_i6Nrj1.d.ts} +34 -4
  73. package/dist/{use-user-settings-CYDXJNmI.d.cts → use-user-settings-U-cIysUa.d.cts} +34 -4
  74. package/dist/{user-settings-Qwi6wSnK.d.ts → user-settings-CGJPdwTM.d.ts} +82 -4
  75. package/dist/{user-settings-lenJHz19.d.cts → user-settings-DdWaL2AG.d.cts} +82 -4
  76. package/package.json +1 -1
@@ -274,6 +274,12 @@ var term_mappings_default = {
274
274
  match: "exactMatch",
275
275
  terms: ["schema:Project", "foaf:Project"]
276
276
  },
277
+ {
278
+ lexicon: "id.sifa.profile.project",
279
+ field: "events",
280
+ match: "relatedMatch",
281
+ terms: ["schema:organizer"]
282
+ },
277
283
  {
278
284
  lexicon: "id.sifa.profile.publication",
279
285
  match: "broadMatch",
@@ -413,6 +419,11 @@ var term_mappings_default = {
413
419
  field: "discoverable",
414
420
  reason: "Sifa indexing control, not a fact about the person."
415
421
  },
422
+ {
423
+ lexicon: "id.sifa.profile.self",
424
+ field: "avatarSource",
425
+ reason: "Rendering instruction for apps, not a fact about the person."
426
+ },
416
427
  {
417
428
  lexicon: "id.sifa.profile.position",
418
429
  field: "isPrimary",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/jsonld/term-mappings.json","../../src/jsonld/terms.ts"],"sourcesContent":["{\n \"$schema\": \"https://sifa.id/schemas/term-mappings/v1.json\",\n \"version\": \"1.0.0\",\n \"description\": \"Reconciliation between id.sifa.* lexicon terms and existing RDF vocabularies. RDF is used here as vocabulary only: Sifa records are Lexicon JSON on the AT Protocol, and nothing here changes how they are stored or transmitted. Match strengths use SKOS mapping relations.\",\n \"vocabularies\": {\n \"schema\": \"https://schema.org/\",\n \"bibo\": \"http://purl.org/ontology/bibo/\",\n \"dcterms\": \"http://purl.org/dc/terms/\",\n \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n \"org\": \"http://www.w3.org/ns/org#\",\n \"prism\": \"http://prismstandard.org/namespaces/basic/2.1/\",\n \"event\": \"http://purl.org/NET/c4dm/event.owl#\",\n \"skos\": \"http://www.w3.org/2004/02/skos/core#\"\n },\n \"mappings\": [\n {\n \"lexicon\": \"id.sifa.org.profile\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Organization\", \"org:FormalOrganization\"],\n \"note\": \"ROR is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:EducationalOccupationalCredential\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"field\": \"credentialUrl\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:url\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"field\": \"expiresAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:validUntil\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.course\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Course\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.course\",\n \"field\": \"number\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:courseCode\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:EducationalOccupationalCredential\"],\n \"note\": \"One record maps to two schema.org assertions: alumniOf for the institution and hasCredential for the degree.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"degree\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:hasCredential\", \"bibo:degree\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"eqfLevel\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:educationalLevel\"],\n \"note\": \"EQF is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"fieldOfStudy\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:educationalCredentialAwarded\"],\n \"note\": \"ISCED-F is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"institution\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:alumniOf\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.externalAccount\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:sameAs\", \"foaf:account\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.honor\",\n \"match\": \"broadMatch\",\n \"terms\": [\"schema:award\"],\n \"note\": \"schema:award is a bare string, so issuer and date are lost. No better term exists in BIBO either.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.involvement\",\n \"match\": \"broadMatch\",\n \"terms\": [\"org:Membership\"],\n \"note\": \"The kind known values have no external equivalent.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.language\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:knowsLanguage\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"match\": \"closeMatch\",\n \"terms\": [\"org:Membership\", \"schema:OrganizationRole\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"company\",\n \"match\": \"exactMatch\",\n \"terms\": [\"org:organization\", \"schema:worksFor\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:description\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"employmentType\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:employmentType\"],\n \"note\": \"schema:employmentType is free text. ESCO is the better value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"endedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:endDate\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"entityRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:sameAs\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"location\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:jobLocation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"startedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:startDate\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"org:role\", \"schema:roleName\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"workplaceType\",\n \"match\": \"narrowMatch\",\n \"terms\": [\"schema:jobLocationType\"],\n \"note\": \"schema.org models only a remote flag; Sifa distinguishes onSite, remote, and hybrid.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:Slideshow\", \"schema:PresentationDigitalDocument\"],\n \"note\": \"Neither term carries the \\\"reusable, deliverable more than once\\\" semantics of the Sifa record.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"coverImage\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:image\", \"foaf:depiction\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:abstract\", \"schema:abstract\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"duration\",\n \"match\": \"narrowMatch\",\n \"terms\": [\"schema:timeRequired\"],\n \"note\": \"The lexicon models a range; schema:timeRequired is a single ISO 8601 duration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"intendedAudiences\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:audience\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"writeupRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:isReferencedBy\", \"schema:subjectOf\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:Event\", \"event:Event\"],\n \"note\": \"BIBO models this relation as bibo:Slideshow bibo:presentedAt event:Event.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"address\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:location\", \"event:place\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"coSpeakers\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:performer\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"date\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:startDate\", \"event:time\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"eventName\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:superEvent\", \"bibo:Conference\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"mode\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:eventAttendanceMode\"],\n \"note\": \"The community.lexicon.calendar.event known values are already one-to-one with the schema.org enumeration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"presentationRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:presentedAt\", \"schema:workPerformed\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"role\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:performer\", \"schema:performer\"],\n \"note\": \"No external vocabulary distinguishes presenter, panelist, keynote, workshop and host at this granularity.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"status\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:eventStatus\"],\n \"note\": \"As with mode, already one-to-one with the schema.org enumeration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.project\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Project\", \"foaf:Project\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"match\": \"broadMatch\",\n \"terms\": [\"bibo:Document\", \"schema:CreativeWork\"],\n \"note\": \"Refine to bibo:AcademicArticle, bibo:Book, bibo:Report or bibo:Thesis when a resource type is known. COAR is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"authors\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:authorList\", \"schema:author\"],\n \"note\": \"bibo:authorList is an ordered rdf:List and preserves author order, which schema:author does not guarantee.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:abstract\", \"schema:abstract\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"doi\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:doi\", \"prism:doi\"],\n \"note\": \"schema:identifier with a PropertyValue of propertyID 'doi' is the JSON-LD serialization; bibo:doi is the direct term.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"publishedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:issued\", \"schema:datePublished\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"publisher\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:publisher\", \"schema:publisher\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"relatedIdentifiers\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:relation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"subtitle\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:alternativeHeadline\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"type\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:type\", \"schema:additionalType\"],\n \"note\": \"COAR Resource Types is the anchor a consumer should map to. The values here are ORCID's because that is the vocabulary the data arrives in; deviating from the id.sifa.defs token convention is deliberate, since the vocabulary is ORCID's rather than Sifa's.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"url\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:uri\", \"schema:url\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Person\", \"foaf:Person\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"about\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:description\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"avatar\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:image\", \"foaf:depiction\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"displayName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:name\", \"foaf:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"familyName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:familyName\", \"foaf:family_name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"givenName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:givenName\", \"foaf:givenname\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"headline\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:jobTitle\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"location\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:homeLocation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.skill\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:knowsAbout\", \"schema:DefinedTerm\"],\n \"note\": \"ESCO is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.volunteering\",\n \"match\": \"closeMatch\",\n \"terms\": [\"org:Membership\", \"schema:OrganizationRole\"]\n }\n ],\n \"unmapped\": [\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"pronouns\",\n \"reason\": \"No stable external term. schema.org has no pronouns property.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"discoverable\",\n \"reason\": \"Sifa indexing control, not a fact about the person.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"isPrimary\",\n \"reason\": \"Sifa display ordering concern.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"grade\",\n \"reason\": \"No comparable external term; grading scales are not portable.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.language\",\n \"field\": \"proficiency\",\n \"reason\": \"The known values are CEFR-shaped but not CEFR-named. Map only; renaming a published lexicon for a cosmetic gain is not worth the break.\"\n },\n {\n \"lexicon\": \"id.sifa.confirmation\",\n \"reason\": \"A record affirming another record is reification. schema:Review and schema:ClaimReview both imply an evaluation that a confirmation does not make.\"\n },\n {\n \"lexicon\": \"id.sifa.endorsement\",\n \"reason\": \"Same reification problem as confirmation. Any mapping that lets a consumer aggregate endorsements into a score works against the descriptive-only trust model.\"\n },\n {\n \"lexicon\": \"id.sifa.graph.connection\",\n \"reason\": \"foaf:knows carries no consent semantics. A Sifa connection is bilateral and confirmed; flattening it to foaf:knows would misrepresent an unconfirmed acquaintance claim as mutual.\"\n },\n {\n \"lexicon\": \"id.sifa.graph.follow\",\n \"reason\": \"See id.sifa.graph.connection.\"\n },\n {\n \"lexicon\": \"id.sifa.meeting\",\n \"reason\": \"Attestation semantics; same reification problem as confirmation.\"\n }\n ]\n}\n","/**\n * Reconciliation between `id.sifa.*` lexicon terms and existing RDF\n * vocabularies.\n *\n * The facts live in sifa-lexicons, as `x-skos:*` annotations on the lexicon\n * defs and properties. Those annotations are published to the authority PDS,\n * so a third party resolving `id.sifa.*` already reads them; that makes the\n * lexicons the source of truth and `./term-mappings.json` a derived copy,\n * refreshed by `scripts/sync-term-mappings.mjs` and drift-checked in CI.\n *\n * To change a mapping, change the lexicon, not this file.\n *\n * Scope note: RDF is adopted here as *vocabulary only*. Sifa records are\n * Lexicon JSON on the AT Protocol; nothing in this module changes how records\n * are stored or transmitted. A mapping is a one-directional annotation over a\n * lexicon designed on its own merits, never a constraint on lexicon design.\n * When a term does not fit, the correct answer is `noMatch`, not a different\n * lexicon.\n */\n\nimport document from './term-mappings.json';\n\n/** Vocabulary prefix -> namespace IRI. */\nexport const VOCABULARIES: Readonly<Record<string, string>> = document.vocabularies;\n\nexport type VocabularyPrefix = keyof typeof document.vocabularies;\n\n/**\n * Strength of a mapping, using SKOS mapping relations so the table is itself\n * expressible as RDF.\n *\n * `noMatch` is not the absence of an entry. It is a deliberate statement that\n * no external term should be used for this concept, and it carries a reason.\n */\nexport type MatchStrength =\n 'exactMatch' | 'closeMatch' | 'broadMatch' | 'narrowMatch' | 'relatedMatch' | 'noMatch';\n\nexport interface TermMapping {\n /** Lexicon NSID, e.g. `id.sifa.profile.presentation`. */\n readonly lexicon: string;\n /**\n * Field name within the record. Omitted for a record-level class mapping\n * (what the record *is*, rather than what one of its fields means).\n */\n readonly field?: string;\n /** CURIEs, e.g. `dcterms:title`. Empty when `match` is `noMatch`. */\n readonly terms: readonly string[];\n readonly match: MatchStrength;\n /** Rationale. Always present when `match` is `noMatch`. */\n readonly note?: string;\n}\n\ninterface RawMapping {\n lexicon: string;\n field?: string;\n terms: string[];\n match: string;\n note?: string;\n}\n\ninterface RawUnmapped {\n lexicon: string;\n field?: string;\n reason: string;\n}\n\n/**\n * Every reconciliation Sifa asserts, including the deliberate non-mappings.\n *\n * The published document splits these into `mappings` and `unmapped`, which\n * reads better over the wire. Callers here want one list, so they are\n * flattened back together.\n */\nexport const TERM_MAPPINGS: readonly TermMapping[] = [\n ...(document.mappings as RawMapping[]).map((m): TermMapping => ({\n lexicon: m.lexicon,\n ...(m.field ? { field: m.field } : {}),\n terms: m.terms,\n match: m.match as MatchStrength,\n ...(m.note ? { note: m.note } : {}),\n })),\n ...(document.unmapped as RawUnmapped[]).map((u): TermMapping => ({\n lexicon: u.lexicon,\n ...(u.field ? { field: u.field } : {}),\n terms: [],\n match: 'noMatch',\n note: u.reason,\n })),\n];\n\n/**\n * Expand a CURIE (`dcterms:title`) to a full IRI. Returns null for an unknown\n * prefix rather than guessing a namespace.\n */\nexport function expandCurie(curie: string): string | null {\n const separator = curie.indexOf(':');\n if (separator <= 0) return null;\n const prefix = curie.slice(0, separator);\n const local = curie.slice(separator + 1);\n if (!local) return null;\n if (!Object.prototype.hasOwnProperty.call(VOCABULARIES, prefix)) return null;\n return `${VOCABULARIES[prefix]}${local}`;\n}\n\n/** All mappings declared for one lexicon NSID, record level and field level. */\nexport function mappingsForLexicon(nsid: string): readonly TermMapping[] {\n return TERM_MAPPINGS.filter((m) => m.lexicon === nsid);\n}\n\n/** True when Sifa has deliberately declined to map this lexicon or field. */\nexport function isDeliberatelyUnmapped(nsid: string, field?: string): boolean {\n return TERM_MAPPINGS.some(\n (m) => m.lexicon === nsid && m.field === field && m.match === 'noMatch',\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/jsonld/term-mappings.json","../../src/jsonld/terms.ts"],"sourcesContent":["{\n \"$schema\": \"https://sifa.id/schemas/term-mappings/v1.json\",\n \"version\": \"1.0.0\",\n \"description\": \"Reconciliation between id.sifa.* lexicon terms and existing RDF vocabularies. RDF is used here as vocabulary only: Sifa records are Lexicon JSON on the AT Protocol, and nothing here changes how they are stored or transmitted. Match strengths use SKOS mapping relations.\",\n \"vocabularies\": {\n \"schema\": \"https://schema.org/\",\n \"bibo\": \"http://purl.org/ontology/bibo/\",\n \"dcterms\": \"http://purl.org/dc/terms/\",\n \"foaf\": \"http://xmlns.com/foaf/0.1/\",\n \"org\": \"http://www.w3.org/ns/org#\",\n \"prism\": \"http://prismstandard.org/namespaces/basic/2.1/\",\n \"event\": \"http://purl.org/NET/c4dm/event.owl#\",\n \"skos\": \"http://www.w3.org/2004/02/skos/core#\"\n },\n \"mappings\": [\n {\n \"lexicon\": \"id.sifa.org.profile\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Organization\", \"org:FormalOrganization\"],\n \"note\": \"ROR is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:EducationalOccupationalCredential\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"field\": \"credentialUrl\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:url\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.certification\",\n \"field\": \"expiresAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:validUntil\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.course\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Course\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.course\",\n \"field\": \"number\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:courseCode\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:EducationalOccupationalCredential\"],\n \"note\": \"One record maps to two schema.org assertions: alumniOf for the institution and hasCredential for the degree.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"degree\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:hasCredential\", \"bibo:degree\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"eqfLevel\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:educationalLevel\"],\n \"note\": \"EQF is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"fieldOfStudy\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:educationalCredentialAwarded\"],\n \"note\": \"ISCED-F is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"institution\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:alumniOf\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.externalAccount\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:sameAs\", \"foaf:account\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.honor\",\n \"match\": \"broadMatch\",\n \"terms\": [\"schema:award\"],\n \"note\": \"schema:award is a bare string, so issuer and date are lost. No better term exists in BIBO either.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.involvement\",\n \"match\": \"broadMatch\",\n \"terms\": [\"org:Membership\"],\n \"note\": \"The kind known values have no external equivalent.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.language\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:knowsLanguage\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"match\": \"closeMatch\",\n \"terms\": [\"org:Membership\", \"schema:OrganizationRole\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"company\",\n \"match\": \"exactMatch\",\n \"terms\": [\"org:organization\", \"schema:worksFor\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:description\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"employmentType\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:employmentType\"],\n \"note\": \"schema:employmentType is free text. ESCO is the better value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"endedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:endDate\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"entityRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:sameAs\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"location\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:jobLocation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"startedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:startDate\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"org:role\", \"schema:roleName\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"workplaceType\",\n \"match\": \"narrowMatch\",\n \"terms\": [\"schema:jobLocationType\"],\n \"note\": \"schema.org models only a remote flag; Sifa distinguishes onSite, remote, and hybrid.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:Slideshow\", \"schema:PresentationDigitalDocument\"],\n \"note\": \"Neither term carries the \\\"reusable, deliverable more than once\\\" semantics of the Sifa record.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"coverImage\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:image\", \"foaf:depiction\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:abstract\", \"schema:abstract\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"duration\",\n \"match\": \"narrowMatch\",\n \"terms\": [\"schema:timeRequired\"],\n \"note\": \"The lexicon models a range; schema:timeRequired is a single ISO 8601 duration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"intendedAudiences\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:audience\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentation\",\n \"field\": \"writeupRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:isReferencedBy\", \"schema:subjectOf\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:Event\", \"event:Event\"],\n \"note\": \"BIBO models this relation as bibo:Slideshow bibo:presentedAt event:Event.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"address\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:location\", \"event:place\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"coSpeakers\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:performer\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"date\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:startDate\", \"event:time\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"eventName\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:superEvent\", \"bibo:Conference\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"mode\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:eventAttendanceMode\"],\n \"note\": \"The community.lexicon.calendar.event known values are already one-to-one with the schema.org enumeration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"presentationRef\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:presentedAt\", \"schema:workPerformed\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"role\",\n \"match\": \"closeMatch\",\n \"terms\": [\"bibo:performer\", \"schema:performer\"],\n \"note\": \"No external vocabulary distinguishes presenter, panelist, keynote, workshop and host at this granularity.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"status\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:eventStatus\"],\n \"note\": \"As with mode, already one-to-one with the schema.org enumeration.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.presentationDelivery\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.project\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Project\", \"foaf:Project\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.project\",\n \"field\": \"events\",\n \"match\": \"relatedMatch\",\n \"terms\": [\"schema:organizer\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"match\": \"broadMatch\",\n \"terms\": [\"bibo:Document\", \"schema:CreativeWork\"],\n \"note\": \"Refine to bibo:AcademicArticle, bibo:Book, bibo:Report or bibo:Thesis when a resource type is known. COAR is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"authors\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:authorList\", \"schema:author\"],\n \"note\": \"bibo:authorList is an ordered rdf:List and preserves author order, which schema:author does not guarantee.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"description\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:abstract\", \"schema:abstract\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"doi\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:doi\", \"prism:doi\"],\n \"note\": \"schema:identifier with a PropertyValue of propertyID 'doi' is the JSON-LD serialization; bibo:doi is the direct term.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"publishedAt\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:issued\", \"schema:datePublished\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"publisher\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:publisher\", \"schema:publisher\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"relatedIdentifiers\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:relation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"subtitle\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:alternativeHeadline\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"title\",\n \"match\": \"exactMatch\",\n \"terms\": [\"dcterms:title\", \"schema:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"type\",\n \"match\": \"closeMatch\",\n \"terms\": [\"dcterms:type\", \"schema:additionalType\"],\n \"note\": \"COAR Resource Types is the anchor a consumer should map to. The values here are ORCID's because that is the vocabulary the data arrives in; deviating from the id.sifa.defs token convention is deliberate, since the vocabulary is ORCID's rather than Sifa's.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.publication\",\n \"field\": \"url\",\n \"match\": \"exactMatch\",\n \"terms\": [\"bibo:uri\", \"schema:url\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:Person\", \"foaf:Person\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"about\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:description\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"avatar\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:image\", \"foaf:depiction\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"displayName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:name\", \"foaf:name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"familyName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:familyName\", \"foaf:family_name\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"givenName\",\n \"match\": \"exactMatch\",\n \"terms\": [\"schema:givenName\", \"foaf:givenname\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"headline\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:jobTitle\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"location\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:homeLocation\"]\n },\n {\n \"lexicon\": \"id.sifa.profile.skill\",\n \"match\": \"closeMatch\",\n \"terms\": [\"schema:knowsAbout\", \"schema:DefinedTerm\"],\n \"note\": \"ESCO is the value anchor.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.volunteering\",\n \"match\": \"closeMatch\",\n \"terms\": [\"org:Membership\", \"schema:OrganizationRole\"]\n }\n ],\n \"unmapped\": [\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"pronouns\",\n \"reason\": \"No stable external term. schema.org has no pronouns property.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"discoverable\",\n \"reason\": \"Sifa indexing control, not a fact about the person.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.self\",\n \"field\": \"avatarSource\",\n \"reason\": \"Rendering instruction for apps, not a fact about the person.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.position\",\n \"field\": \"isPrimary\",\n \"reason\": \"Sifa display ordering concern.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.education\",\n \"field\": \"grade\",\n \"reason\": \"No comparable external term; grading scales are not portable.\"\n },\n {\n \"lexicon\": \"id.sifa.profile.language\",\n \"field\": \"proficiency\",\n \"reason\": \"The known values are CEFR-shaped but not CEFR-named. Map only; renaming a published lexicon for a cosmetic gain is not worth the break.\"\n },\n {\n \"lexicon\": \"id.sifa.confirmation\",\n \"reason\": \"A record affirming another record is reification. schema:Review and schema:ClaimReview both imply an evaluation that a confirmation does not make.\"\n },\n {\n \"lexicon\": \"id.sifa.endorsement\",\n \"reason\": \"Same reification problem as confirmation. Any mapping that lets a consumer aggregate endorsements into a score works against the descriptive-only trust model.\"\n },\n {\n \"lexicon\": \"id.sifa.graph.connection\",\n \"reason\": \"foaf:knows carries no consent semantics. A Sifa connection is bilateral and confirmed; flattening it to foaf:knows would misrepresent an unconfirmed acquaintance claim as mutual.\"\n },\n {\n \"lexicon\": \"id.sifa.graph.follow\",\n \"reason\": \"See id.sifa.graph.connection.\"\n },\n {\n \"lexicon\": \"id.sifa.meeting\",\n \"reason\": \"Attestation semantics; same reification problem as confirmation.\"\n }\n ]\n}\n","/**\n * Reconciliation between `id.sifa.*` lexicon terms and existing RDF\n * vocabularies.\n *\n * The facts live in sifa-lexicons, as `x-skos:*` annotations on the lexicon\n * defs and properties. Those annotations are published to the authority PDS,\n * so a third party resolving `id.sifa.*` already reads them; that makes the\n * lexicons the source of truth and `./term-mappings.json` a derived copy,\n * refreshed by `scripts/sync-term-mappings.mjs` and drift-checked in CI.\n *\n * To change a mapping, change the lexicon, not this file.\n *\n * Scope note: RDF is adopted here as *vocabulary only*. Sifa records are\n * Lexicon JSON on the AT Protocol; nothing in this module changes how records\n * are stored or transmitted. A mapping is a one-directional annotation over a\n * lexicon designed on its own merits, never a constraint on lexicon design.\n * When a term does not fit, the correct answer is `noMatch`, not a different\n * lexicon.\n */\n\nimport document from './term-mappings.json';\n\n/** Vocabulary prefix -> namespace IRI. */\nexport const VOCABULARIES: Readonly<Record<string, string>> = document.vocabularies;\n\nexport type VocabularyPrefix = keyof typeof document.vocabularies;\n\n/**\n * Strength of a mapping, using SKOS mapping relations so the table is itself\n * expressible as RDF.\n *\n * `noMatch` is not the absence of an entry. It is a deliberate statement that\n * no external term should be used for this concept, and it carries a reason.\n */\nexport type MatchStrength =\n 'exactMatch' | 'closeMatch' | 'broadMatch' | 'narrowMatch' | 'relatedMatch' | 'noMatch';\n\nexport interface TermMapping {\n /** Lexicon NSID, e.g. `id.sifa.profile.presentation`. */\n readonly lexicon: string;\n /**\n * Field name within the record. Omitted for a record-level class mapping\n * (what the record *is*, rather than what one of its fields means).\n */\n readonly field?: string;\n /** CURIEs, e.g. `dcterms:title`. Empty when `match` is `noMatch`. */\n readonly terms: readonly string[];\n readonly match: MatchStrength;\n /** Rationale. Always present when `match` is `noMatch`. */\n readonly note?: string;\n}\n\ninterface RawMapping {\n lexicon: string;\n field?: string;\n terms: string[];\n match: string;\n note?: string;\n}\n\ninterface RawUnmapped {\n lexicon: string;\n field?: string;\n reason: string;\n}\n\n/**\n * Every reconciliation Sifa asserts, including the deliberate non-mappings.\n *\n * The published document splits these into `mappings` and `unmapped`, which\n * reads better over the wire. Callers here want one list, so they are\n * flattened back together.\n */\nexport const TERM_MAPPINGS: readonly TermMapping[] = [\n ...(document.mappings as RawMapping[]).map((m): TermMapping => ({\n lexicon: m.lexicon,\n ...(m.field ? { field: m.field } : {}),\n terms: m.terms,\n match: m.match as MatchStrength,\n ...(m.note ? { note: m.note } : {}),\n })),\n ...(document.unmapped as RawUnmapped[]).map((u): TermMapping => ({\n lexicon: u.lexicon,\n ...(u.field ? { field: u.field } : {}),\n terms: [],\n match: 'noMatch',\n note: u.reason,\n })),\n];\n\n/**\n * Expand a CURIE (`dcterms:title`) to a full IRI. Returns null for an unknown\n * prefix rather than guessing a namespace.\n */\nexport function expandCurie(curie: string): string | null {\n const separator = curie.indexOf(':');\n if (separator <= 0) return null;\n const prefix = curie.slice(0, separator);\n const local = curie.slice(separator + 1);\n if (!local) return null;\n if (!Object.prototype.hasOwnProperty.call(VOCABULARIES, prefix)) return null;\n return `${VOCABULARIES[prefix]}${local}`;\n}\n\n/** All mappings declared for one lexicon NSID, record level and field level. */\nexport function mappingsForLexicon(nsid: string): readonly TermMapping[] {\n return TERM_MAPPINGS.filter((m) => m.lexicon === nsid);\n}\n\n/** True when Sifa has deliberately declined to map this lexicon or field. */\nexport function isDeliberatelyUnmapped(nsid: string, field?: string): boolean {\n return TERM_MAPPINGS.some(\n (m) => m.lexicon === nsid && m.field === field && m.match === 'noMatch',\n );\n}\n"],"mappings":";AAAA;AAAA,EACE,SAAW;AAAA,EACX,SAAW;AAAA,EACX,aAAe;AAAA,EACf,cAAgB;AAAA,IACd,QAAU;AAAA,IACV,MAAQ;AAAA,IACR,SAAW;AAAA,IACX,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,OAAS;AAAA,IACT,OAAS;AAAA,IACT,MAAQ;AAAA,EACV;AAAA,EACA,UAAY;AAAA,IACV;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,uBAAuB,wBAAwB;AAAA,MACzD,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,0CAA0C;AAAA,IACtD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,YAAY;AAAA,IACxB;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,mBAAmB;AAAA,IAC/B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,eAAe;AAAA,IAC3B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,mBAAmB;AAAA,IAC/B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,0CAA0C;AAAA,MACpD,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,wBAAwB,aAAa;AAAA,IACjD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,yBAAyB;AAAA,MACnC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qCAAqC;AAAA,MAC/C,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB;AAAA,IAC7B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,cAAc;AAAA,IAC3C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,cAAc;AAAA,MACxB,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB;AAAA,MAC1B,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,sBAAsB;AAAA,IAClC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,yBAAyB;AAAA,IACvD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB,iBAAiB;AAAA,IACjD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB;AAAA,IACjC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,uBAAuB;AAAA,MACjC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB;AAAA,IAC5B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,eAAe;AAAA,IAC3B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB;AAAA,IAChC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB;AAAA,IAC9B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,YAAY,iBAAiB;AAAA,IACzC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,wBAAwB;AAAA,MAClC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,oCAAoC;AAAA,MAChE,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB,gBAAgB;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,iBAAiB;AAAA,IAC9C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB;AAAA,MAC/B,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB;AAAA,IAC7B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,0BAA0B,kBAAkB;AAAA,IACxD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB,aAAa;AAAA,MACvC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,mBAAmB,aAAa;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB;AAAA,IAC9B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB,YAAY;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB,iBAAiB;AAAA,IAClD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,4BAA4B;AAAA,MACtC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB,sBAAsB;AAAA,IACtD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,kBAAkB;AAAA,MAC9C,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB;AAAA,MAC9B,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,cAAc;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB;AAAA,IAC9B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,qBAAqB;AAAA,MAChD,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,mBAAmB,eAAe;AAAA,MAC5C,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,iBAAiB;AAAA,IAC9C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,YAAY,WAAW;AAAA,MACjC,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,sBAAsB;AAAA,IACpD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB,kBAAkB;AAAA,IACnD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB;AAAA,IAC9B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,4BAA4B;AAAA,IACxC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB,uBAAuB;AAAA,MACjD,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,YAAY,YAAY;AAAA,IACpC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB;AAAA,IAChC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,gBAAgB,gBAAgB;AAAA,IAC5C;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,eAAe,WAAW;AAAA,IACtC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB,kBAAkB;AAAA,IACnD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,oBAAoB,gBAAgB;AAAA,IAChD;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,iBAAiB;AAAA,IAC7B;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB;AAAA,IACjC;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,qBAAqB,oBAAoB;AAAA,MACnD,MAAQ;AAAA,IACV;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,OAAS,CAAC,kBAAkB,yBAAyB;AAAA,IACvD;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,QAAU;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAW;AAAA,MACX,QAAU;AAAA,IACZ;AAAA,EACF;AACF;;;ACtbO,IAAM,eAAiD,sBAAS;AAkDhE,IAAM,gBAAwC;AAAA,EACnD,GAAI,sBAAS,SAA0B,IAAI,CAAC,OAAoB;AAAA,IAC9D,SAAS,EAAE;AAAA,IACX,GAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAAA,IACpC,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAAA,EACnC,EAAE;AAAA,EACF,GAAI,sBAAS,SAA2B,IAAI,CAAC,OAAoB;AAAA,IAC/D,SAAS,EAAE;AAAA,IACX,GAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAAA,IACpC,OAAO,CAAC;AAAA,IACR,OAAO;AAAA,IACP,MAAM,EAAE;AAAA,EACV,EAAE;AACJ;AAMO,SAAS,YAAY,OAA8B;AACxD,QAAM,YAAY,MAAM,QAAQ,GAAG;AACnC,MAAI,aAAa,EAAG,QAAO;AAC3B,QAAM,SAAS,MAAM,MAAM,GAAG,SAAS;AACvC,QAAM,QAAQ,MAAM,MAAM,YAAY,CAAC;AACvC,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,cAAc,MAAM,EAAG,QAAO;AACxE,SAAO,GAAG,aAAa,MAAM,CAAC,GAAG,KAAK;AACxC;AAGO,SAAS,mBAAmB,MAAsC;AACvE,SAAO,cAAc,OAAO,CAAC,MAAM,EAAE,YAAY,IAAI;AACvD;AAGO,SAAS,uBAAuB,MAAc,OAAyB;AAC5E,SAAO,cAAc;AAAA,IACnB,CAAC,MAAM,EAAE,YAAY,QAAQ,EAAE,UAAU,SAAS,EAAE,UAAU;AAAA,EAChE;AACF;","names":[]}
@@ -1,8 +1,7 @@
1
- import { c as Profile, d as ProfilePosition, W as SkillRef, z as PresentationLinkView } from './index-DAiJZvPg.js';
2
- import { a0 as SifaApiConfig, a1 as ApiFetchOptions, o as ProfileView, a2 as CreateResult, a3 as WriteResult } from './types-CI24asgo.js';
3
- import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-PRDqxAQT.js';
1
+ import { c as Profile, d as ProfilePosition, W as SkillRef, z as PresentationLinkView } from './index-B0BDMGLm.js';
2
+ import { a0 as SifaApiConfig, a1 as ApiFetchOptions, o as ProfileView, a2 as CreateResult, a3 as WriteResult } from './types-DB7UkX43.js';
3
+ import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-1oXL1guc.js';
4
4
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, l as EntitySelectRequest, n as EntitySelectResponse } from './follow-profile-ceqefXAw.js';
5
- import { z } from 'zod';
6
5
 
7
6
  /**
8
7
  * Read the aggregated profile for a handle or DID.
@@ -389,54 +388,6 @@ declare function resolveEntityDomain(config: SifaApiConfig, domain: string, opti
389
388
  */
390
389
  declare function mintEntityDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<EntityMintDomainResponse>;
391
390
 
392
- /** One rpg.actor item and the viewer's progress on it, as served by `GET /api/rpg/status`. */
393
- declare const RpgItemStatusSchema: z.ZodObject<{
394
- id: z.ZodString;
395
- title: z.ZodString;
396
- description: z.ZodString;
397
- category: z.ZodString;
398
- earned: z.ZodBoolean;
399
- state: z.ZodEnum<{
400
- claimed: "claimed";
401
- earned: "earned";
402
- locked: "locked";
403
- given: "given";
404
- }>;
405
- worn: z.ZodDefault<z.ZodBoolean>;
406
- iconUrl: z.ZodNullable<z.ZodString>;
407
- }, z.core.$strip>;
408
- type RpgItemStatus = z.infer<typeof RpgItemStatusSchema>;
409
- declare const RpgStatusResponseSchema: z.ZodObject<{
410
- hasCharacter: z.ZodBoolean;
411
- canWriteItems: z.ZodBoolean;
412
- canCollect: z.ZodDefault<z.ZodBoolean>;
413
- items: z.ZodArray<z.ZodObject<{
414
- id: z.ZodString;
415
- title: z.ZodString;
416
- description: z.ZodString;
417
- category: z.ZodString;
418
- earned: z.ZodBoolean;
419
- state: z.ZodEnum<{
420
- claimed: "claimed";
421
- earned: "earned";
422
- locked: "locked";
423
- given: "given";
424
- }>;
425
- worn: z.ZodDefault<z.ZodBoolean>;
426
- iconUrl: z.ZodNullable<z.ZodString>;
427
- }, z.core.$strip>>;
428
- }, z.core.$strip>;
429
- type RpgStatusResponse = z.infer<typeof RpgStatusResponseSchema>;
430
- interface FetchRpgStatusOptions extends ApiFetchOptions {
431
- /** Forwarded as the `cookie` header for server-side (SSR) calls. */
432
- cookieHeader?: string;
433
- }
434
- /**
435
- * Fetch the authenticated viewer's rpg.actor item status. Auth-scoped: relies
436
- * on the session cookie (`credentials: 'include'`).
437
- */
438
- declare function fetchRpgStatus(config: SifaApiConfig, options?: FetchRpgStatusOptions): Promise<RpgStatusResponse>;
439
-
440
391
  /**
441
392
  * Counts confirmed endorsements received by a DID. The backend's
442
393
  * `GET /api/endorsement/:did` already returns only confirmed endorsements
@@ -558,4 +509,4 @@ declare function checkNetworkMapJobStatus(config: SifaApiConfig, jobId: string,
558
509
  */
559
510
  declare function fetchNetworkMap(config: SifaApiConfig, options?: ApiFetchOptions): Promise<NetworkMapResponse | null>;
560
511
 
561
- export { isNetworkMapResponse as $, deletePosition as A, deleteRecord as B, dismissEndorsement as C, type DismissEndorsementInput as D, fetchAtFundLink as E, type FetchNetworkStreamCountOptions as F, fetchEndorsementCount as G, fetchEntitySearch as H, fetchGetProfileView as I, fetchNetworkMap as J, fetchNetworkStreamCount as K, fetchPendingEndorsements as L, fetchProfile as M, type NetworkMapEdge as N, fetchProfileSummary as O, type PendingEndorsementsPage as P, fetchReceivedEndorsements as Q, type ReceivedEndorsementsPage as R, type SpeakerCard as S, type TalkEvent as T, fetchReciprocityCandidate as U, fetchRpgStatus as V, fetchSpeakers as W, fetchTalks as X, hideKeytraceClaim as Y, importSearchEntities as Z, initiateNetworkMapGeneration as _, type ReciprocityCandidate as a, linkSkillToPosition as a0, mintEntityDomain as a1, resolveEntityDomain as a2, revealMarqueDomain as a3, selectEntity as a4, setPositionPrimary as a5, unhideKeytraceClaim as a6, unlinkSkillFromPosition as a7, unrevealMarqueDomain as a8, unsetPositionPrimary as a9, updateEducation as aa, updatePosition as ab, updateRecord as ac, type FetchPendingEndorsementsOptions as b, type FetchRpgStatusOptions as c, type NetworkMapGenerationJob as d, type NetworkMapGraphData as e, type NetworkMapNode as f, type NetworkMapPendingJob as g, type NetworkMapResponse as h, type PendingEndorsement as i, type ReceivedEndorsement as j, type ReciprocitySkill as k, type RpgItemStatus as l, RpgItemStatusSchema as m, type RpgStatusResponse as n, RpgStatusResponseSchema as o, type SpeakerDirectoryFilters as p, type SpeakerGroup as q, type SpeakersResponse as r, type TalkRow as s, type TalkSpeaker as t, type TalksResponse as u, checkNetworkMapJobStatus as v, createEducation as w, createPosition as x, createRecord as y, deleteEducation as z };
512
+ export { setPositionPrimary as $, fetchEntitySearch as A, fetchGetProfileView as B, fetchNetworkMap as C, type DismissEndorsementInput as D, fetchNetworkStreamCount as E, type FetchNetworkStreamCountOptions as F, fetchPendingEndorsements as G, fetchProfile as H, fetchProfileSummary as I, fetchReceivedEndorsements as J, fetchReciprocityCandidate as K, fetchSpeakers as L, fetchTalks as M, type NetworkMapEdge as N, hideKeytraceClaim as O, type PendingEndorsementsPage as P, importSearchEntities as Q, type ReceivedEndorsementsPage as R, type SpeakerCard as S, type TalkEvent as T, initiateNetworkMapGeneration as U, isNetworkMapResponse as V, linkSkillToPosition as W, mintEntityDomain as X, resolveEntityDomain as Y, revealMarqueDomain as Z, selectEntity as _, type ReciprocityCandidate as a, unhideKeytraceClaim as a0, unlinkSkillFromPosition as a1, unrevealMarqueDomain as a2, unsetPositionPrimary as a3, updateEducation as a4, updatePosition as a5, updateRecord as a6, type FetchPendingEndorsementsOptions as b, type NetworkMapGenerationJob as c, type NetworkMapGraphData as d, type NetworkMapNode as e, type NetworkMapPendingJob as f, type NetworkMapResponse as g, type PendingEndorsement as h, type ReceivedEndorsement as i, type ReciprocitySkill as j, type SpeakerDirectoryFilters as k, type SpeakerGroup as l, type SpeakersResponse as m, type TalkRow as n, type TalkSpeaker as o, type TalksResponse as p, checkNetworkMapJobStatus as q, createEducation as r, createPosition as s, createRecord as t, deleteEducation as u, deletePosition as v, deleteRecord as w, dismissEndorsement as x, fetchAtFundLink as y, fetchEndorsementCount as z };
@@ -1,8 +1,7 @@
1
- import { c as Profile, d as ProfilePosition, W as SkillRef, z as PresentationLinkView } from './index-k6tBrbEU.cjs';
2
- import { a0 as SifaApiConfig, a1 as ApiFetchOptions, o as ProfileView, a2 as CreateResult, a3 as WriteResult } from './types-qw55KvoV.cjs';
3
- import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-BcbJrph1.cjs';
1
+ import { c as Profile, d as ProfilePosition, W as SkillRef, z as PresentationLinkView } from './index-BrWWVQLL.cjs';
2
+ import { a0 as SifaApiConfig, a1 as ApiFetchOptions, o as ProfileView, a2 as CreateResult, a3 as WriteResult } from './types-DQfWqSud.cjs';
3
+ import { S as SummarizeProfileViewOptions, P as ProfileSummary } from './profile-summary-CpM9l8iq.cjs';
4
4
  import { i as EntitySearchResponse, E as EntitySearchResult, c as EntityMintDomainResponse, g as EntityResolveDomainResponse, l as EntitySelectRequest, n as EntitySelectResponse } from './follow-profile-CQ3DTTak.cjs';
5
- import { z } from 'zod';
6
5
 
7
6
  /**
8
7
  * Read the aggregated profile for a handle or DID.
@@ -389,54 +388,6 @@ declare function resolveEntityDomain(config: SifaApiConfig, domain: string, opti
389
388
  */
390
389
  declare function mintEntityDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<EntityMintDomainResponse>;
391
390
 
392
- /** One rpg.actor item and the viewer's progress on it, as served by `GET /api/rpg/status`. */
393
- declare const RpgItemStatusSchema: z.ZodObject<{
394
- id: z.ZodString;
395
- title: z.ZodString;
396
- description: z.ZodString;
397
- category: z.ZodString;
398
- earned: z.ZodBoolean;
399
- state: z.ZodEnum<{
400
- claimed: "claimed";
401
- earned: "earned";
402
- locked: "locked";
403
- given: "given";
404
- }>;
405
- worn: z.ZodDefault<z.ZodBoolean>;
406
- iconUrl: z.ZodNullable<z.ZodString>;
407
- }, z.core.$strip>;
408
- type RpgItemStatus = z.infer<typeof RpgItemStatusSchema>;
409
- declare const RpgStatusResponseSchema: z.ZodObject<{
410
- hasCharacter: z.ZodBoolean;
411
- canWriteItems: z.ZodBoolean;
412
- canCollect: z.ZodDefault<z.ZodBoolean>;
413
- items: z.ZodArray<z.ZodObject<{
414
- id: z.ZodString;
415
- title: z.ZodString;
416
- description: z.ZodString;
417
- category: z.ZodString;
418
- earned: z.ZodBoolean;
419
- state: z.ZodEnum<{
420
- claimed: "claimed";
421
- earned: "earned";
422
- locked: "locked";
423
- given: "given";
424
- }>;
425
- worn: z.ZodDefault<z.ZodBoolean>;
426
- iconUrl: z.ZodNullable<z.ZodString>;
427
- }, z.core.$strip>>;
428
- }, z.core.$strip>;
429
- type RpgStatusResponse = z.infer<typeof RpgStatusResponseSchema>;
430
- interface FetchRpgStatusOptions extends ApiFetchOptions {
431
- /** Forwarded as the `cookie` header for server-side (SSR) calls. */
432
- cookieHeader?: string;
433
- }
434
- /**
435
- * Fetch the authenticated viewer's rpg.actor item status. Auth-scoped: relies
436
- * on the session cookie (`credentials: 'include'`).
437
- */
438
- declare function fetchRpgStatus(config: SifaApiConfig, options?: FetchRpgStatusOptions): Promise<RpgStatusResponse>;
439
-
440
391
  /**
441
392
  * Counts confirmed endorsements received by a DID. The backend's
442
393
  * `GET /api/endorsement/:did` already returns only confirmed endorsements
@@ -558,4 +509,4 @@ declare function checkNetworkMapJobStatus(config: SifaApiConfig, jobId: string,
558
509
  */
559
510
  declare function fetchNetworkMap(config: SifaApiConfig, options?: ApiFetchOptions): Promise<NetworkMapResponse | null>;
560
511
 
561
- export { isNetworkMapResponse as $, deletePosition as A, deleteRecord as B, dismissEndorsement as C, type DismissEndorsementInput as D, fetchAtFundLink as E, type FetchNetworkStreamCountOptions as F, fetchEndorsementCount as G, fetchEntitySearch as H, fetchGetProfileView as I, fetchNetworkMap as J, fetchNetworkStreamCount as K, fetchPendingEndorsements as L, fetchProfile as M, type NetworkMapEdge as N, fetchProfileSummary as O, type PendingEndorsementsPage as P, fetchReceivedEndorsements as Q, type ReceivedEndorsementsPage as R, type SpeakerCard as S, type TalkEvent as T, fetchReciprocityCandidate as U, fetchRpgStatus as V, fetchSpeakers as W, fetchTalks as X, hideKeytraceClaim as Y, importSearchEntities as Z, initiateNetworkMapGeneration as _, type ReciprocityCandidate as a, linkSkillToPosition as a0, mintEntityDomain as a1, resolveEntityDomain as a2, revealMarqueDomain as a3, selectEntity as a4, setPositionPrimary as a5, unhideKeytraceClaim as a6, unlinkSkillFromPosition as a7, unrevealMarqueDomain as a8, unsetPositionPrimary as a9, updateEducation as aa, updatePosition as ab, updateRecord as ac, type FetchPendingEndorsementsOptions as b, type FetchRpgStatusOptions as c, type NetworkMapGenerationJob as d, type NetworkMapGraphData as e, type NetworkMapNode as f, type NetworkMapPendingJob as g, type NetworkMapResponse as h, type PendingEndorsement as i, type ReceivedEndorsement as j, type ReciprocitySkill as k, type RpgItemStatus as l, RpgItemStatusSchema as m, type RpgStatusResponse as n, RpgStatusResponseSchema as o, type SpeakerDirectoryFilters as p, type SpeakerGroup as q, type SpeakersResponse as r, type TalkRow as s, type TalkSpeaker as t, type TalksResponse as u, checkNetworkMapJobStatus as v, createEducation as w, createPosition as x, createRecord as y, deleteEducation as z };
512
+ export { setPositionPrimary as $, fetchEntitySearch as A, fetchGetProfileView as B, fetchNetworkMap as C, type DismissEndorsementInput as D, fetchNetworkStreamCount as E, type FetchNetworkStreamCountOptions as F, fetchPendingEndorsements as G, fetchProfile as H, fetchProfileSummary as I, fetchReceivedEndorsements as J, fetchReciprocityCandidate as K, fetchSpeakers as L, fetchTalks as M, type NetworkMapEdge as N, hideKeytraceClaim as O, type PendingEndorsementsPage as P, importSearchEntities as Q, type ReceivedEndorsementsPage as R, type SpeakerCard as S, type TalkEvent as T, initiateNetworkMapGeneration as U, isNetworkMapResponse as V, linkSkillToPosition as W, mintEntityDomain as X, resolveEntityDomain as Y, revealMarqueDomain as Z, selectEntity as _, type ReciprocityCandidate as a, unhideKeytraceClaim as a0, unlinkSkillFromPosition as a1, unrevealMarqueDomain as a2, unsetPositionPrimary as a3, updateEducation as a4, updatePosition as a5, updateRecord as a6, type FetchPendingEndorsementsOptions as b, type NetworkMapGenerationJob as c, type NetworkMapGraphData as d, type NetworkMapNode as e, type NetworkMapPendingJob as f, type NetworkMapResponse as g, type PendingEndorsement as h, type ReceivedEndorsement as i, type ReciprocitySkill as j, type SpeakerDirectoryFilters as k, type SpeakerGroup as l, type SpeakersResponse as m, type TalkRow as n, type TalkSpeaker as o, type TalksResponse as p, checkNetworkMapJobStatus as q, createEducation as r, createPosition as s, createRecord as t, deleteEducation as u, deletePosition as v, deleteRecord as w, dismissEndorsement as x, fetchAtFundLink as y, fetchEndorsementCount as z };
@@ -801,6 +801,7 @@ declare const ProfileSelfRecordSchema: z.ZodObject<{
801
801
  }, z.core.$strip>>;
802
802
  }, z.core.$strip>>;
803
803
  discoverable: z.ZodOptional<z.ZodBoolean>;
804
+ avatarSource: z.ZodOptional<z.ZodString>;
804
805
  createdAt: z.ZodString;
805
806
  }, z.core.$strip>;
806
807
  type ProfileSelfRecord = z.infer<typeof ProfileSelfRecordSchema>;
@@ -801,6 +801,7 @@ declare const ProfileSelfRecordSchema: z.ZodObject<{
801
801
  }, z.core.$strip>>;
802
802
  }, z.core.$strip>>;
803
803
  discoverable: z.ZodOptional<z.ZodBoolean>;
804
+ avatarSource: z.ZodOptional<z.ZodString>;
804
805
  createdAt: z.ZodString;
805
806
  }, z.core.$strip>;
806
807
  type ProfileSelfRecord = z.infer<typeof ProfileSelfRecordSchema>;
@@ -1,4 +1,4 @@
1
- import { o as ProfileView } from './types-CI24asgo.js';
1
+ import { o as ProfileView } from './types-DB7UkX43.js';
2
2
 
3
3
  /**
4
4
  * Compact professional summary derived from a {@link ProfileView}.
@@ -1,4 +1,4 @@
1
- import { o as ProfileView } from './types-qw55KvoV.cjs';
1
+ import { o as ProfileView } from './types-DQfWqSud.cjs';
2
2
 
3
3
  /**
4
4
  * Compact professional summary derived from a {@link ProfileView}.
@@ -1408,6 +1408,26 @@ async function fetchRpgStatus(config, options = {}) {
1408
1408
  });
1409
1409
  return RpgStatusResponseSchema.parse(data);
1410
1410
  }
1411
+ var RpgClaimableResponseSchema = zod.z.object({
1412
+ count: zod.z.number().int().nonnegative()
1413
+ });
1414
+ async function fetchRpgClaimable(config, options = {}) {
1415
+ const { cookieHeader, ...fetchOptions } = options;
1416
+ const headers = { ...options.headers ?? {} };
1417
+ if (cookieHeader) headers.cookie = cookieHeader;
1418
+ try {
1419
+ const data = await apiFetch(config, "/api/rpg/claimable", {
1420
+ credentials: "include",
1421
+ cache: "no-store",
1422
+ timeoutMs: 5e3,
1423
+ ...fetchOptions,
1424
+ headers
1425
+ });
1426
+ return RpgClaimableResponseSchema.parse(data);
1427
+ } catch {
1428
+ return { count: 0 };
1429
+ }
1430
+ }
1411
1431
 
1412
1432
  // src/query/fetchers/endorsement.ts
1413
1433
  async function fetchEndorsementCount(config, did, options = {}) {
@@ -1945,6 +1965,13 @@ var sifaQueryKeys = {
1945
1965
  all: () => ["sifa", "inbox"],
1946
1966
  counts: () => ["sifa", "inbox", "counts"]
1947
1967
  },
1968
+ // Session-scoped: how many rpg.actor items the signed-in user can claim, for
1969
+ // the Inbox item and the bell dropdown.
1970
+ rpg: {
1971
+ all: () => ["sifa", "rpg"],
1972
+ claimable: () => ["sifa", "rpg", "claimable"],
1973
+ status: () => ["sifa", "rpg", "status"]
1974
+ },
1948
1975
  search: {
1949
1976
  all: () => ["sifa", "search"],
1950
1977
  profiles: (filters) => ["sifa", "search", "profiles", filters],
@@ -2222,6 +2249,7 @@ exports.HIDDEN_ITEM_SOURCES = HIDDEN_ITEM_SOURCES;
2222
2249
  exports.HIDDEN_ITEM_TYPES = HIDDEN_ITEM_TYPES;
2223
2250
  exports.PROFILE_COMPLETENESS_SIGNALS = PROFILE_COMPLETENESS_SIGNALS;
2224
2251
  exports.QUOTED_POSTS_BATCH_MAX = QUOTED_POSTS_BATCH_MAX;
2252
+ exports.RpgClaimableResponseSchema = RpgClaimableResponseSchema;
2225
2253
  exports.RpgItemStatusSchema = RpgItemStatusSchema;
2226
2254
  exports.RpgStatusResponseSchema = RpgStatusResponseSchema;
2227
2255
  exports.UserSettingsSchema = UserSettingsSchema;
@@ -2297,6 +2325,7 @@ exports.fetchReceivedEndorsements = fetchReceivedEndorsements;
2297
2325
  exports.fetchReciprocityCandidate = fetchReciprocityCandidate;
2298
2326
  exports.fetchRepoInventory = fetchRepoInventory;
2299
2327
  exports.fetchRoadmapVotes = fetchRoadmapVotes;
2328
+ exports.fetchRpgClaimable = fetchRpgClaimable;
2300
2329
  exports.fetchRpgStatus = fetchRpgStatus;
2301
2330
  exports.fetchSearchCompanies = fetchSearchCompanies;
2302
2331
  exports.fetchSearchFilters = fetchSearchFilters;