fedipod-server 0.29.0 → 0.31.0

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 (444) hide show
  1. package/README.md +16 -6
  2. package/dist/claims.d.ts +2 -0
  3. package/dist/claims.js +13 -4
  4. package/dist/door.d.ts +4 -0
  5. package/dist/door.js +31 -0
  6. package/dist/fedipod.d.ts +15 -0
  7. package/dist/fedipod.js +13 -0
  8. package/dist/front.d.ts +3 -0
  9. package/dist/front.js +92 -0
  10. package/dist/handler.d.ts +36 -101
  11. package/dist/handler.js +93 -644
  12. package/dist/handler.jsonld +2 -30
  13. package/dist/identities.d.ts +71 -0
  14. package/dist/identities.js +236 -0
  15. package/dist/mounts.d.ts +43 -0
  16. package/dist/mounts.js +123 -0
  17. package/dist/opt-in.d.ts +46 -0
  18. package/dist/opt-in.js +176 -0
  19. package/dist/private-read.d.ts +4 -0
  20. package/dist/private-read.js +34 -0
  21. package/package.json +12 -20
  22. package/lib/client/c2s.mjs +0 -636
  23. package/lib/client/localapi.mjs +0 -87
  24. package/lib/client/masto/accounts.mjs +0 -310
  25. package/lib/client/masto/body.mjs +0 -156
  26. package/lib/client/masto/index.mjs +0 -206
  27. package/lib/client/masto/instance.mjs +0 -112
  28. package/lib/client/masto/media.mjs +0 -79
  29. package/lib/client/masto/oauth.mjs +0 -656
  30. package/lib/client/masto/render.mjs +0 -518
  31. package/lib/client/masto/statuses.mjs +0 -372
  32. package/lib/client/masto/timelines.mjs +0 -438
  33. package/lib/client/oidc-auth.mjs +0 -62
  34. package/lib/client/streaming.mjs +0 -154
  35. package/lib/client/webpush.mjs +0 -98
  36. package/lib/connections/acctfeed.mjs +0 -257
  37. package/lib/connections/atproto.mjs +0 -309
  38. package/lib/connections/bskyfeed.mjs +0 -243
  39. package/lib/connections/bskygroup.mjs +0 -162
  40. package/lib/connections/fediacct.mjs +0 -253
  41. package/lib/connections/import.mjs +0 -357
  42. package/lib/connections/tagfeed.mjs +0 -212
  43. package/lib/connections/vault.mjs +0 -114
  44. package/lib/core/as2.mjs +0 -206
  45. package/lib/core/contexts/activitystreams.json +0 -379
  46. package/lib/core/contexts/anno.json +0 -126
  47. package/lib/core/contexts/did-v1.json +0 -57
  48. package/lib/core/contexts/fep-5711.json +0 -36
  49. package/lib/core/contexts/gotosocial.json +0 -86
  50. package/lib/core/contexts/identity-v1.json +0 -152
  51. package/lib/core/contexts/index.mjs +0 -63
  52. package/lib/core/contexts/join-lemmy.json +0 -33
  53. package/lib/core/contexts/joinmastodon.json +0 -28
  54. package/lib/core/contexts/litepub-0.1.json +0 -60
  55. package/lib/core/contexts/map.json +0 -19
  56. package/lib/core/contexts/miscellany.json +0 -19
  57. package/lib/core/contexts/quotes.json +0 -18
  58. package/lib/core/contexts/schemaorg.json +0 -8845
  59. package/lib/core/contexts/security-data-integrity-v1.json +0 -78
  60. package/lib/core/contexts/security-data-integrity-v2.json +0 -81
  61. package/lib/core/contexts/security-multikey-v1.json +0 -35
  62. package/lib/core/contexts/security-v1.json +0 -74
  63. package/lib/core/contexts/webfinger.json +0 -10
  64. package/lib/core/deliver.mjs +0 -387
  65. package/lib/core/graphview.mjs +0 -327
  66. package/lib/core/intake/activities.mjs +0 -649
  67. package/lib/core/intake/activity.mjs +0 -318
  68. package/lib/core/intake/channel.mjs +0 -144
  69. package/lib/core/intake/group.mjs +0 -258
  70. package/lib/core/intake/index.mjs +0 -732
  71. package/lib/core/intake/notes.mjs +0 -367
  72. package/lib/core/intake/verify.mjs +0 -142
  73. package/lib/core/keys.mjs +0 -153
  74. package/lib/core/lease.mjs +0 -206
  75. package/lib/core/place.mjs +0 -82
  76. package/lib/core/polls.mjs +0 -105
  77. package/lib/core/profile-page.mjs +0 -104
  78. package/lib/core/proof.mjs +0 -79
  79. package/lib/core/publisher/collections.mjs +0 -272
  80. package/lib/core/publisher/index.mjs +0 -522
  81. package/lib/core/publisher/notes.mjs +0 -519
  82. package/lib/core/publisher/own.mjs +0 -143
  83. package/lib/core/publisher/questions.mjs +0 -241
  84. package/lib/core/publisher/restore.mjs +0 -224
  85. package/lib/core/shapes/activitystreams.ttl +0 -157
  86. package/lib/core/shapes/index.mjs +0 -132
  87. package/lib/core/shapes/shapes-text.mjs +0 -13
  88. package/lib/core/social.mjs +0 -561
  89. package/lib/core/storage.mjs +0 -176
  90. package/lib/core/store.mjs +0 -578
  91. package/lib/core/wire-quotes.mjs +0 -71
  92. package/lib/core/wire.mjs +0 -925
  93. package/lib/device/account.mjs +0 -87
  94. package/lib/device/admin/index.mjs +0 -13
  95. package/lib/device/admin/origins.mjs +0 -35
  96. package/lib/device/admin/routes/connections.mjs +0 -144
  97. package/lib/device/admin/routes/gateway.mjs +0 -199
  98. package/lib/device/admin/routes/lifecycle.mjs +0 -200
  99. package/lib/device/admin/routes/owner.mjs +0 -322
  100. package/lib/device/admin/routes/setup.mjs +0 -428
  101. package/lib/device/admin/routes/social.mjs +0 -188
  102. package/lib/device/admin/server.mjs +0 -95
  103. package/lib/device/admin/static.mjs +0 -247
  104. package/lib/device/admin/surface.mjs +0 -315
  105. package/lib/device/certs.mjs +0 -281
  106. package/lib/device/cli/commands/account.mjs +0 -586
  107. package/lib/device/cli/commands/run.mjs +0 -278
  108. package/lib/device/cli/commands/service.mjs +0 -221
  109. package/lib/device/cli/commands/setup.mjs +0 -489
  110. package/lib/device/cli/commands/state.mjs +0 -561
  111. package/lib/device/cli/context.mjs +0 -288
  112. package/lib/device/export-collections.mjs +0 -161
  113. package/lib/device/gateway-move.mjs +0 -58
  114. package/lib/device/home.mjs +0 -161
  115. package/lib/device/migrate.mjs +0 -115
  116. package/lib/device/ports.mjs +0 -27
  117. package/lib/device/remote.mjs +0 -54
  118. package/lib/device/setup.mjs +0 -496
  119. package/lib/device/update.mjs +0 -96
  120. package/lib/gateway/caches.mjs +0 -36
  121. package/lib/gateway/directory.mjs +0 -90
  122. package/lib/gateway/front-core.mjs +0 -966
  123. package/lib/gateway/gateway-core.mjs +0 -244
  124. package/lib/gateway/headers.mjs +0 -49
  125. package/lib/gateway/httpsig.mjs +0 -159
  126. package/lib/gateway/notices.mjs +0 -84
  127. package/lib/gateway/quiet.mjs +0 -189
  128. package/lib/gateway/relay-extras.mjs +0 -89
  129. package/lib/gateway/token-claims.mjs +0 -16
  130. package/lib/pod/README.md +0 -61
  131. package/lib/pod/actor.mjs +0 -96
  132. package/lib/pod/collection.mjs +0 -77
  133. package/lib/pod/containers.mjs +0 -140
  134. package/lib/pod/discovery.mjs +0 -46
  135. package/lib/pod/featured.mjs +0 -18
  136. package/lib/pod/followers.mjs +0 -24
  137. package/lib/pod/following.mjs +0 -10
  138. package/lib/pod/http.mjs +0 -74
  139. package/lib/pod/inbox.mjs +0 -166
  140. package/lib/pod/links.mjs +0 -35
  141. package/lib/pod/location.mjs +0 -52
  142. package/lib/pod/media.mjs +0 -27
  143. package/lib/pod/notes.mjs +0 -78
  144. package/lib/pod/notifications.mjs +0 -89
  145. package/lib/pod/outbox.mjs +0 -18
  146. package/lib/pod/package.json +0 -19
  147. package/lib/pod/policy.mjs +0 -58
  148. package/lib/pod/private.mjs +0 -19
  149. package/lib/pod/root.mjs +0 -104
  150. package/lib/pod/state.mjs +0 -40
  151. package/lib/pod/transport.mjs +0 -674
  152. package/lib/pod/type-index.mjs +0 -101
  153. package/lib/pod/urls.mjs +0 -91
  154. package/lib/server/embed.mjs +0 -424
  155. package/lib/session/README.md +0 -137
  156. package/lib/session/demo.html +0 -94
  157. package/lib/session/fedi-account.mjs +0 -417
  158. package/lib/session/fedi-login.mjs +0 -123
  159. package/lib/session/oidc-session.mjs +0 -233
  160. package/lib/session/package.json +0 -49
  161. package/lib/shared/guard.mjs +0 -213
  162. package/lib/shared/links.mjs +0 -9
  163. package/lib/shared/safefetch.mjs +0 -235
  164. package/lib/shared/ua.mjs +0 -29
  165. package/phanpy/dist/404.html +0 -40
  166. package/phanpy/dist/_headers +0 -2
  167. package/phanpy/dist/apple-touch-icon.png +0 -0
  168. package/phanpy/dist/assets/ICONS-DIPJeU0C.js +0 -2
  169. package/phanpy/dist/assets/ICONS-DIPJeU0C.js.map +0 -1
  170. package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js +0 -183
  171. package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js.map +0 -1
  172. package/phanpy/dist/assets/Temml-CCjoacWt.woff2 +0 -0
  173. package/phanpy/dist/assets/__vite-browser-external-C7iut881.js +0 -2
  174. package/phanpy/dist/assets/__vite-browser-external-C7iut881.js.map +0 -1
  175. package/phanpy/dist/assets/boosts-carousel-BiOaNdMT.jpg +0 -0
  176. package/phanpy/dist/assets/catch-up-O5q5C75Z.png +0 -0
  177. package/phanpy/dist/assets/chunk-aKtaBQYM.js +0 -1
  178. package/phanpy/dist/assets/compose-CFEx7wb4.js +0 -2
  179. package/phanpy/dist/assets/compose-CFEx7wb4.js.map +0 -1
  180. package/phanpy/dist/assets/compose-ZJN5xSb4.js +0 -35
  181. package/phanpy/dist/assets/compose-ZJN5xSb4.js.map +0 -1
  182. package/phanpy/dist/assets/debug.module-YFQgwnIr.js +0 -52
  183. package/phanpy/dist/assets/debug.module-YFQgwnIr.js.map +0 -1
  184. package/phanpy/dist/assets/dom-p1YcJ5Rw.js +0 -2
  185. package/phanpy/dist/assets/dom-p1YcJ5Rw.js.map +0 -1
  186. package/phanpy/dist/assets/home-mobile-dark@2x-Dc-J8-SM.png +0 -0
  187. package/phanpy/dist/assets/home-mobile-light@2x-Bd3fod8m.png +0 -0
  188. package/phanpy/dist/assets/home-tablet-dark@2x-BgcNI8le.png +0 -0
  189. package/phanpy/dist/assets/home-tablet-light@2x-BW2RV9T6.png +0 -0
  190. package/phanpy/dist/assets/icons/add-circle-line-WD0mwORD.js +0 -1
  191. package/phanpy/dist/assets/icons/alert-line-CpFUMf9s.js +0 -1
  192. package/phanpy/dist/assets/icons/android-2-line-Bzxnrd3S.js +0 -1
  193. package/phanpy/dist/assets/icons/announcement-line-5nwaJFJm.js +0 -1
  194. package/phanpy/dist/assets/icons/arrow-down-circle-line-a7Id9-Iv.js +0 -1
  195. package/phanpy/dist/assets/icons/arrow-down-line-B8uzXzq6.js +0 -1
  196. package/phanpy/dist/assets/icons/arrow-left-line-CGrGT9C-.js +0 -1
  197. package/phanpy/dist/assets/icons/arrow-right-line-CE-HERfX.js +0 -1
  198. package/phanpy/dist/assets/icons/arrow-to-up-line-CvdQjmcy.js +0 -1
  199. package/phanpy/dist/assets/icons/arrow-up-circle-line-DEparSNF.js +0 -1
  200. package/phanpy/dist/assets/icons/arrow-up-line-C7yBeugc.js +0 -1
  201. package/phanpy/dist/assets/icons/arrows-right-line-BtbXmJGP.js +0 -1
  202. package/phanpy/dist/assets/icons/at-line-CF66Bznk.js +0 -1
  203. package/phanpy/dist/assets/icons/attachment-line-BY8It-l9.js +0 -1
  204. package/phanpy/dist/assets/icons/blockquote-line-BS6pU_hm.js +0 -1
  205. package/phanpy/dist/assets/icons/board-line-C0UWXyA6.js +0 -1
  206. package/phanpy/dist/assets/icons/bookmark-line-1CtX5JLF.js +0 -1
  207. package/phanpy/dist/assets/icons/building-5-line-Dd59MzbO.js +0 -1
  208. package/phanpy/dist/assets/icons/bus-2-line-6_dvA0GG.js +0 -1
  209. package/phanpy/dist/assets/icons/calendar-day-line-Crpl_fmu.js +0 -1
  210. package/phanpy/dist/assets/icons/calendar-month-line-vommts2C.js +0 -1
  211. package/phanpy/dist/assets/icons/calendar-time-add-line-BU_DTlQk.js +0 -1
  212. package/phanpy/dist/assets/icons/camera-line-Cv69MEei.js +0 -1
  213. package/phanpy/dist/assets/icons/celebrate-line-B8DvIoi0.js +0 -1
  214. package/phanpy/dist/assets/icons/chart-bar-line-FK-QOmtF.js +0 -1
  215. package/phanpy/dist/assets/icons/chart-line-line-BGcJAFWw.js +0 -1
  216. package/phanpy/dist/assets/icons/chat-3-line-YFK2-hwz.js +0 -1
  217. package/phanpy/dist/assets/icons/check-circle-line-DsAxFr5-.js +0 -1
  218. package/phanpy/dist/assets/icons/clipboard-line-BBp364gJ.js +0 -1
  219. package/phanpy/dist/assets/icons/close-circle-line-CICdiuGz.js +0 -1
  220. package/phanpy/dist/assets/icons/close-line-DYrFWcjv.js +0 -1
  221. package/phanpy/dist/assets/icons/cloud-line-tiQAbah8.js +0 -1
  222. package/phanpy/dist/assets/icons/code-line-fAl8iiV3.js +0 -1
  223. package/phanpy/dist/assets/icons/comment-2-line-CR3g7WeB.js +0 -1
  224. package/phanpy/dist/assets/icons/copy-2-line-CLW69yF5.js +0 -1
  225. package/phanpy/dist/assets/icons/delete-2-line-B8xmbr4n.js +0 -1
  226. package/phanpy/dist/assets/icons/document-3-line-DBGNhAg2.js +0 -1
  227. package/phanpy/dist/assets/icons/document-line-C7mb9sb7.js +0 -1
  228. package/phanpy/dist/assets/icons/down-line-BGqSSThd.js +0 -1
  229. package/phanpy/dist/assets/icons/edit-4-line-DcgGaEhx.js +0 -1
  230. package/phanpy/dist/assets/icons/emoji-2-line-D8YgnM-y.js +0 -1
  231. package/phanpy/dist/assets/icons/exit-line-Dc07BS-x.js +0 -1
  232. package/phanpy/dist/assets/icons/external-link-line-BvpSkmjO.js +0 -1
  233. package/phanpy/dist/assets/icons/eye-2-line-CiWXx-f_.js +0 -1
  234. package/phanpy/dist/assets/icons/eye-close-line-BgTaSJ4P.js +0 -1
  235. package/phanpy/dist/assets/icons/filter-2-line-B_mR2usy.js +0 -1
  236. package/phanpy/dist/assets/icons/filter-line-C_nm-3cU.js +0 -1
  237. package/phanpy/dist/assets/icons/flag-1-line-C2HB05I0.js +0 -1
  238. package/phanpy/dist/assets/icons/forbid-circle-line-D3LTT9yd.js +0 -1
  239. package/phanpy/dist/assets/icons/formula-line-DLrt2d6j.js +0 -1
  240. package/phanpy/dist/assets/icons/grid-line-CgUmEikf.js +0 -1
  241. package/phanpy/dist/assets/icons/group-line-C5fnX0wU.js +0 -1
  242. package/phanpy/dist/assets/icons/hand-finger-2-line-BGgxbuL9.js +0 -1
  243. package/phanpy/dist/assets/icons/hashtag-line-CyTEEXBb.js +0 -1
  244. package/phanpy/dist/assets/icons/heart-crack-line-BZddbO2C.js +0 -1
  245. package/phanpy/dist/assets/icons/heart-line-CJ7K47J4.js +0 -1
  246. package/phanpy/dist/assets/icons/history-2-line-kWWvFzqv.js +0 -1
  247. package/phanpy/dist/assets/icons/history-line-bGQiwbTH.js +0 -1
  248. package/phanpy/dist/assets/icons/home-3-line-fRU1zeLG.js +0 -1
  249. package/phanpy/dist/assets/icons/information-line-iNk6-sOY.js +0 -1
  250. package/phanpy/dist/assets/icons/keyboard-line-DsCyuQNz.js +0 -1
  251. package/phanpy/dist/assets/icons/layout-4-line-CZkOX52Z.js +0 -1
  252. package/phanpy/dist/assets/icons/layout-5-line-B_znt5wO.js +0 -1
  253. package/phanpy/dist/assets/icons/left-line-eUw0tya4.js +0 -1
  254. package/phanpy/dist/assets/icons/lightning-line-DaKoDdix.js +0 -1
  255. package/phanpy/dist/assets/icons/link-2-line-DCqLmMA7.js +0 -1
  256. package/phanpy/dist/assets/icons/list-check-line-BAxosBh9.js +0 -1
  257. package/phanpy/dist/assets/icons/lock-line-CPoaXeUW.js +0 -1
  258. package/phanpy/dist/assets/icons/mail-line-B0P8aa1L.js +0 -1
  259. package/phanpy/dist/assets/icons/moon-line-CEqNAToP.js +0 -1
  260. package/phanpy/dist/assets/icons/more-1-fill-Dw2e5xab.js +0 -1
  261. package/phanpy/dist/assets/icons/more-3-line-BIiVjYTz.js +0 -1
  262. package/phanpy/dist/assets/icons/notification-line-BZZq2Gtu.js +0 -1
  263. package/phanpy/dist/assets/icons/pencil-line-CKh8-A1v.js +0 -1
  264. package/phanpy/dist/assets/icons/photo-album-line-Bnfg2u40.js +0 -1
  265. package/phanpy/dist/assets/icons/pin-line-DpTolyhs.js +0 -1
  266. package/phanpy/dist/assets/icons/play-fill-B0-G_8lX.js +0 -1
  267. package/phanpy/dist/assets/icons/qrcode-2-line-B6SPCaHn.js +0 -1
  268. package/phanpy/dist/assets/icons/quill-pen-line-B6LUrnCP.js +0 -1
  269. package/phanpy/dist/assets/icons/quote-left-fill-hQZ1cj_6.js +0 -1
  270. package/phanpy/dist/assets/icons/radar-line-CKyroTth.js +0 -1
  271. package/phanpy/dist/assets/icons/react-line-CoIKhhtK.js +0 -1
  272. package/phanpy/dist/assets/icons/refresh-2-line-D0mTF97S.js +0 -1
  273. package/phanpy/dist/assets/icons/right-line-B3KWJaqc.js +0 -1
  274. package/phanpy/dist/assets/icons/rocket-line-4KZl537D.js +0 -1
  275. package/phanpy/dist/assets/icons/round-fill-C69NTrZ0.js +0 -1
  276. package/phanpy/dist/assets/icons/round-line-B9k_1uo-.js +0 -1
  277. package/phanpy/dist/assets/icons/route-line-B28ReHcE.js +0 -1
  278. package/phanpy/dist/assets/icons/rows-4-line-CrBniagM.js +0 -1
  279. package/phanpy/dist/assets/icons/scan-line-DSf74YdP.js +0 -1
  280. package/phanpy/dist/assets/icons/search-2-line-B6geIU1z.js +0 -1
  281. package/phanpy/dist/assets/icons/settings-3-line-azJwK47w.js +0 -1
  282. package/phanpy/dist/assets/icons/settings-6-line-C_5zc5YR.js +0 -1
  283. package/phanpy/dist/assets/icons/share-2-line-D5MxWjrm.js +0 -1
  284. package/phanpy/dist/assets/icons/share-forward-line-Cp61fZzZ.js +0 -1
  285. package/phanpy/dist/assets/icons/sparkles-2-line-DYYyXTaW.js +0 -1
  286. package/phanpy/dist/assets/icons/sparkles-line-C2hY1s6I.js +0 -1
  287. package/phanpy/dist/assets/icons/time-line-BF3eet1v.js +0 -1
  288. package/phanpy/dist/assets/icons/transfer-4-line-oisfvTBw.js +0 -1
  289. package/phanpy/dist/assets/icons/translate-line-BFWol2Ce.js +0 -1
  290. package/phanpy/dist/assets/icons/unlock-line-X_x5vwv3.js +0 -1
  291. package/phanpy/dist/assets/icons/upload-3-line-DgzwUJeW.js +0 -1
  292. package/phanpy/dist/assets/icons/user-4-line-BVSynZCp.js +0 -1
  293. package/phanpy/dist/assets/icons/user-add-2-line-BlGS5Q8q.js +0 -1
  294. package/phanpy/dist/assets/icons/user-add-line-BbXdHG4z.js +0 -1
  295. package/phanpy/dist/assets/icons/user-edit-line-BFAHOV0X.js +0 -1
  296. package/phanpy/dist/assets/icons/user-follow-line-BXux0wSd.js +0 -1
  297. package/phanpy/dist/assets/icons/user-star-line-DdYlpHLU.js +0 -1
  298. package/phanpy/dist/assets/icons/user-warning-line-Cj43j0_E.js +0 -1
  299. package/phanpy/dist/assets/icons/user-x-line-DIDgNlPH.js +0 -1
  300. package/phanpy/dist/assets/icons/volume-line-Bs390KQt.js +0 -1
  301. package/phanpy/dist/assets/icons/volume-mute-line-DzlzIqFZ.js +0 -1
  302. package/phanpy/dist/assets/icons/walk-line-yNXfB-md.js +0 -1
  303. package/phanpy/dist/assets/icons/world-2-line-CenkGIwj.js +0 -1
  304. package/phanpy/dist/assets/icons/zoom-in-line-CaENUphf.js +0 -1
  305. package/phanpy/dist/assets/icons/zoom-out-line-BDNk0EWo.js +0 -1
  306. package/phanpy/dist/assets/instances-BNPptnn-.json +0 -333
  307. package/phanpy/dist/assets/locales/ar-SA-CfheRbCu.js +0 -1
  308. package/phanpy/dist/assets/locales/ca-ES-DHRW86Tz.js +0 -1
  309. package/phanpy/dist/assets/locales/cs-CZ-CKoqEuA1.js +0 -1
  310. package/phanpy/dist/assets/locales/de-DE-ByRPMRFy.js +0 -1
  311. package/phanpy/dist/assets/locales/eo-UY-CPC7wLCS.js +0 -1
  312. package/phanpy/dist/assets/locales/es-ES-dJa0Fd9t.js +0 -1
  313. package/phanpy/dist/assets/locales/eu-ES-C3djlPR2.js +0 -1
  314. package/phanpy/dist/assets/locales/fa-IR-DTT490Ck.js +0 -1
  315. package/phanpy/dist/assets/locales/fi-FI-B23MCPuz.js +0 -1
  316. package/phanpy/dist/assets/locales/fr-FR-BcaQsO5C.js +0 -1
  317. package/phanpy/dist/assets/locales/gl-ES-BR-CVKBN.js +0 -1
  318. package/phanpy/dist/assets/locales/he-IL-CfheRbCu.js +0 -1
  319. package/phanpy/dist/assets/locales/hu-HU-CfheRbCu.js +0 -1
  320. package/phanpy/dist/assets/locales/it-IT-C1136UFV.js +0 -1
  321. package/phanpy/dist/assets/locales/ja-JP-CRZmRAhD.js +0 -1
  322. package/phanpy/dist/assets/locales/kab-Cz8xH_TT.js +0 -1
  323. package/phanpy/dist/assets/locales/ko-KR-CG9UiY4o.js +0 -1
  324. package/phanpy/dist/assets/locales/lt-LT-CJcI6sHZ.js +0 -1
  325. package/phanpy/dist/assets/locales/nb-NO-CfheRbCu.js +0 -1
  326. package/phanpy/dist/assets/locales/nl-NL-DxN4Yc1t.js +0 -1
  327. package/phanpy/dist/assets/locales/oc-FR-CfheRbCu.js +0 -1
  328. package/phanpy/dist/assets/locales/pl-PL-DkwGXf6P.js +0 -1
  329. package/phanpy/dist/assets/locales/pseudo-LOCALE-CQ4XxkQ0.js +0 -1
  330. package/phanpy/dist/assets/locales/pt-BR-nGL0HdFS.js +0 -1
  331. package/phanpy/dist/assets/locales/pt-PT-Cp17aj2z.js +0 -1
  332. package/phanpy/dist/assets/locales/ru-RU-0Y8cIoaK.js +0 -1
  333. package/phanpy/dist/assets/locales/th-TH-CfheRbCu.js +0 -1
  334. package/phanpy/dist/assets/locales/tok-CfheRbCu.js +0 -1
  335. package/phanpy/dist/assets/locales/tr-TR-CfheRbCu.js +0 -1
  336. package/phanpy/dist/assets/locales/uk-UA-C5E3dFBf.js +0 -1
  337. package/phanpy/dist/assets/locales/zh-CN-BHJi7_et.js +0 -1
  338. package/phanpy/dist/assets/locales/zh-TW-CfheRbCu.js +0 -1
  339. package/phanpy/dist/assets/main-BdqNbG-a.js +0 -26
  340. package/phanpy/dist/assets/main-BdqNbG-a.js.map +0 -1
  341. package/phanpy/dist/assets/mock-home-DGhR__He.js +0 -2
  342. package/phanpy/dist/assets/mock-home-DGhR__He.js.map +0 -1
  343. package/phanpy/dist/assets/multi-column-ROck0NVt.jpg +0 -0
  344. package/phanpy/dist/assets/multi-hashtag-timeline-DH5INVHi.jpg +0 -0
  345. package/phanpy/dist/assets/nested-comments-thread-hv59kZLc.jpg +0 -0
  346. package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js +0 -2
  347. package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js.map +0 -1
  348. package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js +0 -20
  349. package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js.map +0 -1
  350. package/phanpy/dist/assets/style-B1iLPTPR.css +0 -2
  351. package/phanpy/dist/assets/temml-DuyIQMei.js +0 -97
  352. package/phanpy/dist/assets/temml-DuyIQMei.js.map +0 -1
  353. package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js +0 -2
  354. package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js.map +0 -1
  355. package/phanpy/dist/assets/year-in-posts-B2lywqdx.png +0 -0
  356. package/phanpy/dist/assets/year-in-posts-DJv_star.js +0 -3
  357. package/phanpy/dist/assets/year-in-posts-DJv_star.js.map +0 -1
  358. package/phanpy/dist/compose/index.html +0 -20
  359. package/phanpy/dist/favicon.ico +0 -0
  360. package/phanpy/dist/index.html +0 -73
  361. package/phanpy/dist/logo-192.png +0 -0
  362. package/phanpy/dist/logo-512.png +0 -0
  363. package/phanpy/dist/logo-badge-72.png +0 -0
  364. package/phanpy/dist/logo-maskable-512.png +0 -0
  365. package/phanpy/dist/logo-monochrome-512.png +0 -0
  366. package/phanpy/dist/logo-monochrome-maskable-512.png +0 -0
  367. package/phanpy/dist/manifest.webmanifest +0 -1
  368. package/phanpy/dist/og-image-2.jpg +0 -0
  369. package/phanpy/dist/og-image.png +0 -0
  370. package/phanpy/dist/robots.txt +0 -2
  371. package/phanpy/dist/sw.js +0 -2
  372. package/phanpy/dist/sw.js.map +0 -1
  373. package/phanpy/dist/version.json +0 -1
  374. package/run-agent.mjs +0 -899
  375. package/vendor/gate.cjs +0 -138
  376. package/vendor/idp-grant.cjs +0 -394
  377. package/vendor/jfetch.cjs +0 -16
  378. package/web/admin/actors.js +0 -147
  379. package/web/admin/bar.css +0 -126
  380. package/web/admin/bar.js +0 -99
  381. package/web/admin/client/client.js +0 -66
  382. package/web/admin/client/index.html +0 -69
  383. package/web/admin/client-pick.js +0 -79
  384. package/web/admin/common.js +0 -23
  385. package/web/admin/connections.js +0 -112
  386. package/web/admin/gateway.js +0 -133
  387. package/web/admin/group.js +0 -258
  388. package/web/admin/index.html +0 -612
  389. package/web/admin/notices-bar.js +0 -90
  390. package/web/admin/oauth-signin.mjs +0 -37
  391. package/web/admin/record.js +0 -393
  392. package/web/admin/setup/index.html +0 -257
  393. package/web/admin/setup/setup.js +0 -339
  394. package/web/admin/tokens.css +0 -68
  395. package/web/admin/upkeep.js +0 -177
  396. package/web/admin/window.css +0 -55
  397. package/web/admin/window.js +0 -136
  398. package/web/app/README.md +0 -81
  399. package/web/app/admin-facade.mjs +0 -588
  400. package/web/app/agent.mjs +0 -672
  401. package/web/app/atproto-browser.mjs +0 -86
  402. package/web/app/authorize_interaction.html +0 -56
  403. package/web/app/authorize_interaction.js +0 -69
  404. package/web/app/boot.mjs +0 -616
  405. package/web/app/deliver-relay.mjs +0 -129
  406. package/web/app/dist/boot.js +0 -34562
  407. package/web/app/dist/boot.js.map +0 -7
  408. package/web/app/dist/sw.js +0 -73456
  409. package/web/app/dist/sw.js.map +0 -7
  410. package/web/app/fediacct-browser.mjs +0 -146
  411. package/web/app/gateway-move.mjs +0 -60
  412. package/web/app/idb-kv.mjs +0 -35
  413. package/web/app/index.html +0 -258
  414. package/web/app/keys-browser.mjs +0 -71
  415. package/web/app/keystore.mjs +0 -82
  416. package/web/app/oidc-session.mjs +0 -6
  417. package/web/app/pod-auth.mjs +0 -248
  418. package/web/app/pod-remote.mjs +0 -84
  419. package/web/app/shims/_globals.mjs +0 -2
  420. package/web/app/shims/fedify-sig.mjs +0 -77
  421. package/web/app/shims/node-crypto.mjs +0 -113
  422. package/web/app/shims/node-fs.mjs +0 -17
  423. package/web/app/shims/node-path.mjs +0 -19
  424. package/web/app/shims/node-url.mjs +0 -7
  425. package/web/app/shims/prelude.js +0 -58
  426. package/web/app/shims/safefetch.mjs +0 -58
  427. package/web/app/shims/shapes-text.mjs +0 -8
  428. package/web/app/shims/web-push.mjs +0 -14
  429. package/web/app/signup.mjs +0 -357
  430. package/web/app/sw-src.mjs +0 -220
  431. package/web/app/update.js +0 -70
  432. package/web/front/admin.html +0 -55
  433. package/web/front/admin.js +0 -89
  434. package/web/front/install.sh +0 -69
  435. package/web/front/new-account.html +0 -35
  436. package/web/front/new-account.js +0 -13
  437. package/web/front/notices.html +0 -69
  438. package/web/front/notices.js +0 -107
  439. package/web/front/run.html +0 -64
  440. package/web/front/run.js +0 -221
  441. package/web/front/solid-oidc-client.js +0 -6
  442. package/web/icons/forum.svg +0 -11
  443. package/web/icons/gateway.svg +0 -14
  444. package/web/icons/local.svg +0 -11
