fedipod-server 0.29.0 → 0.30.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.
- package/README.md +11 -6
- package/dist/door.d.ts +4 -0
- package/dist/door.js +31 -0
- package/dist/fedipod.d.ts +16 -0
- package/dist/fedipod.js +13 -0
- package/dist/front.d.ts +3 -0
- package/dist/front.js +94 -0
- package/dist/handler.d.ts +36 -101
- package/dist/handler.js +85 -645
- package/dist/handler.jsonld +2 -30
- package/dist/identities.d.ts +62 -0
- package/dist/identities.js +236 -0
- package/dist/mounts.d.ts +43 -0
- package/dist/mounts.js +123 -0
- package/dist/opt-in.d.ts +46 -0
- package/dist/opt-in.js +176 -0
- package/package.json +10 -18
- package/lib/client/c2s.mjs +0 -636
- package/lib/client/localapi.mjs +0 -87
- package/lib/client/masto/accounts.mjs +0 -310
- package/lib/client/masto/body.mjs +0 -156
- package/lib/client/masto/index.mjs +0 -206
- package/lib/client/masto/instance.mjs +0 -112
- package/lib/client/masto/media.mjs +0 -79
- package/lib/client/masto/oauth.mjs +0 -656
- package/lib/client/masto/render.mjs +0 -518
- package/lib/client/masto/statuses.mjs +0 -372
- package/lib/client/masto/timelines.mjs +0 -438
- package/lib/client/oidc-auth.mjs +0 -62
- package/lib/client/streaming.mjs +0 -154
- package/lib/client/webpush.mjs +0 -98
- package/lib/connections/acctfeed.mjs +0 -257
- package/lib/connections/atproto.mjs +0 -309
- package/lib/connections/bskyfeed.mjs +0 -243
- package/lib/connections/bskygroup.mjs +0 -162
- package/lib/connections/fediacct.mjs +0 -253
- package/lib/connections/import.mjs +0 -357
- package/lib/connections/tagfeed.mjs +0 -212
- package/lib/connections/vault.mjs +0 -114
- package/lib/core/as2.mjs +0 -206
- package/lib/core/contexts/activitystreams.json +0 -379
- package/lib/core/contexts/anno.json +0 -126
- package/lib/core/contexts/did-v1.json +0 -57
- package/lib/core/contexts/fep-5711.json +0 -36
- package/lib/core/contexts/gotosocial.json +0 -86
- package/lib/core/contexts/identity-v1.json +0 -152
- package/lib/core/contexts/index.mjs +0 -63
- package/lib/core/contexts/join-lemmy.json +0 -33
- package/lib/core/contexts/joinmastodon.json +0 -28
- package/lib/core/contexts/litepub-0.1.json +0 -60
- package/lib/core/contexts/map.json +0 -19
- package/lib/core/contexts/miscellany.json +0 -19
- package/lib/core/contexts/quotes.json +0 -18
- package/lib/core/contexts/schemaorg.json +0 -8845
- package/lib/core/contexts/security-data-integrity-v1.json +0 -78
- package/lib/core/contexts/security-data-integrity-v2.json +0 -81
- package/lib/core/contexts/security-multikey-v1.json +0 -35
- package/lib/core/contexts/security-v1.json +0 -74
- package/lib/core/contexts/webfinger.json +0 -10
- package/lib/core/deliver.mjs +0 -387
- package/lib/core/graphview.mjs +0 -327
- package/lib/core/intake/activities.mjs +0 -649
- package/lib/core/intake/activity.mjs +0 -318
- package/lib/core/intake/channel.mjs +0 -144
- package/lib/core/intake/group.mjs +0 -258
- package/lib/core/intake/index.mjs +0 -732
- package/lib/core/intake/notes.mjs +0 -367
- package/lib/core/intake/verify.mjs +0 -142
- package/lib/core/keys.mjs +0 -153
- package/lib/core/lease.mjs +0 -206
- package/lib/core/place.mjs +0 -82
- package/lib/core/polls.mjs +0 -105
- package/lib/core/profile-page.mjs +0 -104
- package/lib/core/proof.mjs +0 -79
- package/lib/core/publisher/collections.mjs +0 -272
- package/lib/core/publisher/index.mjs +0 -522
- package/lib/core/publisher/notes.mjs +0 -519
- package/lib/core/publisher/own.mjs +0 -143
- package/lib/core/publisher/questions.mjs +0 -241
- package/lib/core/publisher/restore.mjs +0 -224
- package/lib/core/shapes/activitystreams.ttl +0 -157
- package/lib/core/shapes/index.mjs +0 -132
- package/lib/core/shapes/shapes-text.mjs +0 -13
- package/lib/core/social.mjs +0 -561
- package/lib/core/storage.mjs +0 -176
- package/lib/core/store.mjs +0 -578
- package/lib/core/wire-quotes.mjs +0 -71
- package/lib/core/wire.mjs +0 -925
- package/lib/device/account.mjs +0 -87
- package/lib/device/admin/index.mjs +0 -13
- package/lib/device/admin/origins.mjs +0 -35
- package/lib/device/admin/routes/connections.mjs +0 -144
- package/lib/device/admin/routes/gateway.mjs +0 -199
- package/lib/device/admin/routes/lifecycle.mjs +0 -200
- package/lib/device/admin/routes/owner.mjs +0 -322
- package/lib/device/admin/routes/setup.mjs +0 -428
- package/lib/device/admin/routes/social.mjs +0 -188
- package/lib/device/admin/server.mjs +0 -95
- package/lib/device/admin/static.mjs +0 -247
- package/lib/device/admin/surface.mjs +0 -315
- package/lib/device/certs.mjs +0 -281
- package/lib/device/cli/commands/account.mjs +0 -586
- package/lib/device/cli/commands/run.mjs +0 -278
- package/lib/device/cli/commands/service.mjs +0 -221
- package/lib/device/cli/commands/setup.mjs +0 -489
- package/lib/device/cli/commands/state.mjs +0 -561
- package/lib/device/cli/context.mjs +0 -288
- package/lib/device/export-collections.mjs +0 -161
- package/lib/device/gateway-move.mjs +0 -58
- package/lib/device/home.mjs +0 -161
- package/lib/device/migrate.mjs +0 -115
- package/lib/device/ports.mjs +0 -27
- package/lib/device/remote.mjs +0 -54
- package/lib/device/setup.mjs +0 -496
- package/lib/device/update.mjs +0 -96
- package/lib/gateway/caches.mjs +0 -36
- package/lib/gateway/directory.mjs +0 -90
- package/lib/gateway/front-core.mjs +0 -966
- package/lib/gateway/gateway-core.mjs +0 -244
- package/lib/gateway/headers.mjs +0 -49
- package/lib/gateway/httpsig.mjs +0 -159
- package/lib/gateway/notices.mjs +0 -84
- package/lib/gateway/quiet.mjs +0 -189
- package/lib/gateway/relay-extras.mjs +0 -89
- package/lib/gateway/token-claims.mjs +0 -16
- package/lib/pod/README.md +0 -61
- package/lib/pod/actor.mjs +0 -96
- package/lib/pod/collection.mjs +0 -77
- package/lib/pod/containers.mjs +0 -140
- package/lib/pod/discovery.mjs +0 -46
- package/lib/pod/featured.mjs +0 -18
- package/lib/pod/followers.mjs +0 -24
- package/lib/pod/following.mjs +0 -10
- package/lib/pod/http.mjs +0 -74
- package/lib/pod/inbox.mjs +0 -166
- package/lib/pod/links.mjs +0 -35
- package/lib/pod/location.mjs +0 -52
- package/lib/pod/media.mjs +0 -27
- package/lib/pod/notes.mjs +0 -78
- package/lib/pod/notifications.mjs +0 -89
- package/lib/pod/outbox.mjs +0 -18
- package/lib/pod/package.json +0 -19
- package/lib/pod/policy.mjs +0 -58
- package/lib/pod/private.mjs +0 -19
- package/lib/pod/root.mjs +0 -104
- package/lib/pod/state.mjs +0 -40
- package/lib/pod/transport.mjs +0 -674
- package/lib/pod/type-index.mjs +0 -101
- package/lib/pod/urls.mjs +0 -91
- package/lib/server/embed.mjs +0 -424
- package/lib/session/README.md +0 -137
- package/lib/session/demo.html +0 -94
- package/lib/session/fedi-account.mjs +0 -417
- package/lib/session/fedi-login.mjs +0 -123
- package/lib/session/oidc-session.mjs +0 -233
- package/lib/session/package.json +0 -49
- package/lib/shared/guard.mjs +0 -213
- package/lib/shared/links.mjs +0 -9
- package/lib/shared/safefetch.mjs +0 -235
- package/lib/shared/ua.mjs +0 -29
- package/phanpy/dist/404.html +0 -40
- package/phanpy/dist/_headers +0 -2
- package/phanpy/dist/apple-touch-icon.png +0 -0
- package/phanpy/dist/assets/ICONS-DIPJeU0C.js +0 -2
- package/phanpy/dist/assets/ICONS-DIPJeU0C.js.map +0 -1
- package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js +0 -183
- package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js.map +0 -1
- package/phanpy/dist/assets/Temml-CCjoacWt.woff2 +0 -0
- package/phanpy/dist/assets/__vite-browser-external-C7iut881.js +0 -2
- package/phanpy/dist/assets/__vite-browser-external-C7iut881.js.map +0 -1
- package/phanpy/dist/assets/boosts-carousel-BiOaNdMT.jpg +0 -0
- package/phanpy/dist/assets/catch-up-O5q5C75Z.png +0 -0
- package/phanpy/dist/assets/chunk-aKtaBQYM.js +0 -1
- package/phanpy/dist/assets/compose-CFEx7wb4.js +0 -2
- package/phanpy/dist/assets/compose-CFEx7wb4.js.map +0 -1
- package/phanpy/dist/assets/compose-ZJN5xSb4.js +0 -35
- package/phanpy/dist/assets/compose-ZJN5xSb4.js.map +0 -1
- package/phanpy/dist/assets/debug.module-YFQgwnIr.js +0 -52
- package/phanpy/dist/assets/debug.module-YFQgwnIr.js.map +0 -1
- package/phanpy/dist/assets/dom-p1YcJ5Rw.js +0 -2
- package/phanpy/dist/assets/dom-p1YcJ5Rw.js.map +0 -1
- package/phanpy/dist/assets/home-mobile-dark@2x-Dc-J8-SM.png +0 -0
- package/phanpy/dist/assets/home-mobile-light@2x-Bd3fod8m.png +0 -0
- package/phanpy/dist/assets/home-tablet-dark@2x-BgcNI8le.png +0 -0
- package/phanpy/dist/assets/home-tablet-light@2x-BW2RV9T6.png +0 -0
- package/phanpy/dist/assets/icons/add-circle-line-WD0mwORD.js +0 -1
- package/phanpy/dist/assets/icons/alert-line-CpFUMf9s.js +0 -1
- package/phanpy/dist/assets/icons/android-2-line-Bzxnrd3S.js +0 -1
- package/phanpy/dist/assets/icons/announcement-line-5nwaJFJm.js +0 -1
- package/phanpy/dist/assets/icons/arrow-down-circle-line-a7Id9-Iv.js +0 -1
- package/phanpy/dist/assets/icons/arrow-down-line-B8uzXzq6.js +0 -1
- package/phanpy/dist/assets/icons/arrow-left-line-CGrGT9C-.js +0 -1
- package/phanpy/dist/assets/icons/arrow-right-line-CE-HERfX.js +0 -1
- package/phanpy/dist/assets/icons/arrow-to-up-line-CvdQjmcy.js +0 -1
- package/phanpy/dist/assets/icons/arrow-up-circle-line-DEparSNF.js +0 -1
- package/phanpy/dist/assets/icons/arrow-up-line-C7yBeugc.js +0 -1
- package/phanpy/dist/assets/icons/arrows-right-line-BtbXmJGP.js +0 -1
- package/phanpy/dist/assets/icons/at-line-CF66Bznk.js +0 -1
- package/phanpy/dist/assets/icons/attachment-line-BY8It-l9.js +0 -1
- package/phanpy/dist/assets/icons/blockquote-line-BS6pU_hm.js +0 -1
- package/phanpy/dist/assets/icons/board-line-C0UWXyA6.js +0 -1
- package/phanpy/dist/assets/icons/bookmark-line-1CtX5JLF.js +0 -1
- package/phanpy/dist/assets/icons/building-5-line-Dd59MzbO.js +0 -1
- package/phanpy/dist/assets/icons/bus-2-line-6_dvA0GG.js +0 -1
- package/phanpy/dist/assets/icons/calendar-day-line-Crpl_fmu.js +0 -1
- package/phanpy/dist/assets/icons/calendar-month-line-vommts2C.js +0 -1
- package/phanpy/dist/assets/icons/calendar-time-add-line-BU_DTlQk.js +0 -1
- package/phanpy/dist/assets/icons/camera-line-Cv69MEei.js +0 -1
- package/phanpy/dist/assets/icons/celebrate-line-B8DvIoi0.js +0 -1
- package/phanpy/dist/assets/icons/chart-bar-line-FK-QOmtF.js +0 -1
- package/phanpy/dist/assets/icons/chart-line-line-BGcJAFWw.js +0 -1
- package/phanpy/dist/assets/icons/chat-3-line-YFK2-hwz.js +0 -1
- package/phanpy/dist/assets/icons/check-circle-line-DsAxFr5-.js +0 -1
- package/phanpy/dist/assets/icons/clipboard-line-BBp364gJ.js +0 -1
- package/phanpy/dist/assets/icons/close-circle-line-CICdiuGz.js +0 -1
- package/phanpy/dist/assets/icons/close-line-DYrFWcjv.js +0 -1
- package/phanpy/dist/assets/icons/cloud-line-tiQAbah8.js +0 -1
- package/phanpy/dist/assets/icons/code-line-fAl8iiV3.js +0 -1
- package/phanpy/dist/assets/icons/comment-2-line-CR3g7WeB.js +0 -1
- package/phanpy/dist/assets/icons/copy-2-line-CLW69yF5.js +0 -1
- package/phanpy/dist/assets/icons/delete-2-line-B8xmbr4n.js +0 -1
- package/phanpy/dist/assets/icons/document-3-line-DBGNhAg2.js +0 -1
- package/phanpy/dist/assets/icons/document-line-C7mb9sb7.js +0 -1
- package/phanpy/dist/assets/icons/down-line-BGqSSThd.js +0 -1
- package/phanpy/dist/assets/icons/edit-4-line-DcgGaEhx.js +0 -1
- package/phanpy/dist/assets/icons/emoji-2-line-D8YgnM-y.js +0 -1
- package/phanpy/dist/assets/icons/exit-line-Dc07BS-x.js +0 -1
- package/phanpy/dist/assets/icons/external-link-line-BvpSkmjO.js +0 -1
- package/phanpy/dist/assets/icons/eye-2-line-CiWXx-f_.js +0 -1
- package/phanpy/dist/assets/icons/eye-close-line-BgTaSJ4P.js +0 -1
- package/phanpy/dist/assets/icons/filter-2-line-B_mR2usy.js +0 -1
- package/phanpy/dist/assets/icons/filter-line-C_nm-3cU.js +0 -1
- package/phanpy/dist/assets/icons/flag-1-line-C2HB05I0.js +0 -1
- package/phanpy/dist/assets/icons/forbid-circle-line-D3LTT9yd.js +0 -1
- package/phanpy/dist/assets/icons/formula-line-DLrt2d6j.js +0 -1
- package/phanpy/dist/assets/icons/grid-line-CgUmEikf.js +0 -1
- package/phanpy/dist/assets/icons/group-line-C5fnX0wU.js +0 -1
- package/phanpy/dist/assets/icons/hand-finger-2-line-BGgxbuL9.js +0 -1
- package/phanpy/dist/assets/icons/hashtag-line-CyTEEXBb.js +0 -1
- package/phanpy/dist/assets/icons/heart-crack-line-BZddbO2C.js +0 -1
- package/phanpy/dist/assets/icons/heart-line-CJ7K47J4.js +0 -1
- package/phanpy/dist/assets/icons/history-2-line-kWWvFzqv.js +0 -1
- package/phanpy/dist/assets/icons/history-line-bGQiwbTH.js +0 -1
- package/phanpy/dist/assets/icons/home-3-line-fRU1zeLG.js +0 -1
- package/phanpy/dist/assets/icons/information-line-iNk6-sOY.js +0 -1
- package/phanpy/dist/assets/icons/keyboard-line-DsCyuQNz.js +0 -1
- package/phanpy/dist/assets/icons/layout-4-line-CZkOX52Z.js +0 -1
- package/phanpy/dist/assets/icons/layout-5-line-B_znt5wO.js +0 -1
- package/phanpy/dist/assets/icons/left-line-eUw0tya4.js +0 -1
- package/phanpy/dist/assets/icons/lightning-line-DaKoDdix.js +0 -1
- package/phanpy/dist/assets/icons/link-2-line-DCqLmMA7.js +0 -1
- package/phanpy/dist/assets/icons/list-check-line-BAxosBh9.js +0 -1
- package/phanpy/dist/assets/icons/lock-line-CPoaXeUW.js +0 -1
- package/phanpy/dist/assets/icons/mail-line-B0P8aa1L.js +0 -1
- package/phanpy/dist/assets/icons/moon-line-CEqNAToP.js +0 -1
- package/phanpy/dist/assets/icons/more-1-fill-Dw2e5xab.js +0 -1
- package/phanpy/dist/assets/icons/more-3-line-BIiVjYTz.js +0 -1
- package/phanpy/dist/assets/icons/notification-line-BZZq2Gtu.js +0 -1
- package/phanpy/dist/assets/icons/pencil-line-CKh8-A1v.js +0 -1
- package/phanpy/dist/assets/icons/photo-album-line-Bnfg2u40.js +0 -1
- package/phanpy/dist/assets/icons/pin-line-DpTolyhs.js +0 -1
- package/phanpy/dist/assets/icons/play-fill-B0-G_8lX.js +0 -1
- package/phanpy/dist/assets/icons/qrcode-2-line-B6SPCaHn.js +0 -1
- package/phanpy/dist/assets/icons/quill-pen-line-B6LUrnCP.js +0 -1
- package/phanpy/dist/assets/icons/quote-left-fill-hQZ1cj_6.js +0 -1
- package/phanpy/dist/assets/icons/radar-line-CKyroTth.js +0 -1
- package/phanpy/dist/assets/icons/react-line-CoIKhhtK.js +0 -1
- package/phanpy/dist/assets/icons/refresh-2-line-D0mTF97S.js +0 -1
- package/phanpy/dist/assets/icons/right-line-B3KWJaqc.js +0 -1
- package/phanpy/dist/assets/icons/rocket-line-4KZl537D.js +0 -1
- package/phanpy/dist/assets/icons/round-fill-C69NTrZ0.js +0 -1
- package/phanpy/dist/assets/icons/round-line-B9k_1uo-.js +0 -1
- package/phanpy/dist/assets/icons/route-line-B28ReHcE.js +0 -1
- package/phanpy/dist/assets/icons/rows-4-line-CrBniagM.js +0 -1
- package/phanpy/dist/assets/icons/scan-line-DSf74YdP.js +0 -1
- package/phanpy/dist/assets/icons/search-2-line-B6geIU1z.js +0 -1
- package/phanpy/dist/assets/icons/settings-3-line-azJwK47w.js +0 -1
- package/phanpy/dist/assets/icons/settings-6-line-C_5zc5YR.js +0 -1
- package/phanpy/dist/assets/icons/share-2-line-D5MxWjrm.js +0 -1
- package/phanpy/dist/assets/icons/share-forward-line-Cp61fZzZ.js +0 -1
- package/phanpy/dist/assets/icons/sparkles-2-line-DYYyXTaW.js +0 -1
- package/phanpy/dist/assets/icons/sparkles-line-C2hY1s6I.js +0 -1
- package/phanpy/dist/assets/icons/time-line-BF3eet1v.js +0 -1
- package/phanpy/dist/assets/icons/transfer-4-line-oisfvTBw.js +0 -1
- package/phanpy/dist/assets/icons/translate-line-BFWol2Ce.js +0 -1
- package/phanpy/dist/assets/icons/unlock-line-X_x5vwv3.js +0 -1
- package/phanpy/dist/assets/icons/upload-3-line-DgzwUJeW.js +0 -1
- package/phanpy/dist/assets/icons/user-4-line-BVSynZCp.js +0 -1
- package/phanpy/dist/assets/icons/user-add-2-line-BlGS5Q8q.js +0 -1
- package/phanpy/dist/assets/icons/user-add-line-BbXdHG4z.js +0 -1
- package/phanpy/dist/assets/icons/user-edit-line-BFAHOV0X.js +0 -1
- package/phanpy/dist/assets/icons/user-follow-line-BXux0wSd.js +0 -1
- package/phanpy/dist/assets/icons/user-star-line-DdYlpHLU.js +0 -1
- package/phanpy/dist/assets/icons/user-warning-line-Cj43j0_E.js +0 -1
- package/phanpy/dist/assets/icons/user-x-line-DIDgNlPH.js +0 -1
- package/phanpy/dist/assets/icons/volume-line-Bs390KQt.js +0 -1
- package/phanpy/dist/assets/icons/volume-mute-line-DzlzIqFZ.js +0 -1
- package/phanpy/dist/assets/icons/walk-line-yNXfB-md.js +0 -1
- package/phanpy/dist/assets/icons/world-2-line-CenkGIwj.js +0 -1
- package/phanpy/dist/assets/icons/zoom-in-line-CaENUphf.js +0 -1
- package/phanpy/dist/assets/icons/zoom-out-line-BDNk0EWo.js +0 -1
- package/phanpy/dist/assets/instances-BNPptnn-.json +0 -333
- package/phanpy/dist/assets/locales/ar-SA-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/ca-ES-DHRW86Tz.js +0 -1
- package/phanpy/dist/assets/locales/cs-CZ-CKoqEuA1.js +0 -1
- package/phanpy/dist/assets/locales/de-DE-ByRPMRFy.js +0 -1
- package/phanpy/dist/assets/locales/eo-UY-CPC7wLCS.js +0 -1
- package/phanpy/dist/assets/locales/es-ES-dJa0Fd9t.js +0 -1
- package/phanpy/dist/assets/locales/eu-ES-C3djlPR2.js +0 -1
- package/phanpy/dist/assets/locales/fa-IR-DTT490Ck.js +0 -1
- package/phanpy/dist/assets/locales/fi-FI-B23MCPuz.js +0 -1
- package/phanpy/dist/assets/locales/fr-FR-BcaQsO5C.js +0 -1
- package/phanpy/dist/assets/locales/gl-ES-BR-CVKBN.js +0 -1
- package/phanpy/dist/assets/locales/he-IL-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/hu-HU-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/it-IT-C1136UFV.js +0 -1
- package/phanpy/dist/assets/locales/ja-JP-CRZmRAhD.js +0 -1
- package/phanpy/dist/assets/locales/kab-Cz8xH_TT.js +0 -1
- package/phanpy/dist/assets/locales/ko-KR-CG9UiY4o.js +0 -1
- package/phanpy/dist/assets/locales/lt-LT-CJcI6sHZ.js +0 -1
- package/phanpy/dist/assets/locales/nb-NO-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/nl-NL-DxN4Yc1t.js +0 -1
- package/phanpy/dist/assets/locales/oc-FR-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/pl-PL-DkwGXf6P.js +0 -1
- package/phanpy/dist/assets/locales/pseudo-LOCALE-CQ4XxkQ0.js +0 -1
- package/phanpy/dist/assets/locales/pt-BR-nGL0HdFS.js +0 -1
- package/phanpy/dist/assets/locales/pt-PT-Cp17aj2z.js +0 -1
- package/phanpy/dist/assets/locales/ru-RU-0Y8cIoaK.js +0 -1
- package/phanpy/dist/assets/locales/th-TH-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/tok-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/tr-TR-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/locales/uk-UA-C5E3dFBf.js +0 -1
- package/phanpy/dist/assets/locales/zh-CN-BHJi7_et.js +0 -1
- package/phanpy/dist/assets/locales/zh-TW-CfheRbCu.js +0 -1
- package/phanpy/dist/assets/main-BdqNbG-a.js +0 -26
- package/phanpy/dist/assets/main-BdqNbG-a.js.map +0 -1
- package/phanpy/dist/assets/mock-home-DGhR__He.js +0 -2
- package/phanpy/dist/assets/mock-home-DGhR__He.js.map +0 -1
- package/phanpy/dist/assets/multi-column-ROck0NVt.jpg +0 -0
- package/phanpy/dist/assets/multi-hashtag-timeline-DH5INVHi.jpg +0 -0
- package/phanpy/dist/assets/nested-comments-thread-hv59kZLc.jpg +0 -0
- package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js +0 -2
- package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js.map +0 -1
- package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js +0 -20
- package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js.map +0 -1
- package/phanpy/dist/assets/style-B1iLPTPR.css +0 -2
- package/phanpy/dist/assets/temml-DuyIQMei.js +0 -97
- package/phanpy/dist/assets/temml-DuyIQMei.js.map +0 -1
- package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js +0 -2
- package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js.map +0 -1
- package/phanpy/dist/assets/year-in-posts-B2lywqdx.png +0 -0
- package/phanpy/dist/assets/year-in-posts-DJv_star.js +0 -3
- package/phanpy/dist/assets/year-in-posts-DJv_star.js.map +0 -1
- package/phanpy/dist/compose/index.html +0 -20
- package/phanpy/dist/favicon.ico +0 -0
- package/phanpy/dist/index.html +0 -73
- package/phanpy/dist/logo-192.png +0 -0
- package/phanpy/dist/logo-512.png +0 -0
- package/phanpy/dist/logo-badge-72.png +0 -0
- package/phanpy/dist/logo-maskable-512.png +0 -0
- package/phanpy/dist/logo-monochrome-512.png +0 -0
- package/phanpy/dist/logo-monochrome-maskable-512.png +0 -0
- package/phanpy/dist/manifest.webmanifest +0 -1
- package/phanpy/dist/og-image-2.jpg +0 -0
- package/phanpy/dist/og-image.png +0 -0
- package/phanpy/dist/robots.txt +0 -2
- package/phanpy/dist/sw.js +0 -2
- package/phanpy/dist/sw.js.map +0 -1
- package/phanpy/dist/version.json +0 -1
- package/run-agent.mjs +0 -899
- package/vendor/gate.cjs +0 -138
- package/vendor/idp-grant.cjs +0 -394
- package/vendor/jfetch.cjs +0 -16
- package/web/admin/actors.js +0 -147
- package/web/admin/bar.css +0 -126
- package/web/admin/bar.js +0 -99
- package/web/admin/client/client.js +0 -66
- package/web/admin/client/index.html +0 -69
- package/web/admin/client-pick.js +0 -79
- package/web/admin/common.js +0 -23
- package/web/admin/connections.js +0 -112
- package/web/admin/gateway.js +0 -133
- package/web/admin/group.js +0 -258
- package/web/admin/index.html +0 -612
- package/web/admin/notices-bar.js +0 -90
- package/web/admin/oauth-signin.mjs +0 -37
- package/web/admin/record.js +0 -393
- package/web/admin/setup/index.html +0 -257
- package/web/admin/setup/setup.js +0 -339
- package/web/admin/tokens.css +0 -68
- package/web/admin/upkeep.js +0 -177
- package/web/admin/window.css +0 -55
- package/web/admin/window.js +0 -136
- package/web/app/README.md +0 -81
- package/web/app/admin-facade.mjs +0 -588
- package/web/app/agent.mjs +0 -672
- package/web/app/atproto-browser.mjs +0 -86
- package/web/app/authorize_interaction.html +0 -56
- package/web/app/authorize_interaction.js +0 -69
- package/web/app/boot.mjs +0 -616
- package/web/app/deliver-relay.mjs +0 -129
- package/web/app/dist/boot.js +0 -34562
- package/web/app/dist/boot.js.map +0 -7
- package/web/app/dist/sw.js +0 -73456
- package/web/app/dist/sw.js.map +0 -7
- package/web/app/fediacct-browser.mjs +0 -146
- package/web/app/gateway-move.mjs +0 -60
- package/web/app/idb-kv.mjs +0 -35
- package/web/app/index.html +0 -258
- package/web/app/keys-browser.mjs +0 -71
- package/web/app/keystore.mjs +0 -82
- package/web/app/oidc-session.mjs +0 -6
- package/web/app/pod-auth.mjs +0 -248
- package/web/app/pod-remote.mjs +0 -84
- package/web/app/shims/_globals.mjs +0 -2
- package/web/app/shims/fedify-sig.mjs +0 -77
- package/web/app/shims/node-crypto.mjs +0 -113
- package/web/app/shims/node-fs.mjs +0 -17
- package/web/app/shims/node-path.mjs +0 -19
- package/web/app/shims/node-url.mjs +0 -7
- package/web/app/shims/prelude.js +0 -58
- package/web/app/shims/safefetch.mjs +0 -58
- package/web/app/shims/shapes-text.mjs +0 -8
- package/web/app/shims/web-push.mjs +0 -14
- package/web/app/signup.mjs +0 -357
- package/web/app/sw-src.mjs +0 -220
- package/web/app/update.js +0 -70
- package/web/front/admin.html +0 -55
- package/web/front/admin.js +0 -89
- package/web/front/install.sh +0 -69
- package/web/front/new-account.html +0 -35
- package/web/front/new-account.js +0 -13
- package/web/front/notices.html +0 -69
- package/web/front/notices.js +0 -107
- package/web/front/run.html +0 -64
- package/web/front/run.js +0 -221
- package/web/front/solid-oidc-client.js +0 -6
- package/web/icons/forum.svg +0 -11
- package/web/icons/gateway.svg +0 -14
- package/web/icons/local.svg +0 -11
package/dist/opt-in.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// opt-in.ts — what a pod owner asks of this server: to run their identity,
|
|
3
|
+
// to stop running it, and to say what their pod would be as an identity
|
|
4
|
+
// here; and reading who the server's own account session belongs to.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.webIdsFromSession = webIdsFromSession;
|
|
7
|
+
exports.optInPod = optInPod;
|
|
8
|
+
exports.describePod = describePod;
|
|
9
|
+
exports.optOutPod = optOutPod;
|
|
10
|
+
const store_pod_1 = require("./store-pod");
|
|
11
|
+
const directory_1 = require("./directory");
|
|
12
|
+
const fedipod_1 = require("./fedipod");
|
|
13
|
+
const mounts_1 = require("./mounts");
|
|
14
|
+
const identities_1 = require("./identities");
|
|
15
|
+
/**
|
|
16
|
+
* The WebIDs behind the account session in the request, or none. The server
|
|
17
|
+
* keeps that session in a `css-account` cookie; its own account API is what
|
|
18
|
+
* says which WebIDs the session owns, and it takes the same cookie. Nothing
|
|
19
|
+
* here trusts the cookie's presence — the account API does the deciding, and
|
|
20
|
+
* the caller picks the WebID that owns the pod being claimed.
|
|
21
|
+
*/
|
|
22
|
+
async function webIdsFromSession(h, request) {
|
|
23
|
+
const s = h.internals();
|
|
24
|
+
const cookie = request.headers.get('cookie');
|
|
25
|
+
if (!cookie || !/(?:^|;\s*)css-account=/u.test(cookie))
|
|
26
|
+
return [];
|
|
27
|
+
const base = s.args.frontOrigin.replace(/\/$/u, '');
|
|
28
|
+
const asJson = { cookie, accept: 'application/json' };
|
|
29
|
+
try {
|
|
30
|
+
const index = await fetch(`${base}/.account/`, { headers: asJson });
|
|
31
|
+
if (!index.ok)
|
|
32
|
+
return [];
|
|
33
|
+
const controls = (await index.json()).controls;
|
|
34
|
+
const webIdLink = controls?.account?.webId;
|
|
35
|
+
if (!webIdLink)
|
|
36
|
+
return [];
|
|
37
|
+
const linked = await fetch(webIdLink, { headers: asJson });
|
|
38
|
+
if (!linked.ok)
|
|
39
|
+
return [];
|
|
40
|
+
const links = (await linked.json()).webIdLinks ?? {};
|
|
41
|
+
return Object.keys(links);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A pod owner, already proven to control podBase, asks this server to run
|
|
49
|
+
* their identity. Returns { httpStatus, ...body }; the secret appears in the
|
|
50
|
+
* reply and nowhere else. Re-opting-in rotates the secret — that is how a
|
|
51
|
+
* lost one is recovered.
|
|
52
|
+
*/
|
|
53
|
+
async function optInPod(h, { podBase, webId, container = '', createIndex = false }) {
|
|
54
|
+
const s = h.internals();
|
|
55
|
+
if (!s.registry)
|
|
56
|
+
return { httpStatus: 501, error: 'this server does not offer runtime opt-in' };
|
|
57
|
+
if (s.args.clusterManager && !s.args.clusterManager.isSingleThreaded()) {
|
|
58
|
+
return { httpStatus: 503, error: 'runtime opt-in needs a single-worker server (--workers 1)' };
|
|
59
|
+
}
|
|
60
|
+
const base = podBase.endsWith('/') ? podBase : `${podBase}/`;
|
|
61
|
+
const handle = (0, mounts_1.deriveHandle)(base);
|
|
62
|
+
// Already running here from an earlier opt-in: proving pod
|
|
63
|
+
// control again buys a fresh secret, nothing else.
|
|
64
|
+
if (s.agentHandles.get(handle) === base) {
|
|
65
|
+
const door = await (0, identities_1.doorSecretFor)(h, base, undefined, { rotate: true });
|
|
66
|
+
s.doorSecrets.set(base, door.secret);
|
|
67
|
+
return { httpStatus: 201, ok: true, handle, host: new URL(base).host.toLowerCase(),
|
|
68
|
+
doorSecret: door.secret, doorPath: s.uiPath, status: 'rotated' };
|
|
69
|
+
}
|
|
70
|
+
let claim;
|
|
71
|
+
try {
|
|
72
|
+
claim = (0, mounts_1.validateAgentPod)(h, base);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
return { httpStatus: 409, error: e.message };
|
|
76
|
+
}
|
|
77
|
+
const { host } = claim;
|
|
78
|
+
// Where on the pod: the container its owner named holds `fedipod/`. The
|
|
79
|
+
// place is recorded in their public type index — made only on their yes —
|
|
80
|
+
// before anything else is written, and read here with the server's own
|
|
81
|
+
// access to the pod.
|
|
82
|
+
const place = await (0, fedipod_1.esmImport)(fedipod_1.PLACE);
|
|
83
|
+
const chosen = place.chosenRoot(base, container);
|
|
84
|
+
if (chosen.problem || !chosen.root)
|
|
85
|
+
return { httpStatus: 400, error: `Where to store it: ${chosen.problem}.` };
|
|
86
|
+
const root = chosen.root;
|
|
87
|
+
const { PodTransport } = await (0, fedipod_1.esmImport)(fedipod_1.TRANSPORT);
|
|
88
|
+
const pod = new PodTransport((0, store_pod_1.makeStoreSession)(s.args.resourceStore, base), { webId });
|
|
89
|
+
if (!createIndex && !await place.hasPublicIndex(pod, base)) {
|
|
90
|
+
return { httpStatus: 409, code: 'needs-index',
|
|
91
|
+
error: 'Your pod has no public type index, the list Solid apps use to find your things. '
|
|
92
|
+
+ 'FediPod needs one to record where your account lives.' };
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
await place.recordPlace(pod, base, `${base}${root}ap/actor`, { create: createIndex });
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
return { httpStatus: 500, error: `could not record where the account lives in your type index (${e.message})` };
|
|
99
|
+
}
|
|
100
|
+
s.roots.set(base, root);
|
|
101
|
+
try {
|
|
102
|
+
await s.registry.add({ podBase: base, handle, host, webId, root, optedInAt: new Date().toISOString() });
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
s.logger.error(`opt-in row for ${base} could not be written: ${e.message}`);
|
|
106
|
+
return { httpStatus: 500, error: 'could not record the opt-in' };
|
|
107
|
+
}
|
|
108
|
+
// From this instant the pod's identity routes answer 503 instead of LDP,
|
|
109
|
+
// until the agent registers its surface.
|
|
110
|
+
s.claimed.set(base, claim);
|
|
111
|
+
s.agentHandles.set(handle, base);
|
|
112
|
+
const door = await (0, identities_1.doorSecretFor)(h, base, undefined, { rotate: true });
|
|
113
|
+
s.doorSecrets.set(base, door.secret);
|
|
114
|
+
void (0, identities_1.startIdentity)(h, base);
|
|
115
|
+
s.logger.info(`runtime opt-in: @${handle} on ${base} (door secret in its pod at ${door.url})`);
|
|
116
|
+
return { httpStatus: 201, ok: true, handle, host,
|
|
117
|
+
doorSecret: door.secret, doorPath: s.uiPath, status: 'starting' };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* What a pod would be as an identity here, without changing anything: its
|
|
121
|
+
* handle, the host its address carries, and whether it runs here already.
|
|
122
|
+
*/
|
|
123
|
+
async function describePod(h, { podBase }) {
|
|
124
|
+
const s = h.internals();
|
|
125
|
+
const base = podBase.endsWith('/') ? podBase : `${podBase}/`;
|
|
126
|
+
const handle = (0, mounts_1.deriveHandle)(base);
|
|
127
|
+
let host;
|
|
128
|
+
try {
|
|
129
|
+
host = (0, mounts_1.validateAgentPod)(h, base).host;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
host = new URL(base).host.toLowerCase();
|
|
133
|
+
}
|
|
134
|
+
const running = s.agentHandles.get(handle) === base;
|
|
135
|
+
// The management page's door takes its key once in the address and keeps
|
|
136
|
+
// the browser in with a cookie. Only the owner's own page ever asks for
|
|
137
|
+
// this description, so the key rides on the link for a running account.
|
|
138
|
+
// Read from the pod, where the key always is, rather than from what this
|
|
139
|
+
// process happens to hold: an account still starting has none in memory.
|
|
140
|
+
let key;
|
|
141
|
+
if (running) {
|
|
142
|
+
try {
|
|
143
|
+
key = (await (0, identities_1.doorSecretFor)(h, base)).secret;
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
key = s.doorSecrets.get(base);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const door = base.replace(/\/$/u, '') + s.uiPath;
|
|
150
|
+
return { handle, host, address: `@${handle}@${host}`, running,
|
|
151
|
+
manage: key ? `${door}?dk-token=${encodeURIComponent(key)}` : door };
|
|
152
|
+
}
|
|
153
|
+
/** The reverse: stop the identity and let the pod be plain LDP again. */
|
|
154
|
+
async function optOutPod(h, { podBase }) {
|
|
155
|
+
const s = h.internals();
|
|
156
|
+
if (!s.registry)
|
|
157
|
+
return { httpStatus: 501, error: 'this server does not offer runtime opt-in' };
|
|
158
|
+
const base = podBase.endsWith('/') ? podBase : `${podBase}/`;
|
|
159
|
+
const host = new URL(base).host.toLowerCase();
|
|
160
|
+
const key = (0, directory_1.agentKey)(host, base);
|
|
161
|
+
const row = await s.registry.get(key);
|
|
162
|
+
if (!row || row.podBase !== base)
|
|
163
|
+
return { httpStatus: 404, error: 'this pod has not opted in' };
|
|
164
|
+
s.claimed.delete(base); // routes fall to LDP now
|
|
165
|
+
s.startCancelled.add(base); // a pending start stands down
|
|
166
|
+
const identity = s.identities.get(base);
|
|
167
|
+
s.identities.delete(base);
|
|
168
|
+
s.surfaces.delete(base);
|
|
169
|
+
s.agentHandles.delete(row.handle);
|
|
170
|
+
s.doorSecrets.delete(base);
|
|
171
|
+
if (identity)
|
|
172
|
+
await identity.stop();
|
|
173
|
+
await s.registry.remove(key);
|
|
174
|
+
s.logger.info(`runtime opt-out: @${row.handle} on ${base} — the pod serves plain LDP again`);
|
|
175
|
+
return { httpStatus: 200, ok: true, stopped: Boolean(identity) };
|
|
176
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fedipod-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "The FediPod Server: a full ActivityPub server as a Community Solid Server component.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,11 +8,6 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
"dist",
|
|
10
10
|
"config",
|
|
11
|
-
"lib",
|
|
12
|
-
"vendor",
|
|
13
|
-
"web",
|
|
14
|
-
"run-agent.mjs",
|
|
15
|
-
"phanpy",
|
|
16
11
|
"README.md",
|
|
17
12
|
"fedipod-server.svg"
|
|
18
13
|
],
|
|
@@ -20,20 +15,16 @@
|
|
|
20
15
|
"@solid/community-server": "^7.0.0"
|
|
21
16
|
},
|
|
22
17
|
"dependencies": {
|
|
23
|
-
"
|
|
24
|
-
"@solid/access-token-verifier": "^2.1.1",
|
|
25
|
-
"jose": "^6.2.8",
|
|
26
|
-
"node-forge": "^1.4.0",
|
|
27
|
-
"rdflib": "^2.4.0",
|
|
28
|
-
"sanitize-html": "^2.17.6",
|
|
29
|
-
"undici": "^6.28.0",
|
|
30
|
-
"web-push": "^3.6.7"
|
|
18
|
+
"fedipod": "^1.42.0"
|
|
31
19
|
},
|
|
32
20
|
"devDependencies": {
|
|
33
21
|
"typescript": "^5.5.3",
|
|
34
22
|
"componentsjs-generator": "^3.1.2",
|
|
35
23
|
"@types/node": "^20.0.0",
|
|
36
|
-
"@solid/community-server": "^7.2.0"
|
|
24
|
+
"@solid/community-server": "^7.2.0",
|
|
25
|
+
"@fedify/fedify": "^2.3.4",
|
|
26
|
+
"n3": "^2.1.1",
|
|
27
|
+
"rdflib": "^2.4.0"
|
|
37
28
|
},
|
|
38
29
|
"overrides": {
|
|
39
30
|
"@opentelemetry/core": "^2.8.0",
|
|
@@ -53,11 +44,12 @@
|
|
|
53
44
|
"scripts": {
|
|
54
45
|
"build": "tsc && npm run build:components",
|
|
55
46
|
"build:components": "componentsjs-generator -s src -c dist/components -r fps",
|
|
47
|
+
"pretest": "node scripts/link-fedipod.mjs",
|
|
56
48
|
"test": "npm run build && node --test test/*.mjs",
|
|
49
|
+
"pretest:e2e": "node scripts/link-fedipod.mjs",
|
|
57
50
|
"test:e2e": "node test/e2e/live-agent.mjs",
|
|
51
|
+
"pretest:e2e:suffix": "node scripts/link-fedipod.mjs",
|
|
58
52
|
"test:e2e:suffix": "node test/e2e/live-suffix.mjs",
|
|
59
|
-
"prepublishOnly": "npm test"
|
|
60
|
-
"prepack": "node scripts/pack-tree.mjs copy",
|
|
61
|
-
"postpack": "node scripts/pack-tree.mjs clean"
|
|
53
|
+
"prepublishOnly": "npm test"
|
|
62
54
|
}
|
|
63
55
|
}
|