@singi-labs/sifa-sdk 0.19.44 → 0.19.46

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 (582) hide show
  1. package/dist/atproto/index.js +9 -3
  2. package/dist/atproto/index.js.map +1 -1
  3. package/dist/badge/index.cjs.map +1 -1
  4. package/dist/badge/index.js +5 -141
  5. package/dist/badge/index.js.map +1 -1
  6. package/dist/cards/adult-content.js +14 -0
  7. package/dist/cards/adult-content.js.map +1 -0
  8. package/dist/cards/app-url-patterns.js +369 -0
  9. package/dist/cards/app-url-patterns.js.map +1 -0
  10. package/dist/cards/index.js +24 -0
  11. package/dist/cards/index.js.map +1 -0
  12. package/dist/cards/resolve-card-url.js +198 -0
  13. package/dist/cards/resolve-card-url.js.map +1 -0
  14. package/dist/cards/visibility.js +45 -0
  15. package/dist/cards/visibility.js.map +1 -0
  16. package/dist/flags/index.js +4 -3
  17. package/dist/flags/index.js.map +1 -1
  18. package/dist/format/collapse-contributors.js +19 -0
  19. package/dist/format/collapse-contributors.js.map +1 -0
  20. package/dist/format/company-name.js +61 -0
  21. package/dist/format/company-name.js.map +1 -0
  22. package/dist/format/compare-text.js +9 -0
  23. package/dist/format/compare-text.js.map +1 -0
  24. package/dist/format/doi.js +8 -0
  25. package/dist/format/doi.js.map +1 -0
  26. package/dist/format/embed.js +131 -0
  27. package/dist/format/embed.js.map +1 -0
  28. package/dist/format/endorsement-context.js +35 -0
  29. package/dist/format/endorsement-context.js.map +1 -0
  30. package/dist/format/format-display-url.js +42 -0
  31. package/dist/format/format-display-url.js.map +1 -0
  32. package/dist/format/format-duration.js +13 -0
  33. package/dist/format/format-duration.js.map +1 -0
  34. package/dist/format/format-time.js +30 -0
  35. package/dist/format/format-time.js.map +1 -0
  36. package/dist/format/handle-utils.js +19 -0
  37. package/dist/format/handle-utils.js.map +1 -0
  38. package/dist/format/index.js +106 -0
  39. package/dist/format/index.js.map +1 -0
  40. package/dist/format/location-segments.js +29 -0
  41. package/dist/format/location-segments.js.map +1 -0
  42. package/dist/format/location-utils.js +42 -0
  43. package/dist/format/location-utils.js.map +1 -0
  44. package/dist/format/meta-description.js +35 -0
  45. package/dist/format/meta-description.js.map +1 -0
  46. package/dist/format/normalize-company-key.js +12 -0
  47. package/dist/format/normalize-company-key.js.map +1 -0
  48. package/dist/format/normalize-legal-form.js +71 -0
  49. package/dist/format/normalize-legal-form.js.map +1 -0
  50. package/dist/format/pds-utils.js +73 -0
  51. package/dist/format/pds-utils.js.map +1 -0
  52. package/dist/format/sort-by-date.js +39 -0
  53. package/dist/format/sort-by-date.js.map +1 -0
  54. package/dist/format/summarize-deliveries.js +37 -0
  55. package/dist/format/summarize-deliveries.js.map +1 -0
  56. package/dist/format/talk-slug.js +21 -0
  57. package/dist/format/talk-slug.js.map +1 -0
  58. package/dist/format/text-sanitize.js +29 -0
  59. package/dist/format/text-sanitize.js.map +1 -0
  60. package/dist/format/text-truncate.js +14 -0
  61. package/dist/format/text-truncate.js.map +1 -0
  62. package/dist/format/time-utils.js +19 -0
  63. package/dist/format/time-utils.js.map +1 -0
  64. package/dist/format/timeline.js +33 -0
  65. package/dist/format/timeline.js.map +1 -0
  66. package/dist/format/wcag-contrast.js +34 -0
  67. package/dist/format/wcag-contrast.js.map +1 -0
  68. package/dist/import/index.js +22 -0
  69. package/dist/import/index.js.map +1 -0
  70. package/dist/import/presentation-csv.js +116 -0
  71. package/dist/import/presentation-csv.js.map +1 -0
  72. package/dist/index.cjs +7 -1
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +8 -1
  75. package/dist/index.d.ts +8 -1
  76. package/dist/index.js +677 -7086
  77. package/dist/index.js.map +1 -1
  78. package/dist/jev/index.js +18 -5
  79. package/dist/jev/index.js.map +1 -1
  80. package/dist/jsonld/index.cjs.map +1 -1
  81. package/dist/jsonld/index.js +30 -987
  82. package/dist/jsonld/index.js.map +1 -1
  83. package/dist/jsonld/profile.js +222 -0
  84. package/dist/jsonld/profile.js.map +1 -0
  85. package/dist/jsonld/terms.js +496 -0
  86. package/dist/jsonld/terms.js.map +1 -0
  87. package/dist/jsonld/url.js +17 -0
  88. package/dist/jsonld/url.js.map +1 -0
  89. package/dist/jsonld/works-graph.js +41 -0
  90. package/dist/jsonld/works-graph.js.map +1 -0
  91. package/dist/jsonld/works.js +178 -0
  92. package/dist/jsonld/works.js.map +1 -0
  93. package/dist/logic/actor-identity.js +8 -0
  94. package/dist/logic/actor-identity.js.map +1 -0
  95. package/dist/logic/agent-ref.js +24 -0
  96. package/dist/logic/agent-ref.js.map +1 -0
  97. package/dist/logic/company-page-indexable.js +23 -0
  98. package/dist/logic/company-page-indexable.js.map +1 -0
  99. package/dist/logic/date-lookahead.js +33 -0
  100. package/dist/logic/date-lookahead.js.map +1 -0
  101. package/dist/logic/domain-detect.js +43 -0
  102. package/dist/logic/domain-detect.js.map +1 -0
  103. package/dist/logic/entity-disambiguation.js +24 -0
  104. package/dist/logic/entity-disambiguation.js.map +1 -0
  105. package/dist/logic/entity-ref-anchor.js +33 -0
  106. package/dist/logic/entity-ref-anchor.js.map +1 -0
  107. package/dist/logic/index.js +91 -0
  108. package/dist/logic/index.js.map +1 -0
  109. package/dist/logic/org-floor.js +66 -0
  110. package/dist/logic/org-floor.js.map +1 -0
  111. package/dist/logic/primary-item.js +9 -0
  112. package/dist/logic/primary-item.js.map +1 -0
  113. package/dist/logic/primary-position.js +16 -0
  114. package/dist/logic/primary-position.js.map +1 -0
  115. package/dist/logic/profile-completeness.js +21 -0
  116. package/dist/logic/profile-completeness.js.map +1 -0
  117. package/dist/logic/profile-dimensions.js +50 -0
  118. package/dist/logic/profile-dimensions.js.map +1 -0
  119. package/dist/logic/profile-summary.js +23 -0
  120. package/dist/logic/profile-summary.js.map +1 -0
  121. package/dist/logic/pseudo-employer.js +34 -0
  122. package/dist/logic/pseudo-employer.js.map +1 -0
  123. package/dist/logic/recent-activity.js +10 -0
  124. package/dist/logic/recent-activity.js.map +1 -0
  125. package/dist/logic/self-app.js +10 -0
  126. package/dist/logic/self-app.js.map +1 -0
  127. package/dist/{org-BCrvebcf.d.ts → org-CxTEjjrm.d.ts} +1 -1
  128. package/dist/{org-settings-C73Sin5E.d.ts → org-settings-BShvhyFp.d.ts} +1 -1
  129. package/dist/profile/headline-role-dedupe.js +12 -0
  130. package/dist/profile/headline-role-dedupe.js.map +1 -0
  131. package/dist/profile/highlights.js +200 -0
  132. package/dist/profile/highlights.js.map +1 -0
  133. package/dist/profile/index.js +66 -0
  134. package/dist/profile/index.js.map +1 -0
  135. package/dist/profile/involvement-grouping.js +31 -0
  136. package/dist/profile/involvement-grouping.js.map +1 -0
  137. package/dist/profile/language-sort.js +24 -0
  138. package/dist/profile/language-sort.js.map +1 -0
  139. package/dist/profile/publication-versions.js +98 -0
  140. package/dist/profile/publication-versions.js.map +1 -0
  141. package/dist/profile/range-sort.js +14 -0
  142. package/dist/profile/range-sort.js.map +1 -0
  143. package/dist/profile/section-model.js +122 -0
  144. package/dist/profile/section-model.js.map +1 -0
  145. package/dist/profile/section-sorts.js +33 -0
  146. package/dist/profile/section-sorts.js.map +1 -0
  147. package/dist/publishers/index.js +16 -0
  148. package/dist/publishers/index.js.map +1 -0
  149. package/dist/publishers/registry.js +87 -0
  150. package/dist/publishers/registry.js.map +1 -0
  151. package/dist/publishing/index.js +46 -184
  152. package/dist/publishing/index.js.map +1 -1
  153. package/dist/publishing/linkblog.js +42 -0
  154. package/dist/publishing/linkblog.js.map +1 -0
  155. package/dist/publishing/registry.js +32 -0
  156. package/dist/publishing/registry.js.map +1 -0
  157. package/dist/publishing/schemas.js +74 -0
  158. package/dist/publishing/schemas.js.map +1 -0
  159. package/dist/publishing/types.js +32 -0
  160. package/dist/publishing/types.js.map +1 -0
  161. package/dist/query/client.js +119 -0
  162. package/dist/query/client.js.map +1 -0
  163. package/dist/query/config.js +23 -0
  164. package/dist/query/config.js.map +1 -0
  165. package/dist/query/fetchers/accounts.js +29 -0
  166. package/dist/query/fetchers/accounts.js.map +1 -0
  167. package/dist/query/fetchers/activity-items-hide.js +31 -0
  168. package/dist/query/fetchers/activity-items-hide.js.map +1 -0
  169. package/dist/query/fetchers/activity.js +61 -0
  170. package/dist/query/fetchers/activity.js.map +1 -0
  171. package/dist/query/fetchers/actor.js +30 -0
  172. package/dist/query/fetchers/actor.js.map +1 -0
  173. package/dist/query/fetchers/admin-feature-allowlists.js +41 -0
  174. package/dist/query/fetchers/admin-feature-allowlists.js.map +1 -0
  175. package/dist/query/fetchers/admin-review-queues.js +30 -0
  176. package/dist/query/fetchers/admin-review-queues.js.map +1 -0
  177. package/dist/query/fetchers/apps.js +31 -0
  178. package/dist/query/fetchers/apps.js.map +1 -0
  179. package/dist/query/fetchers/bsky-preferences.js +55 -0
  180. package/dist/query/fetchers/bsky-preferences.js.map +1 -0
  181. package/dist/query/fetchers/confirmations.js +55 -0
  182. package/dist/query/fetchers/confirmations.js.map +1 -0
  183. package/dist/query/fetchers/destructive.js +34 -0
  184. package/dist/query/fetchers/destructive.js.map +1 -0
  185. package/dist/query/fetchers/discovery.js +67 -0
  186. package/dist/query/fetchers/discovery.js.map +1 -0
  187. package/dist/query/fetchers/education.js +23 -0
  188. package/dist/query/fetchers/education.js.map +1 -0
  189. package/dist/query/fetchers/endorsement-inbox.js +36 -0
  190. package/dist/query/fetchers/endorsement-inbox.js.map +1 -0
  191. package/dist/query/fetchers/endorsement.js +23 -0
  192. package/dist/query/fetchers/endorsement.js.map +1 -0
  193. package/dist/query/fetchers/endorsements.js +20 -0
  194. package/dist/query/fetchers/endorsements.js.map +1 -0
  195. package/dist/query/fetchers/entities.js +65 -0
  196. package/dist/query/fetchers/entities.js.map +1 -0
  197. package/dist/query/fetchers/external-accounts.js +74 -0
  198. package/dist/query/fetchers/external-accounts.js.map +1 -0
  199. package/dist/query/fetchers/follow-extras.js +38 -0
  200. package/dist/query/fetchers/follow-extras.js.map +1 -0
  201. package/dist/query/fetchers/follow.js +105 -0
  202. package/dist/query/fetchers/follow.js.map +1 -0
  203. package/dist/query/fetchers/get-profile-view.js +21 -0
  204. package/dist/query/fetchers/get-profile-view.js.map +1 -0
  205. package/dist/query/fetchers/github-prs.js +45 -0
  206. package/dist/query/fetchers/github-prs.js.map +1 -0
  207. package/dist/query/fetchers/inbox.js +29 -0
  208. package/dist/query/fetchers/inbox.js.map +1 -0
  209. package/dist/query/fetchers/index.cjs.map +1 -1
  210. package/dist/query/fetchers/index.d.ts +2 -2
  211. package/dist/query/fetchers/index.js +360 -2045
  212. package/dist/query/fetchers/index.js.map +1 -1
  213. package/dist/query/fetchers/investments.js +18 -0
  214. package/dist/query/fetchers/investments.js.map +1 -0
  215. package/dist/query/fetchers/keytrace-claims.js +23 -0
  216. package/dist/query/fetchers/keytrace-claims.js.map +1 -0
  217. package/dist/query/fetchers/marque-domains.js +23 -0
  218. package/dist/query/fetchers/marque-domains.js.map +1 -0
  219. package/dist/query/fetchers/network-map.js +36 -0
  220. package/dist/query/fetchers/network-map.js.map +1 -0
  221. package/dist/query/fetchers/org.js +48 -0
  222. package/dist/query/fetchers/org.js.map +1 -0
  223. package/dist/query/fetchers/positions.js +77 -0
  224. package/dist/query/fetchers/positions.js.map +1 -0
  225. package/dist/query/fetchers/profile-completeness.js +45 -0
  226. package/dist/query/fetchers/profile-completeness.js.map +1 -0
  227. package/dist/query/fetchers/profile-items-hide.js +36 -0
  228. package/dist/query/fetchers/profile-items-hide.js.map +1 -0
  229. package/dist/query/fetchers/profile-locations.js +23 -0
  230. package/dist/query/fetchers/profile-locations.js.map +1 -0
  231. package/dist/query/fetchers/profile-mutations.js +82 -0
  232. package/dist/query/fetchers/profile-mutations.js.map +1 -0
  233. package/dist/query/fetchers/profile-summary.js +14 -0
  234. package/dist/query/fetchers/profile-summary.js.map +1 -0
  235. package/dist/query/fetchers/profile.js +31 -0
  236. package/dist/query/fetchers/profile.js.map +1 -0
  237. package/dist/query/fetchers/publications.js +66 -0
  238. package/dist/query/fetchers/publications.js.map +1 -0
  239. package/dist/query/fetchers/quoted-posts.js +40 -0
  240. package/dist/query/fetchers/quoted-posts.js.map +1 -0
  241. package/dist/query/fetchers/reactions.js +85 -0
  242. package/dist/query/fetchers/reactions.js.map +1 -0
  243. package/dist/query/fetchers/received-endorsements.js +20 -0
  244. package/dist/query/fetchers/received-endorsements.js.map +1 -0
  245. package/dist/query/fetchers/reciprocity.js +23 -0
  246. package/dist/query/fetchers/reciprocity.js.map +1 -0
  247. package/dist/query/fetchers/records.js +27 -0
  248. package/dist/query/fetchers/records.js.map +1 -0
  249. package/dist/query/fetchers/repo-inventory.js +23 -0
  250. package/dist/query/fetchers/repo-inventory.js.map +1 -0
  251. package/dist/query/fetchers/roadmap.js +73 -0
  252. package/dist/query/fetchers/roadmap.js.map +1 -0
  253. package/dist/query/fetchers/rpg.js +36 -0
  254. package/dist/query/fetchers/rpg.js.map +1 -0
  255. package/dist/query/fetchers/search.js +78 -0
  256. package/dist/query/fetchers/search.js.map +1 -0
  257. package/dist/query/fetchers/section-primary.js +23 -0
  258. package/dist/query/fetchers/section-primary.js.map +1 -0
  259. package/dist/query/fetchers/skills.js +30 -0
  260. package/dist/query/fetchers/skills.js.map +1 -0
  261. package/dist/query/fetchers/speakers.js +42 -0
  262. package/dist/query/fetchers/speakers.js.map +1 -0
  263. package/dist/query/fetchers/stats.js +16 -0
  264. package/dist/query/fetchers/stats.js.map +1 -0
  265. package/dist/query/fetchers/stream.js +30 -0
  266. package/dist/query/fetchers/stream.js.map +1 -0
  267. package/dist/query/fetchers/unlinked-positions.js +30 -0
  268. package/dist/query/fetchers/unlinked-positions.js.map +1 -0
  269. package/dist/query/hooks/index.d.ts +3 -3
  270. package/dist/query/hooks/index.js +283 -3555
  271. package/dist/query/hooks/index.js.map +1 -1
  272. package/dist/query/hooks/use-accounts.js +19 -0
  273. package/dist/query/hooks/use-accounts.js.map +1 -0
  274. package/dist/query/hooks/use-activity-items-hide.js +52 -0
  275. package/dist/query/hooks/use-activity-items-hide.js.map +1 -0
  276. package/dist/query/hooks/use-activity.js +44 -0
  277. package/dist/query/hooks/use-activity.js.map +1 -0
  278. package/dist/query/hooks/use-admin-review-queues.js +21 -0
  279. package/dist/query/hooks/use-admin-review-queues.js.map +1 -0
  280. package/dist/query/hooks/use-apps.js +31 -0
  281. package/dist/query/hooks/use-apps.js.map +1 -0
  282. package/dist/query/hooks/use-bsky-content-prefs.js +45 -0
  283. package/dist/query/hooks/use-bsky-content-prefs.js.map +1 -0
  284. package/dist/query/hooks/use-confirmations.js +121 -0
  285. package/dist/query/hooks/use-confirmations.js.map +1 -0
  286. package/dist/query/hooks/use-create-position.js +28 -0
  287. package/dist/query/hooks/use-create-position.js.map +1 -0
  288. package/dist/query/hooks/use-destructive.js +63 -0
  289. package/dist/query/hooks/use-destructive.js.map +1 -0
  290. package/dist/query/hooks/use-discovery.js +53 -0
  291. package/dist/query/hooks/use-discovery.js.map +1 -0
  292. package/dist/query/hooks/use-education-mutations.js +67 -0
  293. package/dist/query/hooks/use-education-mutations.js.map +1 -0
  294. package/dist/query/hooks/use-endorsement-inbox.js +80 -0
  295. package/dist/query/hooks/use-endorsement-inbox.js.map +1 -0
  296. package/dist/query/hooks/use-endorsement-mutations.js +33 -0
  297. package/dist/query/hooks/use-endorsement-mutations.js.map +1 -0
  298. package/dist/query/hooks/use-endorsement.js +20 -0
  299. package/dist/query/hooks/use-endorsement.js.map +1 -0
  300. package/dist/query/hooks/use-entity-search.js +73 -0
  301. package/dist/query/hooks/use-entity-search.js.map +1 -0
  302. package/dist/query/hooks/use-external-accounts.js +143 -0
  303. package/dist/query/hooks/use-external-accounts.js.map +1 -0
  304. package/dist/query/hooks/use-feature-allowlist.js +104 -0
  305. package/dist/query/hooks/use-feature-allowlist.js.map +1 -0
  306. package/dist/query/hooks/use-follow-extras.js +38 -0
  307. package/dist/query/hooks/use-follow-extras.js.map +1 -0
  308. package/dist/query/hooks/use-follow.js +113 -0
  309. package/dist/query/hooks/use-follow.js.map +1 -0
  310. package/dist/query/hooks/use-get-profile-view.js +20 -0
  311. package/dist/query/hooks/use-get-profile-view.js.map +1 -0
  312. package/dist/query/hooks/use-github-prs.js +21 -0
  313. package/dist/query/hooks/use-github-prs.js.map +1 -0
  314. package/dist/query/hooks/use-inbox.js +19 -0
  315. package/dist/query/hooks/use-inbox.js.map +1 -0
  316. package/dist/query/hooks/use-investment-mutations.js +65 -0
  317. package/dist/query/hooks/use-investment-mutations.js.map +1 -0
  318. package/dist/query/hooks/use-keytrace-claims.js +50 -0
  319. package/dist/query/hooks/use-keytrace-claims.js.map +1 -0
  320. package/dist/query/hooks/use-location-mutations.js +71 -0
  321. package/dist/query/hooks/use-location-mutations.js.map +1 -0
  322. package/dist/query/hooks/use-marque-domains.js +50 -0
  323. package/dist/query/hooks/use-marque-domains.js.map +1 -0
  324. package/dist/query/hooks/use-org-claim.js +29 -0
  325. package/dist/query/hooks/use-org-claim.js.map +1 -0
  326. package/dist/query/hooks/use-org-domains.js +28 -0
  327. package/dist/query/hooks/use-org-domains.js.map +1 -0
  328. package/dist/query/hooks/use-org-notification-emails.js +28 -0
  329. package/dist/query/hooks/use-org-notification-emails.js.map +1 -0
  330. package/dist/query/hooks/use-org-profile-settings.js +29 -0
  331. package/dist/query/hooks/use-org-profile-settings.js.map +1 -0
  332. package/dist/query/hooks/use-org-profile.js +21 -0
  333. package/dist/query/hooks/use-org-profile.js.map +1 -0
  334. package/dist/query/hooks/use-position-mutations.js +128 -0
  335. package/dist/query/hooks/use-position-mutations.js.map +1 -0
  336. package/dist/query/hooks/use-profile-completeness.js +21 -0
  337. package/dist/query/hooks/use-profile-completeness.js.map +1 -0
  338. package/dist/query/hooks/use-profile-items-hide.js +53 -0
  339. package/dist/query/hooks/use-profile-items-hide.js.map +1 -0
  340. package/dist/query/hooks/use-profile-mutations.js +143 -0
  341. package/dist/query/hooks/use-profile-mutations.js.map +1 -0
  342. package/dist/query/hooks/use-profile.js +30 -0
  343. package/dist/query/hooks/use-profile.js.map +1 -0
  344. package/dist/query/hooks/use-publication-mutations.js +90 -0
  345. package/dist/query/hooks/use-publication-mutations.js.map +1 -0
  346. package/dist/query/hooks/use-reaction-mutations.js +48 -0
  347. package/dist/query/hooks/use-reaction-mutations.js.map +1 -0
  348. package/dist/query/hooks/use-reactions.js +32 -0
  349. package/dist/query/hooks/use-reactions.js.map +1 -0
  350. package/dist/query/hooks/use-received-endorsements.js +23 -0
  351. package/dist/query/hooks/use-received-endorsements.js.map +1 -0
  352. package/dist/query/hooks/use-reciprocity.js +19 -0
  353. package/dist/query/hooks/use-reciprocity.js.map +1 -0
  354. package/dist/query/hooks/use-record-mutations.js +67 -0
  355. package/dist/query/hooks/use-record-mutations.js.map +1 -0
  356. package/dist/query/hooks/use-repo-inventory.js +43 -0
  357. package/dist/query/hooks/use-repo-inventory.js.map +1 -0
  358. package/dist/query/hooks/use-roadmap-mutations.js +51 -0
  359. package/dist/query/hooks/use-roadmap-mutations.js.map +1 -0
  360. package/dist/query/hooks/use-roadmap.js +31 -0
  361. package/dist/query/hooks/use-roadmap.js.map +1 -0
  362. package/dist/query/hooks/use-search.js +63 -0
  363. package/dist/query/hooks/use-search.js.map +1 -0
  364. package/dist/query/hooks/use-section-primary-mutations.js +53 -0
  365. package/dist/query/hooks/use-section-primary-mutations.js.map +1 -0
  366. package/dist/query/hooks/use-skill-mutations.js +91 -0
  367. package/dist/query/hooks/use-skill-mutations.js.map +1 -0
  368. package/dist/query/hooks/use-stats.js +19 -0
  369. package/dist/query/hooks/use-stats.js.map +1 -0
  370. package/dist/query/hooks/use-stream.js +20 -0
  371. package/dist/query/hooks/use-stream.js.map +1 -0
  372. package/dist/query/hooks/use-unlinked-positions.js +45 -0
  373. package/dist/query/hooks/use-unlinked-positions.js.map +1 -0
  374. package/dist/query/index.cjs.map +1 -1
  375. package/dist/query/index.d.ts +4 -4
  376. package/dist/query/index.js +685 -3744
  377. package/dist/query/index.js.map +1 -1
  378. package/dist/query/keys.js +138 -0
  379. package/dist/query/keys.js.map +1 -0
  380. package/dist/repo/groups.js +81 -0
  381. package/dist/repo/groups.js.map +1 -0
  382. package/dist/repo/index.js +9 -0
  383. package/dist/repo/index.js.map +1 -0
  384. package/dist/repo/labels.js +121 -0
  385. package/dist/repo/labels.js.map +1 -0
  386. package/dist/repo/types.js +1 -0
  387. package/dist/repo/types.js.map +1 -0
  388. package/dist/resume/index.js +5 -179
  389. package/dist/resume/index.js.map +1 -1
  390. package/dist/resume/json-resume.js +153 -0
  391. package/dist/resume/json-resume.js.map +1 -0
  392. package/dist/roadmap/index.js +101 -0
  393. package/dist/roadmap/index.js.map +1 -0
  394. package/dist/rpg/catalog.js +101 -0
  395. package/dist/rpg/catalog.js.map +1 -0
  396. package/dist/rpg/index.js +13 -116
  397. package/dist/rpg/index.js.map +1 -1
  398. package/dist/rpg/unlocks.js +21 -0
  399. package/dist/rpg/unlocks.js.map +1 -0
  400. package/dist/schemas/blob-ref.js +12 -0
  401. package/dist/schemas/blob-ref.js.map +1 -0
  402. package/dist/schemas/confirmation.js +23 -0
  403. package/dist/schemas/confirmation.js.map +1 -0
  404. package/dist/schemas/endorsement-confirmation.js +18 -0
  405. package/dist/schemas/endorsement-confirmation.js.map +1 -0
  406. package/dist/schemas/endorsement.js +19 -0
  407. package/dist/schemas/endorsement.js.map +1 -0
  408. package/dist/schemas/entity.js +74 -0
  409. package/dist/schemas/entity.js.map +1 -0
  410. package/dist/schemas/feed.js +73 -0
  411. package/dist/schemas/feed.js.map +1 -0
  412. package/dist/schemas/follow-profile.js +32 -0
  413. package/dist/schemas/follow-profile.js.map +1 -0
  414. package/dist/schemas/graph-follow.js +19 -0
  415. package/dist/schemas/graph-follow.js.map +1 -0
  416. package/dist/schemas/index.js +164 -629
  417. package/dist/schemas/index.js.map +1 -1
  418. package/dist/schemas/org-employment-attestation.js +28 -0
  419. package/dist/schemas/org-employment-attestation.js.map +1 -0
  420. package/dist/schemas/org-profile.js +64 -0
  421. package/dist/schemas/org-profile.js.map +1 -0
  422. package/dist/schemas/profile-certification.js +28 -0
  423. package/dist/schemas/profile-certification.js.map +1 -0
  424. package/dist/schemas/profile-course.js +32 -0
  425. package/dist/schemas/profile-course.js.map +1 -0
  426. package/dist/schemas/profile-education.js +33 -0
  427. package/dist/schemas/profile-education.js.map +1 -0
  428. package/dist/schemas/profile-external-account.js +15 -0
  429. package/dist/schemas/profile-external-account.js.map +1 -0
  430. package/dist/schemas/profile-honor.js +18 -0
  431. package/dist/schemas/profile-honor.js.map +1 -0
  432. package/dist/schemas/profile-investment.js +48 -0
  433. package/dist/schemas/profile-investment.js.map +1 -0
  434. package/dist/schemas/profile-involvement.js +47 -0
  435. package/dist/schemas/profile-involvement.js.map +1 -0
  436. package/dist/schemas/profile-language.js +12 -0
  437. package/dist/schemas/profile-language.js.map +1 -0
  438. package/dist/schemas/profile-position.js +42 -0
  439. package/dist/schemas/profile-position.js.map +1 -0
  440. package/dist/schemas/profile-presentation-delivery.js +38 -0
  441. package/dist/schemas/profile-presentation-delivery.js.map +1 -0
  442. package/dist/schemas/profile-presentation.js +36 -0
  443. package/dist/schemas/profile-presentation.js.map +1 -0
  444. package/dist/schemas/profile-project.js +48 -0
  445. package/dist/schemas/profile-project.js.map +1 -0
  446. package/dist/schemas/profile-publication.js +30 -0
  447. package/dist/schemas/profile-publication.js.map +1 -0
  448. package/dist/schemas/profile-self.js +22 -0
  449. package/dist/schemas/profile-self.js.map +1 -0
  450. package/dist/schemas/profile-skill.js +13 -0
  451. package/dist/schemas/profile-skill.js.map +1 -0
  452. package/dist/schemas/profile-volunteering.js +20 -0
  453. package/dist/schemas/profile-volunteering.js.map +1 -0
  454. package/dist/schemas/shared.js +56 -0
  455. package/dist/schemas/shared.js.map +1 -0
  456. package/dist/schemas/write/certification.js +16 -0
  457. package/dist/schemas/write/certification.js.map +1 -0
  458. package/dist/schemas/write/course.js +36 -0
  459. package/dist/schemas/write/course.js.map +1 -0
  460. package/dist/schemas/write/education.js +18 -0
  461. package/dist/schemas/write/education.js.map +1 -0
  462. package/dist/schemas/write/external-account.js +13 -0
  463. package/dist/schemas/write/external-account.js.map +1 -0
  464. package/dist/schemas/write/honor.js +14 -0
  465. package/dist/schemas/write/honor.js.map +1 -0
  466. package/dist/schemas/write/index.d.ts +1 -1
  467. package/dist/schemas/write/index.js +89 -593
  468. package/dist/schemas/write/index.js.map +1 -1
  469. package/dist/schemas/write/investment.js +32 -0
  470. package/dist/schemas/write/investment.js.map +1 -0
  471. package/dist/schemas/write/involvement.js +34 -0
  472. package/dist/schemas/write/involvement.js.map +1 -0
  473. package/dist/schemas/write/language.js +10 -0
  474. package/dist/schemas/write/language.js.map +1 -0
  475. package/dist/schemas/write/org-claim.js +56 -0
  476. package/dist/schemas/write/org-claim.js.map +1 -0
  477. package/dist/schemas/write/org-employment-attestation.js +19 -0
  478. package/dist/schemas/write/org-employment-attestation.js.map +1 -0
  479. package/dist/schemas/write/org-profile.js +54 -0
  480. package/dist/schemas/write/org-profile.js.map +1 -0
  481. package/dist/schemas/write/org-settings.js +81 -0
  482. package/dist/schemas/write/org-settings.js.map +1 -0
  483. package/dist/schemas/write/position.js +24 -0
  484. package/dist/schemas/write/position.js.map +1 -0
  485. package/dist/schemas/write/presentation-delivery.js +34 -0
  486. package/dist/schemas/write/presentation-delivery.js.map +1 -0
  487. package/dist/schemas/write/presentation.js +23 -0
  488. package/dist/schemas/write/presentation.js.map +1 -0
  489. package/dist/schemas/write/profile-location.js +21 -0
  490. package/dist/schemas/write/profile-location.js.map +1 -0
  491. package/dist/schemas/write/profile-self.js +27 -0
  492. package/dist/schemas/write/profile-self.js.map +1 -0
  493. package/dist/schemas/write/project.js +27 -0
  494. package/dist/schemas/write/project.js.map +1 -0
  495. package/dist/schemas/write/publication.js +41 -0
  496. package/dist/schemas/write/publication.js.map +1 -0
  497. package/dist/schemas/write/shared.js +96 -0
  498. package/dist/schemas/write/shared.js.map +1 -0
  499. package/dist/schemas/write/skill.js +18 -0
  500. package/dist/schemas/write/skill.js.map +1 -0
  501. package/dist/schemas/write/volunteering.js +16 -0
  502. package/dist/schemas/write/volunteering.js.map +1 -0
  503. package/dist/stream/activity-item.js +1 -0
  504. package/dist/stream/activity-item.js.map +1 -0
  505. package/dist/stream/index.js +49 -0
  506. package/dist/stream/index.js.map +1 -0
  507. package/dist/stream/stream-card-vm-schema.js +265 -0
  508. package/dist/stream/stream-card-vm-schema.js.map +1 -0
  509. package/dist/stream/stream-card-vm.js +1 -0
  510. package/dist/stream/stream-card-vm.js.map +1 -0
  511. package/dist/stream/to-stream-card-vm.js +793 -0
  512. package/dist/stream/to-stream-card-vm.js.map +1 -0
  513. package/dist/stream/two-tier.js +30 -0
  514. package/dist/stream/two-tier.js.map +1 -0
  515. package/dist/stream/verbs.js +120 -0
  516. package/dist/stream/verbs.js.map +1 -0
  517. package/dist/taxonomy/activity-tiers.js +956 -0
  518. package/dist/taxonomy/activity-tiers.js.map +1 -0
  519. package/dist/taxonomy/app-categories.js +42 -0
  520. package/dist/taxonomy/app-categories.js.map +1 -0
  521. package/dist/taxonomy/app-category-map.js +166 -0
  522. package/dist/taxonomy/app-category-map.js.map +1 -0
  523. package/dist/taxonomy/artifact-link-kind.js +29 -0
  524. package/dist/taxonomy/artifact-link-kind.js.map +1 -0
  525. package/dist/taxonomy/calendar-event.js +28 -0
  526. package/dist/taxonomy/calendar-event.js.map +1 -0
  527. package/dist/taxonomy/continents.js +215 -0
  528. package/dist/taxonomy/continents.js.map +1 -0
  529. package/dist/taxonomy/countries.js +203 -0
  530. package/dist/taxonomy/countries.js.map +1 -0
  531. package/dist/taxonomy/course-role.js +37 -0
  532. package/dist/taxonomy/course-role.js.map +1 -0
  533. package/dist/taxonomy/employment-type.js +82 -0
  534. package/dist/taxonomy/employment-type.js.map +1 -0
  535. package/dist/taxonomy/eqf-level.js +59 -0
  536. package/dist/taxonomy/eqf-level.js.map +1 -0
  537. package/dist/taxonomy/index.js +263 -0
  538. package/dist/taxonomy/index.js.map +1 -0
  539. package/dist/taxonomy/industry-taxonomy.js +281 -0
  540. package/dist/taxonomy/industry-taxonomy.js.map +1 -0
  541. package/dist/taxonomy/investment.js +54 -0
  542. package/dist/taxonomy/investment.js.map +1 -0
  543. package/dist/taxonomy/involvement-kind.js +30 -0
  544. package/dist/taxonomy/involvement-kind.js.map +1 -0
  545. package/dist/taxonomy/open-to.js +128 -0
  546. package/dist/taxonomy/open-to.js.map +1 -0
  547. package/dist/taxonomy/platforms.js +56 -0
  548. package/dist/taxonomy/platforms.js.map +1 -0
  549. package/dist/taxonomy/presentation-link-type.js +22 -0
  550. package/dist/taxonomy/presentation-link-type.js.map +1 -0
  551. package/dist/taxonomy/presentation-role.js +21 -0
  552. package/dist/taxonomy/presentation-role.js.map +1 -0
  553. package/dist/taxonomy/publication-type.js +54 -0
  554. package/dist/taxonomy/publication-type.js.map +1 -0
  555. package/dist/taxonomy/relational.js +25 -0
  556. package/dist/taxonomy/relational.js.map +1 -0
  557. package/dist/taxonomy/search-filter-defs.js +66 -0
  558. package/dist/taxonomy/search-filter-defs.js.map +1 -0
  559. package/dist/taxonomy/skill-categories.js +28 -0
  560. package/dist/taxonomy/skill-categories.js.map +1 -0
  561. package/dist/taxonomy/skill-display-groups.js +12 -0
  562. package/dist/taxonomy/skill-display-groups.js.map +1 -0
  563. package/dist/taxonomy/skill-grouping.js +90 -0
  564. package/dist/taxonomy/skill-grouping.js.map +1 -0
  565. package/dist/taxonomy/verification-providers.js +69 -0
  566. package/dist/taxonomy/verification-providers.js.map +1 -0
  567. package/dist/taxonomy/workplace-type.js +38 -0
  568. package/dist/taxonomy/workplace-type.js.map +1 -0
  569. package/dist/tokens/colors.js +11 -0
  570. package/dist/tokens/colors.js.map +1 -0
  571. package/dist/tokens/icons.js +15 -0
  572. package/dist/tokens/icons.js.map +1 -0
  573. package/dist/tokens/index.js +10 -39
  574. package/dist/tokens/index.js.map +1 -1
  575. package/dist/tokens/typography.js +23 -0
  576. package/dist/tokens/typography.js.map +1 -0
  577. package/dist/types/index.js +10 -0
  578. package/dist/types/index.js.map +1 -0
  579. package/dist/types/profile-view.js +1 -0
  580. package/dist/types/profile-view.js.map +1 -0
  581. package/dist/{use-org-notification-emails-0hjt-dEw.d.ts → use-org-notification-emails-CWWi1D8t.d.ts} +2 -2
  582. package/package.json +4 -3