@@ -1,327 +0,0 @@
1
- // graphview.mjs — what the handlers read.
2
- //
3
- // `parseAS2` produces quads. This turns them back into something a handler can
4
- // read by name, so the thing being read is the GRAPH: every property access
5
- // here is a lookup over statements, not a key on the JSON a stranger sent.
6
- //
7
- // That distinction is the whole point. A document can say the same thing in
8
- // many ways — `"type": "Create"`, `"@type": "as:Create"`, a term aliased by the
9
- // sender's own context — and all of them leave the same statement in the
10
- // graph. Reading the graph means a handler sees one answer without knowing any
11
- // of that happened.
12
- //
13
- // Names are resolved through the contexts we already hold, AS2 first. They are
14
- // not hardcoded: `movedTo` is not in the AS2 context at all (it lives in
15
- // miscellany), and `inbox` is `ldp:inbox` rather than an `as:` term, so a map
16
- // written by hand would get both wrong.
17
-
18
- import { CONTEXTS } from './contexts/index.mjs';
19
- import { AS_CTX } from './wire.mjs';
20
-
21
- const RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
22
- const RDF_FIRST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first';
23
- const RDF_REST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest';
24
- const RDF_NIL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil';
25
-
26
- // Properties a handler treats as a collection. JSON-LD compaction would hand
27
- // back a bare value when there is only one, and `Array.isArray` checks in the
28
- // handlers then read it as empty. These always answer with an array.
29
- // A stranger's document decides the shape of this graph, so the walk is capped
30
- // rather than trusted to terminate on its own.
31
- const MAX_DEPTH = 12;
32
-
33
- const ALWAYS_LIST = new Set([
34
- 'items', 'orderedItems', 'to', 'cc', 'bto', 'bcc', 'tag', 'attachment',
35
- 'anyOf', 'oneOf', 'audience', 'attributedTo', 'alsoKnownAs',
36
- ]);
37
-
38
- /** Expand `as:object` against a context's own prefix declarations. */
39
- function expandIri(value, prefixes) {
40
- if (typeof value !== 'string') return null;
41
- if (/^https?:\/\//.test(value)) return value;
42
- const colon = value.indexOf(':');
43
- if (colon < 1) return null;
44
- const base = prefixes[value.slice(0, colon)];
45
- return base ? base + value.slice(colon + 1) : null;
46
- }
47
-
48
- /**
49
- * term -> { iri, list } over every context we hold, AS2 winning ties.
50
- *
51
- * Built once. A term already claimed by an earlier context is not overwritten,
52
- * and AS2 is walked first, so an extension cannot quietly redefine `object`.
53
- */
54
- function buildTerms() {
55
- const terms = new Map();
56
- const order = [AS_CTX, ...Object.keys(CONTEXTS).filter(u => u !== AS_CTX)];
57
- for (const url of order) {
58
- const body = CONTEXTS[url]?.['@context'];
59
- // A context document's body is one term map, or a list mixing URLs of
60
- // other contexts with term maps — the litepub schema is the second shape.
61
- // The URLs are held on their own; only the maps carry terms.
62
- const maps = (Array.isArray(body) ? body : [body]).filter(c => c && typeof c === 'object');
63
- if (!maps.length) continue;
64
- const ctx = Object.assign({}, ...maps);
65
- const prefixes = {};
66
- for (const [k, v] of Object.entries(ctx)) {
67
- if (typeof v === 'string' && /^https?:\/\//.test(v)) prefixes[k] = v;
68
- }
69
- for (const [name, def] of Object.entries(ctx)) {
70
- if (name.startsWith('@') || terms.has(name)) continue;
71
- const raw = typeof def === 'string' ? def : def?.['@id'];
72
- const iri = expandIri(raw, prefixes);
73
- if (!iri) continue;
74
- terms.set(name, { iri, list: def?.['@container'] === '@list', container: def?.['@container'] ?? null });
75
- }
76
- }
77
- return terms;
78
- }
79
-
80
- const TERMS = buildTerms();
81
-
82
- /** iri -> shortest term naming it, so a type comes back as `Create`. */
83
- const BY_IRI = (() => {
84
- const m = new Map();
85
- for (const [name, { iri }] of TERMS) {
86
- const held = m.get(iri);
87
- if (!held || name.length < held.length) m.set(iri, name);
88
- }
89
- return m;
90
- })();
91
-
92
- /**
93
- * iri -> every term naming it.
94
- *
95
- * More than one term can mean the same predicate: `items` and `orderedItems`
96
- * are both `as:items`, and only the list tells them apart. Emitting just the
97
- * shorter name would lose `orderedItems` — and with it the ordering, which is
98
- * the one thing an OrderedCollection is for.
99
- */
100
- const NAMES_BY_IRI = (() => {
101
- const m = new Map();
102
- for (const [name, { iri, container }] of TERMS) {
103
- // `contentMap` and `content` are the same predicate, but a language map is
104
- // not another spelling of the plain term — emitting one as a bare string
105
- // would invent a value the document never carried.
106
- if (container === '@language' || container === '@index') continue;
107
- const held = m.get(iri);
108
- if (held) held.push(name); else m.set(iri, [name]);
109
- }
110
- return m;
111
- })();
112
-
113
- /** Index quads by subject, then by predicate. */
114
- function indexQuads(quads) {
115
- const bySubject = new Map();
116
- const objects = new Set();
117
- // A BlankNode's `.value` has no `_:` on it, so blankness is recorded here
118
- // rather than guessed from the string. A blank node has no id, and handing a
119
- // handler `id: "b0"` would be handing it an identifier that means nothing.
120
- const blanks = new Set();
121
- for (const q of quads) {
122
- if (q.subject.termType === 'BlankNode') blanks.add(q.subject.value);
123
- if (q.object.termType === 'BlankNode') blanks.add(q.object.value);
124
- const s = q.subject.value;
125
- let preds = bySubject.get(s);
126
- if (!preds) bySubject.set(s, preds = new Map());
127
- let vals = preds.get(q.predicate.value);
128
- if (!vals) preds.set(q.predicate.value, vals = []);
129
- vals.push(q.object);
130
- if (q.object.termType === 'NamedNode' || q.object.termType === 'BlankNode') {
131
- objects.add(q.object.value);
132
- }
133
- }
134
- return { bySubject, objects, blanks };
135
- }
136
-
137
- /**
138
- * The document's own node, when the caller could not name it.
139
- *
140
- * A named subject nothing points at is the plain case. But an actor is
141
- * pointed at by its own key (`owner`), so it is never that; and taking "the
142
- * first typed subject" instead handed back a profile field — a blank
143
- * PropertyValue that happens to come first in quad order — for every
144
- * Mastodon actor with fields on it. Named subjects therefore come before
145
- * blank ones at every step, and a blank node is the root only when nothing
146
- * named exists at all.
147
- */
148
- function findRoot({ bySubject, objects, blanks }) {
149
- const all = [...bySubject.keys()];
150
- const named = all.filter((s) => !blanks.has(s));
151
- // A subject nothing points at is the document's own node — named if there
152
- // is one, else blank: a client's Update carries no id of its own and is a
153
- // blank root above the named note it edits.
154
- const free = all.filter((s) => !objects.has(s));
155
- const freeNamed = free.find((s) => !blanks.has(s));
156
- if (freeNamed) return freeNamed;
157
- if (free.length) return free[0];
158
- // Everything is pointed at (an actor, through its key's owner): a typed
159
- // named subject, before any typed blank one.
160
- for (const s of named) if (bySubject.get(s).has(RDF_TYPE)) return s;
161
- for (const s of all) if (bySubject.get(s).has(RDF_TYPE)) return s;
162
- return named[0] ?? all[0] ?? null;
163
- }
164
-
165
- /** Walk an rdf:List into an ordered array. `orderedItems` depends on this. */
166
- function readList(head, ctx, depth, path) {
167
- const out = [];
168
- const walked = new Set();
169
- let node = head;
170
- while (node && node !== RDF_NIL && !walked.has(node)) {
171
- walked.add(node);
172
- const preds = ctx.bySubject.get(node);
173
- if (!preds) break;
174
- const first = preds.get(RDF_FIRST)?.[0];
175
- if (first) {
176
- const value = toValue(first, ctx, depth, path);
177
- if (value !== null) out.push(value);
178
- }
179
- node = preds.get(RDF_REST)?.[0]?.value ?? null;
180
- }
181
- return out;
182
- }
183
-
184
- function isListHead(term, ctx) {
185
- if (term.termType !== 'BlankNode' && term.termType !== 'NamedNode') return false;
186
- return !!ctx.bySubject.get(term.value)?.has(RDF_FIRST);
187
- }
188
-
189
- /**
190
- * A term becomes what a handler expects to find there.
191
- *
192
- * A node we hold statements about becomes a nested view, which is what an
193
- * embedded object was in the JSON. A node we hold nothing about becomes its
194
- * IRI, which is what a bare reference was. Handlers already test which they
195
- * got (`typeof activity.object === 'object'`), so both stay readable.
196
- */
197
- // A literal's `.value` is its LEXICAL form, which is a string whatever the
198
- // literal meant: `false` written in JSON-LD arrives here as the four characters
199
- // "false", and `42` as two digits. Every handler downstream then reads a string
200
- // where the document said a boolean or a number — and `!!"false"` is true, which
201
- // is how a moderator's reopen was applied as another close.
202
- //
203
- // So the two datatypes whose lexical form lies about the value are turned back.
204
- // Everything else is left exactly as it was, dates above all: a timestamp is
205
- // carried, compared and republished as its string everywhere in this project,
206
- // and "helpfully" turning it into a Date would break all of it.
207
- const XSD = 'http://www.w3.org/2001/XMLSchema#';
208
- const NUMERIC = new Set(['integer', 'decimal', 'double', 'float', 'long', 'int', 'short', 'byte',
209
- 'nonNegativeInteger', 'positiveInteger', 'nonPositiveInteger', 'negativeInteger',
210
- 'unsignedLong', 'unsignedInt', 'unsignedShort', 'unsignedByte'].map(t => XSD + t));
211
-
212
- function fromLiteral(term) {
213
- const type = term.datatype?.value || '';
214
- if (type === `${XSD}boolean`) {
215
- // The lexical space of xsd:boolean is exactly these four. Anything else is
216
- // not a boolean the document can have meant, so it stays as it was written.
217
- if (term.value === 'true' || term.value === '1') return true;
218
- if (term.value === 'false' || term.value === '0') return false;
219
- return term.value;
220
- }
221
- if (NUMERIC.has(type)) {
222
- const n = Number(term.value);
223
- // A numeric literal that will not parse is malformed; handing back NaN
224
- // would lose what the document actually said.
225
- return Number.isFinite(n) ? n : term.value;
226
- }
227
- return term.value;
228
- }
229
-
230
- function toValue(term, ctx, depth, path) {
231
- if (term.termType === 'Literal') return fromLiteral(term);
232
- if (isListHead(term, ctx)) return readList(term.value, ctx, depth, path);
233
- const preds = ctx.bySubject.get(term.value);
234
- if (preds && preds.size) return makeView(term.value, ctx, depth + 1, path);
235
- return term.termType === 'BlankNode' ? null : term.value;
236
- }
237
-
238
- function readProperty(subject, name, ctx, depth = 0, path = new Set()) {
239
- const preds = ctx.bySubject.get(subject);
240
- if (!preds) return undefined;
241
-
242
- if (name === 'id') return ctx.blanks.has(subject) ? undefined : subject;
243
- if (name === 'type') {
244
- const types = (preds.get(RDF_TYPE) ?? []).map(t => BY_IRI.get(t.value) ?? t.value);
245
- if (!types.length) return undefined;
246
- return types.length === 1 ? types[0] : types;
247
- }
248
-
249
- const term = TERMS.get(name);
250
- if (!term) return undefined;
251
- const values = preds.get(term.iri);
252
- if (!values || !values.length) return undefined;
253
-
254
- // `items` and `orderedItems` are the same predicate; the list is what tells
255
- // them apart, so asking for the ordered one only answers when it is ordered.
256
- const listed = values.filter(v => isListHead(v, ctx));
257
- if (term.list) {
258
- if (!listed.length) return undefined;
259
- return readList(listed[0].value, ctx, depth, path);
260
- }
261
- if (listed.length === values.length && listed.length === 1) return readList(listed[0].value, ctx, depth, path);
262
-
263
- const out = values.map(v => toValue(v, ctx, depth, path)).filter(v => v !== null);
264
- if (ALWAYS_LIST.has(name)) return out.flat();
265
- return out.length === 1 ? out[0] : out;
266
- }
267
-
268
- /**
269
- * Build the plain object for one node.
270
- *
271
- * Materialised rather than proxied on purpose. A lazy reader would still be
272
- * reading the graph, but it would be an exotic object, and the handlers pass
273
- * what they read on to things that spread it, serialise it and structuredClone
274
- * it into the store — all of which a Proxy either breaks or quietly truncates.
275
- * What comes out here is an ordinary object whose every value came from a
276
- * statement.
277
- *
278
- * `depth` and `seen` are the guards. The graph is built from a stranger's
279
- * document, so it can be cyclic or enormous; a node already on the path
280
- * becomes its IRI rather than being walked again.
281
- */
282
- function makeView(subject, ctx, depth = 0, seen = new Set()) {
283
- if (depth > MAX_DEPTH || seen.has(subject)) {
284
- return ctx.blanks.has(subject) ? null : subject;
285
- }
286
- const preds = ctx.bySubject.get(subject);
287
- if (!preds) return ctx.blanks.has(subject) ? null : subject;
288
-
289
- const path = new Set(seen).add(subject);
290
- const out = {};
291
- const id = readProperty(subject, 'id', ctx, depth, path);
292
- if (id !== undefined) out.id = id;
293
- const type = readProperty(subject, 'type', ctx, depth, path);
294
- if (type !== undefined) out.type = type;
295
-
296
- for (const predicate of preds.keys()) {
297
- if (predicate === RDF_TYPE || predicate === RDF_FIRST || predicate === RDF_REST) continue;
298
- // A predicate no context we hold names cannot be asked for by name, so it
299
- // is left out rather than carried under an IRI no handler would look up.
300
- for (const name of NAMES_BY_IRI.get(predicate) ?? []) {
301
- if (name === 'id' || name === 'type') continue;
302
- const value = readProperty(subject, name, ctx, depth, path);
303
- if (value !== undefined) out[name] = value;
304
- }
305
- }
306
- return out;
307
- }
308
-
309
- /**
310
- * A reader over `parseAS2`'s quads.
311
- *
312
- * Returns null when there is nothing to read, which is the same answer the
313
- * document-shaped read gave for bytes that were not a document.
314
- */
315
- export function graphView(quads, { root = null } = {}) {
316
- if (!quads || !quads.length) return null;
317
- const ctx = indexQuads(quads);
318
- // The root the caller names is used only when the graph has it as a
319
- // subject: a document whose `id` names something it says nothing about
320
- // still reads as whatever it does describe.
321
- const subject = (root && ctx.bySubject.has(root)) ? root : findRoot(ctx);
322
- if (!subject) return null;
323
- const view = makeView(subject, ctx);
324
- return (view && typeof view === 'object') ? view : null;
325
- }
326
-
327
- export { TERMS, BY_IRI };