@@ -0,0 +1,19 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-accounts.ts
4
+ import { useQuery } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import { fetchAccounts } from "../fetchers/accounts.js";
7
+ import { sifaQueryKeys } from "../keys.js";
8
+ function useAccounts(options) {
9
+ const config = useSifaConfig();
10
+ return useQuery({
11
+ queryKey: sifaQueryKeys.auth.accounts(),
12
+ queryFn: () => fetchAccounts(config),
13
+ ...options
14
+ });
15
+ }
16
+ export {
17
+ useAccounts
18
+ };
19
+ //# sourceMappingURL=use-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-accounts.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport { fetchAccounts, type AccountSummary } from '../fetchers/accounts.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * React hook for the accounts attached to this browser (the account switcher).\n * Requires a client-side session (relies on `credentials: 'include'`).\n * Returns `[]` when unauthenticated.\n */\nexport function useAccounts(\n options?: Omit<\n UseQueryOptions<\n AccountSummary[],\n Error,\n AccountSummary[],\n ReturnType<typeof sifaQueryKeys.auth.accounts>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.auth.accounts(),\n queryFn: () => fetchAccounts(config),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B,SAAS,qBAA0C;AACnD,SAAS,qBAAqB;AAOvB,SAAS,YACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,KAAK,SAAS;AAAA,IACtC,SAAS,MAAM,cAAc,MAAM;AAAA,IACnC,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -0,0 +1,52 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-activity-items-hide.ts
4
+ import {
5
+ useMutation,
6
+ useQuery,
7
+ useQueryClient
8
+ } from "@tanstack/react-query";
9
+ import "../client.js";
10
+ import { useSifaConfig } from "../config.js";
11
+ import {
12
+ fetchHiddenActivityItems,
13
+ hideActivityItem,
14
+ unhideActivityItem
15
+ } from "../fetchers/activity-items-hide.js";
16
+ import { sifaQueryKeys } from "../keys.js";
17
+ function useHiddenActivityItems(options) {
18
+ const config = useSifaConfig();
19
+ return useQuery({
20
+ queryKey: sifaQueryKeys.activity.hiddenItems(),
21
+ queryFn: () => fetchHiddenActivityItems(config),
22
+ ...options
23
+ });
24
+ }
25
+ function makeHideHook(fetcher) {
26
+ return function useHook(options) {
27
+ const config = useSifaConfig();
28
+ const queryClient = useQueryClient();
29
+ return useMutation({
30
+ mutationFn: (v) => fetcher(config, v),
31
+ onSuccess: async (result, variables, onMutateResult, context) => {
32
+ if (result.success) {
33
+ await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.activity.all() });
34
+ }
35
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
36
+ },
37
+ ...options
38
+ });
39
+ };
40
+ }
41
+ var useHideActivityItem = makeHideHook(
42
+ (config, input) => hideActivityItem(config, input)
43
+ );
44
+ var useUnhideActivityItem = makeHideHook(
45
+ (config, input) => unhideActivityItem(config, input)
46
+ );
47
+ export {
48
+ useHiddenActivityItems,
49
+ useHideActivityItem,
50
+ useUnhideActivityItem
51
+ };
52
+ //# sourceMappingURL=use-activity-items-hide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-activity-items-hide.ts"],"sourcesContent":["'use client';\n\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\n\nimport { type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchHiddenActivityItems,\n hideActivityItem,\n unhideActivityItem,\n type HiddenActivityItem,\n type HideActivityItemInput,\n type UnhideActivityItemInput,\n} from '../fetchers/activity-items-hide.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Everything the authenticated user has hidden from their activity, for the\n * unhide list in settings.\n */\nexport function useHiddenActivityItems(\n options?: Omit<\n UseQueryOptions<\n HiddenActivityItem[],\n Error,\n HiddenActivityItem[],\n ReturnType<typeof sifaQueryKeys.activity.hiddenItems>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.activity.hiddenItems(),\n queryFn: () => fetchHiddenActivityItems(config),\n ...options,\n });\n}\n\nfunction makeHideHook<TVariable>(\n fetcher: (config: ReturnType<typeof useSifaConfig>, v: TVariable) => Promise<WriteResult>,\n) {\n return function useHook(\n options?: Omit<UseMutationOptions<WriteResult, Error, TVariable>, 'mutationFn'>,\n ) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (v: TVariable) => fetcher(config, v),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n // Every activity surface changes at once: the feed, the teaser on the\n // profile, the heatmap, and the hidden list itself.\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.activity.all() });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n ...options,\n });\n };\n}\n\n/**\n * Hide one activity item from the caller's own profile. The record stays on\n * their PDS; only its appearance on sifa.id is suppressed.\n */\nexport const useHideActivityItem = makeHideHook<HideActivityItemInput>((config, input) =>\n hideActivityItem(config, input),\n);\n\n/** Restore a previously-hidden activity item. */\nexport const useUnhideActivityItem = makeHideHook<UnhideActivityItemInput>((config, input) =>\n unhideActivityItem(config, input),\n);\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAEP,OAAiC;AACjC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,qBAAqB;AAMvB,SAAS,uBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,SAAS,YAAY;AAAA,IAC7C,SAAS,MAAM,yBAAyB,MAAM;AAAA,IAC9C,GAAG;AAAA,EACL,CAAC;AACH;AAEA,SAAS,aACP,SACA;AACA,SAAO,SAAS,QACd,SACA;AACA,UAAM,SAAS,cAAc;AAC7B,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY;AAAA,MACjB,YAAY,CAAC,MAAiB,QAAQ,QAAQ,CAAC;AAAA,MAC/C,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,YAAI,OAAO,SAAS;AAGlB,gBAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,SAAS,IAAI,EAAE,CAAC;AAAA,QAChF;AACA,cAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,MACvE;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACF;AAMO,IAAM,sBAAsB;AAAA,EAAoC,CAAC,QAAQ,UAC9E,iBAAiB,QAAQ,KAAK;AAChC;AAGO,IAAM,wBAAwB;AAAA,EAAsC,CAAC,QAAQ,UAClF,mBAAmB,QAAQ,KAAK;AAClC;","names":[]}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-activity.ts
4
+ import { useQuery } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import {
7
+ fetchActivityFeed,
8
+ fetchActivityTeaser,
9
+ fetchHeatmapData
10
+ } from "../fetchers/activity.js";
11
+ import { sifaQueryKeys } from "../keys.js";
12
+ function useHeatmapData(handleOrDid, days, options) {
13
+ const config = useSifaConfig();
14
+ return useQuery({
15
+ queryKey: sifaQueryKeys.activity.heatmap(handleOrDid ?? "", days),
16
+ queryFn: () => fetchHeatmapData(config, handleOrDid ?? "", days),
17
+ enabled: Boolean(handleOrDid) && (options?.enabled ?? true),
18
+ ...options
19
+ });
20
+ }
21
+ function useActivityTeaser(handleOrDid, options) {
22
+ const config = useSifaConfig();
23
+ return useQuery({
24
+ queryKey: sifaQueryKeys.activity.teaser(handleOrDid ?? ""),
25
+ queryFn: () => fetchActivityTeaser(config, handleOrDid ?? ""),
26
+ enabled: Boolean(handleOrDid) && (options?.enabled ?? true),
27
+ ...options
28
+ });
29
+ }
30
+ function useActivityFeed(handleOrDid, opts = {}, options) {
31
+ const config = useSifaConfig();
32
+ return useQuery({
33
+ queryKey: sifaQueryKeys.activity.feed(handleOrDid ?? "", opts),
34
+ queryFn: () => fetchActivityFeed(config, handleOrDid ?? "", opts),
35
+ enabled: Boolean(handleOrDid) && (options?.enabled ?? true),
36
+ ...options
37
+ });
38
+ }
39
+ export {
40
+ useActivityFeed,
41
+ useActivityTeaser,
42
+ useHeatmapData
43
+ };
44
+ //# sourceMappingURL=use-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-activity.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchActivityFeed,\n fetchActivityTeaser,\n fetchHeatmapData,\n type ActivityFeedResponse,\n type ActivityTeaserResponse,\n type FetchActivityFeedOptions,\n type HeatmapResponse,\n} from '../fetchers/activity.js';\nimport { sifaQueryKeys } from '../keys.js';\n\nexport function useHeatmapData(\n handleOrDid: string | undefined | null,\n days: number,\n options?: Omit<\n UseQueryOptions<\n HeatmapResponse | null,\n Error,\n HeatmapResponse | null,\n ReturnType<typeof sifaQueryKeys.activity.heatmap>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.activity.heatmap(handleOrDid ?? '', days),\n queryFn: () => fetchHeatmapData(config, handleOrDid ?? '', days),\n enabled: Boolean(handleOrDid) && (options?.enabled ?? true),\n ...options,\n });\n}\n\nexport function useActivityTeaser(\n handleOrDid: string | undefined | null,\n options?: Omit<\n UseQueryOptions<\n ActivityTeaserResponse | null,\n Error,\n ActivityTeaserResponse | null,\n ReturnType<typeof sifaQueryKeys.activity.teaser>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.activity.teaser(handleOrDid ?? ''),\n queryFn: () => fetchActivityTeaser(config, handleOrDid ?? ''),\n enabled: Boolean(handleOrDid) && (options?.enabled ?? true),\n ...options,\n });\n}\n\nexport function useActivityFeed(\n handleOrDid: string | undefined | null,\n opts: Pick<FetchActivityFeedOptions, 'category' | 'limit' | 'cursor'> = {},\n options?: Omit<\n UseQueryOptions<\n ActivityFeedResponse | null,\n Error,\n ActivityFeedResponse | null,\n ReturnType<typeof sifaQueryKeys.activity.feed>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.activity.feed(handleOrDid ?? '', opts as Record<string, unknown>),\n queryFn: () => fetchActivityFeed(config, handleOrDid ?? '', opts),\n enabled: Boolean(handleOrDid) && (options?.enabled ?? true),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP,SAAS,qBAAqB;AAEvB,SAAS,eACd,aACA,MACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,SAAS,QAAQ,eAAe,IAAI,IAAI;AAAA,IAChE,SAAS,MAAM,iBAAiB,QAAQ,eAAe,IAAI,IAAI;AAAA,IAC/D,SAAS,QAAQ,WAAW,MAAM,SAAS,WAAW;AAAA,IACtD,GAAG;AAAA,EACL,CAAC;AACH;AAEO,SAAS,kBACd,aACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,SAAS,OAAO,eAAe,EAAE;AAAA,IACzD,SAAS,MAAM,oBAAoB,QAAQ,eAAe,EAAE;AAAA,IAC5D,SAAS,QAAQ,WAAW,MAAM,SAAS,WAAW;AAAA,IACtD,GAAG;AAAA,EACL,CAAC;AACH;AAEO,SAAS,gBACd,aACA,OAAwE,CAAC,GACzE,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,SAAS,KAAK,eAAe,IAAI,IAA+B;AAAA,IACxF,SAAS,MAAM,kBAAkB,QAAQ,eAAe,IAAI,IAAI;AAAA,IAChE,SAAS,QAAQ,WAAW,MAAM,SAAS,WAAW;AAAA,IACtD,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-admin-review-queues.ts
4
+ import { useQuery } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import { getAdminReviewQueues } from "../fetchers/admin-review-queues.js";
7
+ import { sifaQueryKeys } from "../keys.js";
8
+ var REVIEW_QUEUES_STALE_TIME_MS = 6e4;
9
+ function useAdminReviewQueues(options) {
10
+ const config = useSifaConfig();
11
+ return useQuery({
12
+ queryKey: sifaQueryKeys.admin.reviewQueues(),
13
+ queryFn: () => getAdminReviewQueues(config),
14
+ staleTime: REVIEW_QUEUES_STALE_TIME_MS,
15
+ ...options
16
+ });
17
+ }
18
+ export {
19
+ useAdminReviewQueues
20
+ };
21
+ //# sourceMappingURL=use-admin-review-queues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-admin-review-queues.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport { getAdminReviewQueues, type AdminReviewQueues } from '../fetchers/admin-review-queues.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/** Default staleness for the queue counts, matching the API cache TTL. */\nconst REVIEW_QUEUES_STALE_TIME_MS = 60_000;\n\n/**\n * Read hook for the open counts of the three admin review queues. Shared by\n * the admin nav pill and the review-queues page so both render one number\n * from one request.\n *\n * Admin-gated on the server; non-admins get an error rather than zeroes.\n */\nexport function useAdminReviewQueues(\n options?: Omit<\n UseQueryOptions<\n AdminReviewQueues,\n Error,\n AdminReviewQueues,\n ReturnType<typeof sifaQueryKeys.admin.reviewQueues>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.admin.reviewQueues(),\n queryFn: () => getAdminReviewQueues(config),\n staleTime: REVIEW_QUEUES_STALE_TIME_MS,\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B,SAAS,4BAAoD;AAC7D,SAAS,qBAAqB;AAG9B,IAAM,8BAA8B;AAS7B,SAAS,qBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,MAAM,aAAa;AAAA,IAC3C,SAAS,MAAM,qBAAqB,MAAM;AAAA,IAC1C,WAAW;AAAA,IACX,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-apps.ts
4
+ import { useQuery } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import {
7
+ fetchAppsRegistry,
8
+ fetchHiddenApps
9
+ } from "../fetchers/apps.js";
10
+ import { sifaQueryKeys } from "../keys.js";
11
+ function useAppsRegistry(options) {
12
+ const config = useSifaConfig();
13
+ return useQuery({
14
+ queryKey: sifaQueryKeys.apps.registry(),
15
+ queryFn: () => fetchAppsRegistry(config),
16
+ ...options
17
+ });
18
+ }
19
+ function useHiddenApps(options) {
20
+ const config = useSifaConfig();
21
+ return useQuery({
22
+ queryKey: sifaQueryKeys.apps.hidden(),
23
+ queryFn: () => fetchHiddenApps(config),
24
+ ...options
25
+ });
26
+ }
27
+ export {
28
+ useAppsRegistry,
29
+ useHiddenApps
30
+ };
31
+ //# sourceMappingURL=use-apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-apps.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchAppsRegistry,\n fetchHiddenApps,\n type AppRegistryEntry,\n type HiddenApp,\n} from '../fetchers/apps.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/** React hook for the public app registry. */\nexport function useAppsRegistry(\n options?: Omit<\n UseQueryOptions<\n AppRegistryEntry[],\n Error,\n AppRegistryEntry[],\n ReturnType<typeof sifaQueryKeys.apps.registry>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.apps.registry(),\n queryFn: () => fetchAppsRegistry(config),\n ...options,\n });\n}\n\n/**\n * React hook for the authenticated user's hidden-apps list. Requires a\n * client-side session (relies on `credentials: 'include'`).\n */\nexport function useHiddenApps(\n options?: Omit<\n UseQueryOptions<HiddenApp[], Error, HiddenApp[], ReturnType<typeof sifaQueryKeys.apps.hidden>>,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.apps.hidden(),\n queryFn: () => fetchHiddenApps(config),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,qBAAqB;AAGvB,SAAS,gBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,KAAK,SAAS;AAAA,IACtC,SAAS,MAAM,kBAAkB,MAAM;AAAA,IACvC,GAAG;AAAA,EACL,CAAC;AACH;AAMO,SAAS,cACd,SAIA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,KAAK,OAAO;AAAA,IACpC,SAAS,MAAM,gBAAgB,MAAM;AAAA,IACrC,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-bsky-content-prefs.ts
4
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import {
7
+ fetchBskyContentLabelPrefs,
8
+ updateBskyContentLabelPrefs
9
+ } from "../fetchers/bsky-preferences.js";
10
+ import { sifaQueryKeys } from "../keys.js";
11
+ function useBskyContentLabelPrefs(options) {
12
+ const config = useSifaConfig();
13
+ return useQuery({
14
+ queryKey: sifaQueryKeys.bskyPreferences.contentLabels(),
15
+ queryFn: () => fetchBskyContentLabelPrefs(config),
16
+ // Prefs change rarely; long stale time keeps the gate snappy on
17
+ // navigation. Invalidation after a write is explicit.
18
+ staleTime: 5 * 6e4,
19
+ ...options
20
+ });
21
+ }
22
+ function useUpdateBskyContentLabelPrefs() {
23
+ const config = useSifaConfig();
24
+ const queryClient = useQueryClient();
25
+ return useMutation({
26
+ mutationFn: (body) => updateBskyContentLabelPrefs(config, body),
27
+ onSuccess: (result) => {
28
+ if (result.success && result.contentLabels) {
29
+ queryClient.setQueryData(
30
+ sifaQueryKeys.bskyPreferences.contentLabels(),
31
+ result.contentLabels
32
+ );
33
+ } else {
34
+ void queryClient.invalidateQueries({
35
+ queryKey: sifaQueryKeys.bskyPreferences.all()
36
+ });
37
+ }
38
+ }
39
+ });
40
+ }
41
+ export {
42
+ useBskyContentLabelPrefs,
43
+ useUpdateBskyContentLabelPrefs
44
+ };
45
+ //# sourceMappingURL=use-bsky-content-prefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-bsky-content-prefs.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQuery, useQueryClient, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchBskyContentLabelPrefs,\n updateBskyContentLabelPrefs,\n type BskyContentLabelPrefs,\n type UpdateBskyContentLabelPrefsBody,\n} from '../fetchers/bsky-preferences.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Read the viewer's Bluesky adult content-label preferences. The fetcher\n * returns `null` when the OAuth grant doesn't include the read scope\n * (sifa-api responds 403 with `needsScope: 'bsky-preferences'`); call\n * sites should treat `null` as \"needs scope upgrade\" and route through\n * the granular re-auth flow before retrying.\n *\n * Pass `enabled: false` for anonymous viewers — TanStack will skip the\n * fetch entirely and the gate will fall through to its default-hide path.\n */\nexport function useBskyContentLabelPrefs(\n options?: Omit<\n UseQueryOptions<\n BskyContentLabelPrefs | null,\n Error,\n BskyContentLabelPrefs | null,\n ReturnType<typeof sifaQueryKeys.bskyPreferences.contentLabels>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.bskyPreferences.contentLabels(),\n queryFn: () => fetchBskyContentLabelPrefs(config),\n // Prefs change rarely; long stale time keeps the gate snappy on\n // navigation. Invalidation after a write is explicit.\n staleTime: 5 * 60_000,\n ...options,\n });\n}\n\n/**\n * Mutation that updates one or more adult-content prefs on the viewer's\n * PDS via sifa-api, then writes the merged result back into the prefs\n * cache so the next render reflects the change without a refetch.\n */\nexport function useUpdateBskyContentLabelPrefs() {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: (body: UpdateBskyContentLabelPrefsBody) =>\n updateBskyContentLabelPrefs(config, body),\n onSuccess: (result) => {\n if (result.success && result.contentLabels) {\n queryClient.setQueryData<BskyContentLabelPrefs | null>(\n sifaQueryKeys.bskyPreferences.contentLabels(),\n result.contentLabels,\n );\n } else {\n // Even on failure, drop the cached value so the next read tries\n // again — a 403 might mean a fresh scope grant succeeded but the\n // local cache still reflects the pre-grant state.\n void queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.bskyPreferences.all(),\n });\n }\n },\n });\n}\n"],"mappings":";;;AAEA,SAAS,aAAa,UAAU,sBAA4C;AAE5E,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,qBAAqB;AAYvB,SAAS,yBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,gBAAgB,cAAc;AAAA,IACtD,SAAS,MAAM,2BAA2B,MAAM;AAAA;AAAA;AAAA,IAGhD,WAAW,IAAI;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AACH;AAOO,SAAS,iCAAiC;AAC/C,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,4BAA4B,QAAQ,IAAI;AAAA,IAC1C,WAAW,CAAC,WAAW;AACrB,UAAI,OAAO,WAAW,OAAO,eAAe;AAC1C,oBAAY;AAAA,UACV,cAAc,gBAAgB,cAAc;AAAA,UAC5C,OAAO;AAAA,QACT;AAAA,MACF,OAAO;AAIL,aAAK,YAAY,kBAAkB;AAAA,UACjC,UAAU,cAAc,gBAAgB,IAAI;AAAA,QAC9C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,121 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-confirmations.ts
4
+ import {
5
+ useMutation,
6
+ useQuery,
7
+ useQueryClient
8
+ } from "@tanstack/react-query";
9
+ import "../client.js";
10
+ import { useSifaConfig } from "../config.js";
11
+ import {
12
+ createConfirmation,
13
+ dismissConfirmation,
14
+ fetchGivenConfirmations,
15
+ fetchPendingConfirmations,
16
+ revokeConfirmation
17
+ } from "../fetchers/confirmations.js";
18
+ import { sifaQueryKeys } from "../keys.js";
19
+ function usePendingConfirmations(options) {
20
+ const config = useSifaConfig();
21
+ return useQuery({
22
+ queryKey: sifaQueryKeys.confirmation.pending(),
23
+ queryFn: () => fetchPendingConfirmations(config),
24
+ ...options
25
+ });
26
+ }
27
+ function useGivenConfirmations(options) {
28
+ const config = useSifaConfig();
29
+ return useQuery({
30
+ queryKey: sifaQueryKeys.confirmation.given(),
31
+ queryFn: () => fetchGivenConfirmations(config),
32
+ ...options
33
+ });
34
+ }
35
+ function useCreateConfirmation(claimerHandleOrDid, options) {
36
+ const config = useSifaConfig();
37
+ const queryClient = useQueryClient();
38
+ return useMutation({
39
+ // Spread first: a consumer-supplied handler would otherwise replace the
40
+ // one below and silently drop cache invalidation (#453).
41
+ ...options,
42
+ mutationFn: (data) => createConfirmation(config, data),
43
+ onSuccess: async (result, variables, onMutateResult, context) => {
44
+ if (result.success) {
45
+ await queryClient.invalidateQueries({
46
+ queryKey: sifaQueryKeys.confirmation.pending()
47
+ });
48
+ await queryClient.invalidateQueries({
49
+ queryKey: sifaQueryKeys.confirmation.given()
50
+ });
51
+ await queryClient.invalidateQueries({
52
+ queryKey: sifaQueryKeys.inbox.counts()
53
+ });
54
+ if (claimerHandleOrDid) {
55
+ await queryClient.invalidateQueries({
56
+ queryKey: sifaQueryKeys.profile.byHandle(claimerHandleOrDid)
57
+ });
58
+ }
59
+ }
60
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
61
+ }
62
+ });
63
+ }
64
+ function useDismissConfirmation(options) {
65
+ const config = useSifaConfig();
66
+ const queryClient = useQueryClient();
67
+ return useMutation({
68
+ // Spread first: a consumer-supplied handler would otherwise replace the
69
+ // one below and silently drop cache invalidation (#453).
70
+ ...options,
71
+ mutationFn: (data) => dismissConfirmation(config, data),
72
+ onSuccess: async (result, variables, onMutateResult, context) => {
73
+ if (result.success) {
74
+ await queryClient.invalidateQueries({
75
+ queryKey: sifaQueryKeys.confirmation.pending()
76
+ });
77
+ await queryClient.invalidateQueries({
78
+ queryKey: sifaQueryKeys.inbox.counts()
79
+ });
80
+ }
81
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
82
+ }
83
+ });
84
+ }
85
+ function useRevokeConfirmation(claimerHandleOrDid, options) {
86
+ const config = useSifaConfig();
87
+ const queryClient = useQueryClient();
88
+ return useMutation({
89
+ // Spread first: a consumer-supplied handler would otherwise replace the
90
+ // one below and silently drop cache invalidation (#453).
91
+ ...options,
92
+ mutationFn: (data) => revokeConfirmation(config, data),
93
+ onSuccess: async (result, variables, onMutateResult, context) => {
94
+ if (result.success) {
95
+ await queryClient.invalidateQueries({
96
+ queryKey: sifaQueryKeys.confirmation.pending()
97
+ });
98
+ await queryClient.invalidateQueries({
99
+ queryKey: sifaQueryKeys.confirmation.given()
100
+ });
101
+ await queryClient.invalidateQueries({
102
+ queryKey: sifaQueryKeys.inbox.counts()
103
+ });
104
+ if (claimerHandleOrDid) {
105
+ await queryClient.invalidateQueries({
106
+ queryKey: sifaQueryKeys.profile.byHandle(claimerHandleOrDid)
107
+ });
108
+ }
109
+ }
110
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
111
+ }
112
+ });
113
+ }
114
+ export {
115
+ useCreateConfirmation,
116
+ useDismissConfirmation,
117
+ useGivenConfirmations,
118
+ usePendingConfirmations,
119
+ useRevokeConfirmation
120
+ };
121
+ //# sourceMappingURL=use-confirmations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-confirmations.ts"],"sourcesContent":["'use client';\n\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\n\nimport { type CreateResult, type WriteResult } from '../client.js';\nimport { useSifaConfig } from '../config.js';\nimport {\n createConfirmation,\n dismissConfirmation,\n fetchGivenConfirmations,\n fetchPendingConfirmations,\n revokeConfirmation,\n type ConfirmationInput,\n type ConfirmationSubjectInput,\n type GivenConfirmation,\n type PendingConfirmationsPage,\n} from '../fetchers/confirmations.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Claims naming the signed-in user that await their decision. Returns an empty\n * page when signed out or on error, so callers can render \"nothing pending\"\n * without special-casing either.\n */\nexport function usePendingConfirmations(\n options?: Omit<\n UseQueryOptions<\n PendingConfirmationsPage,\n Error,\n PendingConfirmationsPage,\n ReturnType<typeof sifaQueryKeys.confirmation.pending>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.confirmation.pending(),\n queryFn: () => fetchPendingConfirmations(config),\n ...options,\n });\n}\n\n/**\n * Confirmations the signed-in user has already given, with whether each has\n * drifted since. Returns an empty list when signed out or on error.\n */\nexport function useGivenConfirmations(\n options?: Omit<\n UseQueryOptions<\n { confirmations: GivenConfirmation[] },\n Error,\n { confirmations: GivenConfirmation[] },\n ReturnType<typeof sifaQueryKeys.confirmation.given>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.confirmation.given(),\n queryFn: () => fetchGivenConfirmations(config),\n ...options,\n });\n}\n\n/**\n * Affirm a claim naming you. On success it leaves the inbox and starts\n * rendering with your name and avatar on the claimer's profile, so both the\n * inbox and the claimer's profile cache are invalidated.\n *\n * `claimerHandleOrDid` is whose profile the claim displays on; pass `null` to\n * skip profile invalidation. Note this is the claimer, not the confirming\n * user: confirming changes what renders on *their* profile, not yours.\n */\nexport function useCreateConfirmation(\n claimerHandleOrDid: string | null,\n options?: Omit<UseMutationOptions<CreateResult, Error, ConfirmationInput>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied handler would otherwise replace the\n // one below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: ConfirmationInput) => createConfirmation(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.confirmation.pending(),\n });\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.confirmation.given(),\n });\n // Keep the header bell badge in step with the resolved task.\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.inbox.counts(),\n });\n if (claimerHandleOrDid) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(claimerHandleOrDid),\n });\n }\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/**\n * Dismiss a claim naming you. Only the inbox is invalidated -- a dismissal\n * changes nothing that displays anywhere, so no profile cache is affected.\n */\nexport function useDismissConfirmation(\n options?: Omit<UseMutationOptions<WriteResult, Error, ConfirmationSubjectInput>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied handler would otherwise replace the\n // one below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: ConfirmationSubjectInput) => dismissConfirmation(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.confirmation.pending(),\n });\n // Keep the header bell badge in step with the resolved task.\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.inbox.counts(),\n });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/**\n * Withdraw a confirmation you previously gave. Unlike a dismissal this does\n * change what displays, so the claimer's profile cache is invalidated too.\n */\nexport function useRevokeConfirmation(\n claimerHandleOrDid: string | null,\n options?: Omit<UseMutationOptions<WriteResult, Error, ConfirmationSubjectInput>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied handler would otherwise replace the\n // one below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: ConfirmationSubjectInput) => revokeConfirmation(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.confirmation.pending(),\n });\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.confirmation.given(),\n });\n // Keep the header bell badge in step with the resolved task.\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.inbox.counts(),\n });\n if (claimerHandleOrDid) {\n await queryClient.invalidateQueries({\n queryKey: sifaQueryKeys.profile.byHandle(claimerHandleOrDid),\n });\n }\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAEP,OAAoD;AACpD,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP,SAAS,qBAAqB;AAOvB,SAAS,wBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,aAAa,QAAQ;AAAA,IAC7C,SAAS,MAAM,0BAA0B,MAAM;AAAA,IAC/C,GAAG;AAAA,EACL,CAAC;AACH;AAMO,SAAS,sBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,aAAa,MAAM;AAAA,IAC3C,SAAS,MAAM,wBAAwB,MAAM;AAAA,IAC7C,GAAG;AAAA,EACL,CAAC;AACH;AAWO,SAAS,sBACd,oBACA,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,SAA4B,mBAAmB,QAAQ,IAAI;AAAA,IACxE,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,aAAa,QAAQ;AAAA,QAC/C,CAAC;AACD,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,aAAa,MAAM;AAAA,QAC7C,CAAC;AAED,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,MAAM,OAAO;AAAA,QACvC,CAAC;AACD,YAAI,oBAAoB;AACtB,gBAAM,YAAY,kBAAkB;AAAA,YAClC,UAAU,cAAc,QAAQ,SAAS,kBAAkB;AAAA,UAC7D,CAAC;AAAA,QACH;AAAA,MACF;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;AAMO,SAAS,uBACd,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,SAAmC,oBAAoB,QAAQ,IAAI;AAAA,IAChF,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,aAAa,QAAQ;AAAA,QAC/C,CAAC;AAED,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,MAAM,OAAO;AAAA,QACvC,CAAC;AAAA,MACH;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;AAMO,SAAS,sBACd,oBACA,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,SAAmC,mBAAmB,QAAQ,IAAI;AAAA,IAC/E,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,aAAa,QAAQ;AAAA,QAC/C,CAAC;AACD,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,aAAa,MAAM;AAAA,QAC7C,CAAC;AAED,cAAM,YAAY,kBAAkB;AAAA,UAClC,UAAU,cAAc,MAAM,OAAO;AAAA,QACvC,CAAC;AACD,YAAI,oBAAoB;AACtB,gBAAM,YAAY,kBAAkB;AAAA,YAClC,UAAU,cAAc,QAAQ,SAAS,kBAAkB;AAAA,UAC7D,CAAC;AAAA,QACH;AAAA,MACF;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-create-position.ts
4
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import { createPosition } from "../fetchers/positions.js";
7
+ import { sifaQueryKeys } from "../keys.js";
8
+ function useCreatePosition(ownerDid, options) {
9
+ const config = useSifaConfig();
10
+ const queryClient = useQueryClient();
11
+ return useMutation({
12
+ // Spread first: a consumer-supplied onSuccess would otherwise replace the
13
+ // handler below and silently drop cache invalidation (#453).
14
+ ...options,
15
+ mutationFn: (data) => createPosition(config, data),
16
+ onSuccess: async (result, variables, onMutateResult, context) => {
17
+ if (result.success) {
18
+ await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.profile.byHandle(ownerDid) });
19
+ await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.position.byOwner(ownerDid) });
20
+ }
21
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
22
+ }
23
+ });
24
+ }
25
+ export {
26
+ useCreatePosition
27
+ };
28
+ //# sourceMappingURL=use-create-position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-create-position.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type UseMutationOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport { createPosition, type CreateResult } from '../fetchers/positions.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * React hook for creating a new position record. On success, invalidates\n * the owner's profile cache so the new position is reflected on the next\n * read.\n *\n * The owner DID is required so the mutation can target the correct\n * profile cache entry for invalidation.\n */\nexport function useCreatePosition(\n ownerDid: string,\n options?: Omit<UseMutationOptions<CreateResult, Error, Record<string, unknown>>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n\n return useMutation({\n // Spread first: a consumer-supplied onSuccess would otherwise replace the\n // handler below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (data: Record<string, unknown>) => createPosition(config, data),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.profile.byHandle(ownerDid) });\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.position.byOwner(ownerDid) });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA,SAAS,aAAa,sBAA+C;AAErE,SAAS,qBAAqB;AAC9B,SAAS,sBAAyC;AAClD,SAAS,qBAAqB;AAUvB,SAAS,kBACd,UACA,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AAEnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,SAAkC,eAAe,QAAQ,IAAI;AAAA,IAC1E,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,QAAQ,SAAS,QAAQ,EAAE,CAAC;AAC1F,cAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,SAAS,QAAQ,QAAQ,EAAE,CAAC;AAAA,MAC5F;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,63 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-destructive.ts
4
+ import {
5
+ useMutation,
6
+ useQuery,
7
+ useQueryClient
8
+ } from "@tanstack/react-query";
9
+ import { useSifaConfig } from "../config.js";
10
+ import {
11
+ deleteAccount,
12
+ fetchWipePreview,
13
+ resetProfile
14
+ } from "../fetchers/destructive.js";
15
+ import { sifaQueryKeys } from "../keys.js";
16
+ function useWipePreview(options) {
17
+ const config = useSifaConfig();
18
+ return useQuery({
19
+ queryKey: sifaQueryKeys.destructive.wipePreview(),
20
+ queryFn: () => fetchWipePreview(config),
21
+ staleTime: 0,
22
+ gcTime: 0,
23
+ ...options
24
+ });
25
+ }
26
+ function useResetProfile(options) {
27
+ const config = useSifaConfig();
28
+ const queryClient = useQueryClient();
29
+ return useMutation({
30
+ // Spread first: a consumer-supplied handler would otherwise replace the
31
+ // one below and silently drop cache invalidation (#453).
32
+ ...options,
33
+ mutationFn: (deletePdsData) => resetProfile(config, deletePdsData),
34
+ onSuccess: async (result, variables, onMutateResult, context) => {
35
+ if (result.success) {
36
+ await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.all() });
37
+ }
38
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
39
+ }
40
+ });
41
+ }
42
+ function useDeleteAccount(options) {
43
+ const config = useSifaConfig();
44
+ const queryClient = useQueryClient();
45
+ return useMutation({
46
+ // Spread first: a consumer-supplied handler would otherwise replace the
47
+ // one below and silently drop cache invalidation (#453).
48
+ ...options,
49
+ mutationFn: (deletePdsData) => deleteAccount(config, deletePdsData),
50
+ onSuccess: async (result, variables, onMutateResult, context) => {
51
+ if (result.success) {
52
+ queryClient.clear();
53
+ }
54
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
55
+ }
56
+ });
57
+ }
58
+ export {
59
+ useDeleteAccount,
60
+ useResetProfile,
61
+ useWipePreview
62
+ };
63
+ //# sourceMappingURL=use-destructive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-destructive.ts"],"sourcesContent":["'use client';\n\nimport {\n useMutation,\n useQuery,\n useQueryClient,\n type UseMutationOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n deleteAccount,\n fetchWipePreview,\n resetProfile,\n type DeleteAccountResult,\n type ResetProfileResult,\n type WipePreview,\n} from '../fetchers/destructive.js';\nimport { sifaQueryKeys } from '../keys.js';\n\n/**\n * Read which id.sifa.* collections the current grant cannot delete, so a\n * delete-account UI can ask for the missing scope BEFORE the destructive step.\n *\n * Not cached: the whole point is to reflect the grant as it stands right now,\n * and the grant changes underneath this hook when the user returns from the\n * consent screen. A stale \"no gaps\" here is the failure this exists to prevent.\n */\nexport function useWipePreview(\n options?: Omit<\n UseQueryOptions<\n WipePreview,\n Error,\n WipePreview,\n ReturnType<typeof sifaQueryKeys.destructive.wipePreview>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.destructive.wipePreview(),\n queryFn: () => fetchWipePreview(config),\n staleTime: 0,\n gcTime: 0,\n ...options,\n });\n}\n\n/**\n * React hook for resetting the authenticated user's Sifa profile.\n * Variable: `deletePdsData` boolean.\n *\n * Invalidates the entire `sifaQueryKeys.all()` subtree on success\n * (everything Sifa-related needs a refresh after a reset).\n */\nexport function useResetProfile(\n options?: Omit<UseMutationOptions<ResetProfileResult, Error, boolean>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied handler would otherwise replace the\n // one below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (deletePdsData: boolean) => resetProfile(config, deletePdsData),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n await queryClient.invalidateQueries({ queryKey: sifaQueryKeys.all() });\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n\n/**\n * React hook for deleting the authenticated user's account. Variable:\n * `deletePdsData` boolean. Returns the deleted handle on success.\n *\n * On success, clears the entire query cache (the user is logged out\n * and nothing they previously cached should be retained).\n */\nexport function useDeleteAccount(\n options?: Omit<UseMutationOptions<DeleteAccountResult, Error, boolean>, 'mutationFn'>,\n) {\n const config = useSifaConfig();\n const queryClient = useQueryClient();\n return useMutation({\n // Spread first: a consumer-supplied handler would otherwise replace the\n // one below and silently drop cache invalidation (#453).\n ...options,\n mutationFn: (deletePdsData: boolean) => deleteAccount(config, deletePdsData),\n onSuccess: async (result, variables, onMutateResult, context) => {\n if (result.success) {\n queryClient.clear();\n }\n await options?.onSuccess?.(result, variables, onMutateResult, context);\n },\n });\n}\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAEP,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,qBAAqB;AAUvB,SAAS,eACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,YAAY,YAAY;AAAA,IAChD,SAAS,MAAM,iBAAiB,MAAM;AAAA,IACtC,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,GAAG;AAAA,EACL,CAAC;AACH;AASO,SAAS,gBACd,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,kBAA2B,aAAa,QAAQ,aAAa;AAAA,IAC1E,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,cAAM,YAAY,kBAAkB,EAAE,UAAU,cAAc,IAAI,EAAE,CAAC;AAAA,MACvE;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;AASO,SAAS,iBACd,SACA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,cAAc,eAAe;AACnC,SAAO,YAAY;AAAA;AAAA;AAAA,IAGjB,GAAG;AAAA,IACH,YAAY,CAAC,kBAA2B,cAAc,QAAQ,aAAa;AAAA,IAC3E,WAAW,OAAO,QAAQ,WAAW,gBAAgB,YAAY;AAC/D,UAAI,OAAO,SAAS;AAClB,oBAAY,MAAM;AAAA,MACpB;AACA,YAAM,SAAS,YAAY,QAAQ,WAAW,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,53 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-discovery.ts
4
+ import { useQuery } from "@tanstack/react-query";
5
+ import { useSifaConfig } from "../config.js";
6
+ import {
7
+ fetchFeaturedProfile,
8
+ fetchSimilarProfiles,
9
+ fetchSuggestionCount,
10
+ fetchSuggestions
11
+ } from "../fetchers/discovery.js";
12
+ import { sifaQueryKeys } from "../keys.js";
13
+ function useSimilarProfiles(did, opts = {}, options) {
14
+ const config = useSifaConfig();
15
+ const limit = opts.limit ?? 5;
16
+ return useQuery({
17
+ queryKey: sifaQueryKeys.discovery.similar(did ?? "", limit),
18
+ queryFn: () => fetchSimilarProfiles(config, did ?? "", { limit }),
19
+ enabled: Boolean(did) && (options?.enabled ?? true),
20
+ ...options
21
+ });
22
+ }
23
+ function useSuggestions(opts = {}, options) {
24
+ const config = useSifaConfig();
25
+ return useQuery({
26
+ queryKey: sifaQueryKeys.discovery.suggestions(opts),
27
+ queryFn: () => fetchSuggestions(config, opts),
28
+ ...options
29
+ });
30
+ }
31
+ function useSuggestionCount(since, options) {
32
+ const config = useSifaConfig();
33
+ return useQuery({
34
+ queryKey: sifaQueryKeys.discovery.suggestionCount(since),
35
+ queryFn: () => fetchSuggestionCount(config, since),
36
+ ...options
37
+ });
38
+ }
39
+ function useFeaturedProfile(options) {
40
+ const config = useSifaConfig();
41
+ return useQuery({
42
+ queryKey: sifaQueryKeys.discovery.featured(),
43
+ queryFn: () => fetchFeaturedProfile(config),
44
+ ...options
45
+ });
46
+ }
47
+ export {
48
+ useFeaturedProfile,
49
+ useSimilarProfiles,
50
+ useSuggestionCount,
51
+ useSuggestions
52
+ };
53
+ //# sourceMappingURL=use-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/query/hooks/use-discovery.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query';\n\nimport { useSifaConfig } from '../config.js';\nimport {\n fetchFeaturedProfile,\n fetchSimilarProfiles,\n fetchSuggestionCount,\n fetchSuggestions,\n type FeaturedProfile,\n type FetchSuggestionsOptions,\n type SimilarProfile,\n type SuggestionsResponse,\n} from '../fetchers/discovery.js';\nimport { sifaQueryKeys } from '../keys.js';\n\nexport function useSimilarProfiles(\n did: string | undefined | null,\n opts: { limit?: number } = {},\n options?: Omit<\n UseQueryOptions<\n SimilarProfile[],\n Error,\n SimilarProfile[],\n ReturnType<typeof sifaQueryKeys.discovery.similar>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n const limit = opts.limit ?? 5;\n return useQuery({\n queryKey: sifaQueryKeys.discovery.similar(did ?? '', limit),\n queryFn: () => fetchSimilarProfiles(config, did ?? '', { limit }),\n enabled: Boolean(did) && (options?.enabled ?? true),\n ...options,\n });\n}\n\nexport function useSuggestions(\n opts: Omit<\n FetchSuggestionsOptions,\n keyof Omit<FetchSuggestionsOptions, 'source' | 'includeDismissed' | 'cursor' | 'limit'>\n > = {},\n options?: Omit<\n UseQueryOptions<\n SuggestionsResponse,\n Error,\n SuggestionsResponse,\n ReturnType<typeof sifaQueryKeys.discovery.suggestions>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.discovery.suggestions(opts as Record<string, unknown>),\n queryFn: () => fetchSuggestions(config, opts),\n ...options,\n });\n}\n\nexport function useSuggestionCount(\n since?: string,\n options?: Omit<\n UseQueryOptions<\n number,\n Error,\n number,\n ReturnType<typeof sifaQueryKeys.discovery.suggestionCount>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.discovery.suggestionCount(since),\n queryFn: () => fetchSuggestionCount(config, since),\n ...options,\n });\n}\n\nexport function useFeaturedProfile(\n options?: Omit<\n UseQueryOptions<\n FeaturedProfile | null,\n Error,\n FeaturedProfile | null,\n ReturnType<typeof sifaQueryKeys.discovery.featured>\n >,\n 'queryKey' | 'queryFn'\n >,\n) {\n const config = useSifaConfig();\n return useQuery({\n queryKey: sifaQueryKeys.discovery.featured(),\n queryFn: () => fetchFeaturedProfile(config),\n ...options,\n });\n}\n"],"mappings":";;;AAEA,SAAS,gBAAsC;AAE/C,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP,SAAS,qBAAqB;AAEvB,SAAS,mBACd,KACA,OAA2B,CAAC,GAC5B,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,QAAM,QAAQ,KAAK,SAAS;AAC5B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,UAAU,QAAQ,OAAO,IAAI,KAAK;AAAA,IAC1D,SAAS,MAAM,qBAAqB,QAAQ,OAAO,IAAI,EAAE,MAAM,CAAC;AAAA,IAChE,SAAS,QAAQ,GAAG,MAAM,SAAS,WAAW;AAAA,IAC9C,GAAG;AAAA,EACL,CAAC;AACH;AAEO,SAAS,eACd,OAGI,CAAC,GACL,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,UAAU,YAAY,IAA+B;AAAA,IAC7E,SAAS,MAAM,iBAAiB,QAAQ,IAAI;AAAA,IAC5C,GAAG;AAAA,EACL,CAAC;AACH;AAEO,SAAS,mBACd,OACA,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,UAAU,gBAAgB,KAAK;AAAA,IACvD,SAAS,MAAM,qBAAqB,QAAQ,KAAK;AAAA,IACjD,GAAG;AAAA,EACL,CAAC;AACH;AAEO,SAAS,mBACd,SASA;AACA,QAAM,SAAS,cAAc;AAC7B,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,UAAU,SAAS;AAAA,IAC3C,SAAS,MAAM,qBAAqB,MAAM;AAAA,IAC1C,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
@@ -0,0 +1,67 @@
1
+ "use client";
2
+
3
+ // src/query/hooks/use-education-mutations.ts
4
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
5
+ import "../client.js";
6
+ import { useSifaConfig } from "../config.js";
7
+ import { createEducation, deleteEducation, updateEducation } from "../fetchers/education.js";
8
+ import { sifaQueryKeys } from "../keys.js";
9
+ async function invalidateProfile(queryClient, ownerHandleOrDid) {
10
+ await queryClient.invalidateQueries({
11
+ queryKey: sifaQueryKeys.profile.byHandle(ownerHandleOrDid)
12
+ });
13
+ }
14
+ function useCreateEducation(ownerHandleOrDid, options) {
15
+ const config = useSifaConfig();
16
+ const queryClient = useQueryClient();
17
+ return useMutation({
18
+ // Spread first: a consumer-supplied onSuccess would otherwise replace the
19
+ // handler below and silently drop cache invalidation (#453).
20
+ ...options,
21
+ mutationFn: (data) => createEducation(config, data),
22
+ onSuccess: async (result, variables, onMutateResult, context) => {
23
+ if (result.success) {
24
+ await invalidateProfile(queryClient, ownerHandleOrDid);
25
+ }
26
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
27
+ }
28
+ });
29
+ }
30
+ function useUpdateEducation(ownerHandleOrDid, options) {
31
+ const config = useSifaConfig();
32
+ const queryClient = useQueryClient();
33
+ return useMutation({
34
+ // Spread first: a consumer-supplied onSuccess would otherwise replace the
35
+ // handler below and silently drop cache invalidation (#453).
36
+ ...options,
37
+ mutationFn: ({ rkey, data }) => updateEducation(config, rkey, data),
38
+ onSuccess: async (result, variables, onMutateResult, context) => {
39
+ if (result.success) {
40
+ await invalidateProfile(queryClient, ownerHandleOrDid);
41
+ }
42
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
43
+ }
44
+ });
45
+ }
46
+ function useDeleteEducation(ownerHandleOrDid, options) {
47
+ const config = useSifaConfig();
48
+ const queryClient = useQueryClient();
49
+ return useMutation({
50
+ // Spread first: a consumer-supplied onSuccess would otherwise replace the
51
+ // handler below and silently drop cache invalidation (#453).
52
+ ...options,
53
+ mutationFn: (rkey) => deleteEducation(config, rkey),
54
+ onSuccess: async (result, variables, onMutateResult, context) => {
55
+ if (result.success) {
56
+ await invalidateProfile(queryClient, ownerHandleOrDid);
57
+ }
58
+ await options?.onSuccess?.(result, variables, onMutateResult, context);
59
+ }
60
+ });
61
+ }
62
+ export {
63
+ useCreateEducation,
64
+ useDeleteEducation,
65
+ useUpdateEducation
66
+ };
67
+ //# sourceMappingURL=use-education-mutations.js.map