Releases: fedify-dev/fedify
Fedify 0.7.0
Released on April 23, 2024.
-
Added
PUBLIC_COLLECTIONconstant for public addressing. -
Federationnow supports authorized fetch for actor dispatcher and collection dispatchers.- Added
ActorCallbackSetters.authorize()method. - Added
CollectionCallbackSetters.authorize()method. - Added
AuthorizedPredicatetype. - Added
RequestContext.getSignedKey()method. - Added
RequestContext.getSignedKeyOwner()method. - Added
FederationFetchOptions.onUnauthorizedoption for handling unauthorized fetches. - Added
getKeyOwner()function.
- Added
-
The default implementation of
FederationFetchOptions.onNotAcceptableoption now responds withVary: Accept, Signatureheader. -
Added log messages using the LogTape library. Currently the below logger categories are used:
["fedify"]["fedify", "federation"]["fedify", "federation", "inbox"]["fedify", "federation", "outbox"]
-
Added
RequestContext.getActor()method. -
Activity Vocabulary classes now have
typeIdstatic property. -
Dispatcher setters and inbox listener setters in
Federationnow take a path as`${string}{handle}${string}`instead ofstringso that it is more type-safe. -
Added generalized object dispatchers. [#33]
- Added
Federation.setObjectDispatcher()method. - Added
ObjectDispatchertype. - Added
ObjectAuthorizePredicatetype. - Added
Context.getObjectUri()method. - Added
RequestContext.getObject()method.
- Added
Fedify 0.6.1
Released on April 17, 2024.
- Fixed a bug of
new Federation()constructor that if it is once called the process will never exit. [#39]
Fedify 0.5.2
Released on April 17, 2024.
- Fixed a bug of
new Federation()constructor that if it is once called the process will never exit. [#39]
Fedify 0.6.0
Released on April 9, 2024.
-
DocumentLoaderis now propagated to the loaded remote objects from Activity Vocabulary objects. [#27]- Added
optionsparameter to Activity Vocabulary constructors. - Added
optionsparameter toclone()method of Activity Vocabulary objects. - The Activity Vocabulary object passed to
InboxListenernow implicitly loads remote object with an authenticatedDocumentLoader.
- Added
-
Added
Federation.fetch()method.- Deprecated
Federation.handle()method. UseFederation.fetch()method instead. - Renamed
FederationHandlerParameterstype toFederationFetchOptions. - Added
integrateFetchOptions()function. - Deprecated
integrateHandlerOptions()function.
- Deprecated
-
Added
@fedify/fedify/x/honomodule for integrating with Hono middleware. [#25]- Added
federation()function. - Added
ContextDataFactorytype.
- Added
-
Context.sendActivity()method now throwsTypeErrorinstead of silently failing when the givenActivityobject lacks the actor property. -
Context.sendActivity()method now uses an authenticated document loader under the hood. -
Added outbox error handler to
Federation.- Added
onOutboxErroroption tonew Federation()constructor. - Added
OutboxErrorHandlertype.
- Added
Fedify 0.5.1
Released on April 5, 2024.
- Fixed a bug of
Federationthat its actor/collection dispatchers had done content negotiation before determining if the resource exists or not. It also fixed a bug thatintegrateHandler()from@fedify/fedify/x/freshhad responded with406 Not Acceptableinstead of404 Not Foundwhen the resource does not exist in the web browser. [#34]
Fedify 0.5.0
Released on April 2, 2024.
-
Fedify is now available on npm: @fedify/fedify. [#24]
-
Abstract key-value store for caching.
- Added
KvStoreinterface. - Added
KvStoreSetOptionsinterface. - Added
KvKeytype. - Added
DenoKvStoreclass. KvCacheParameters.kvoption now accepts aKvStoreinstead ofDeno.Kv.KvCacheParameters.prefixoption now accepts aKvKeyinstead ofDeno.KvKey.FederationParameters.kvoption now accepts aKvStoreinstead ofDeno.Kv.FederationKvPrefixes.activityIdempotenceoption now accepts aKvKeyinstead ofDeno.KvKey.FederationKvPrefixes.remoteDocumentoption now accepts aKvKeyinstead ofDeno.KvKey.
- Added
-
Abstract message queue for outgoing activities.
- Added
MessageQueueinterface. - Added
MessageQueueEnqueueOptionsinterface. - Added
InProcessMessageQueueclass. - Added
FederationParameters.queueoption.
- Added
-
Added
@fedify/fedify/x/denokvmodule for adaptingDeno.KvtoKvStoreandMessageQueue. It is only available in Deno runtime.- Added
DenoKvStoreclass. - Added
DenoKvMessageQueueclass.
- Added
-
Added
PropertyValueto Activity Vocabulary API. [#29]- Added
PropertyValueclass. new Object()constructor'sattachmentsoption now acceptsPropertyValueobjects.new Object()constructor'sattachmentoption now accepts aPropertyValueobject.Object.getAttachments()method now yieldsPropertyValueobjects besidesObjectandLinkobjects.Object.getAttachment()method now returns aPropertyValueobject besides anObjectand aLinkobject.Object.clone()method'sattachmentsoption now acceptsPropertyValueobjects.Object.clone()method'sattachmentoption now accepts aPropertyValueobject.
- Added
-
Removed dependency on jose.
- Added
exportSpki()function. - Added
importSpki()function.
- Added
-
Fixed a bug that
Application.manuallyApprovesFollowers,Group.manuallyApprovesFollowers,Organization.manuallyApprovesFollowers,Person.manuallyApprovesFollowers, andService.manuallyApprovesFollowersproperties were not properly displayed in Mastodon.
Fedify 0.4.0
Released on March 26, 2024.
-
Added
@fedify/fedify/x/freshmodule for integrating with Fresh middleware.- Added
integrateHandler()function. - Added
integrateHandlerOptions()function.
- Added
-
Added
getActorHandle()function. -
Fedify now has authenticated document loader. [#12]
- Added
Context.getDocumentLoader()method. - Added
getAuthenticatedDocumentLoader()function. - Added
AuthenticatedDocumentLoaderFactorytype. - Added
authenticatedDocumentLoaderFactoryoption tonew Federation()constructor. Context.documentLoaderproperty now returns an authenticated document loader in personal inbox listeners. (Note that it's not affected in shared inbox listeners.)
- Added
-
Added singular accessors to
Object'siconandimageproperties.new Object()constructor now acceptsiconoption.new Object()constructor now acceptsimageoption.- Added
Object.getIcon()method. - Added
Object.getImage()method. Object.clone()method now acceptsiconoption.Object.clone()method now acceptsimageoption.
-
Object'siconandimageproperties no more acceptLinkobjects.new Object()constructor'siconsoption no more acceptsLinkobjects.new Object()constructor'simagesoption no more acceptsLinkobjects.Object.getIcons()method no more yieldsLinkobjects.Object.getImages()method no more yieldsLinkobjects.Object.clone()method'siconsoption no more acceptsLinkobjects.Object.clone()method'simagesoption no more acceptsLinkobjects.
-
Object'sattributedToproperty was renamed toattribution.new Object()constructor'sattributedTooption was renamed toattribution.new Object()constructor'sattributedTosoption was renamed toattributions.Object.getAttributedTo()method is renamed toObject.getAttribution().Object.getAttributedTos()method is renamed toObject.getAttributions().Object.clone()method'sattributedTooption is renamed toattribution.Object.clone()method'sattributedTosoption is renamed toattributions.
-
Object'sattributionproperty (wasattributedTo) now accepts onlyActorobjects.new Object()constructor'sattributionoption (wasattributedTo) now accepts only anActorobject.new Object()constructor'sattributionsoption (wasattributedTos) now accepts onlyActorobjects.Object.getAttribution()method (wasgetAttributedTo()) now returns only anActorobject.Object.getAttributions()method (wasgetAttributedTos()) now returns onlyActorobjects.Object.clone()method'sattributionoption (attributedTo) now accepts only anActorobject.Object.clone()method'sattributionsoption (attributedTos) now accepts onlyActorobjects.
-
Activity'sobjectproperty no more acceptsLinkobjects.new Activity()constructor'sobjectoption no more accepts aLinkobject.new Activity()constructor'sobjectsoption no more acceptsLinkobjects.Activity.getObject()method no more returns aLinkobject.Activity.getObjects()method no more returnsLinkobjects.Activity.clone()method'sobjectoption no more accepts aLinkobject.Activity.clone()method'sobjectsoption no more acceptsLinkobjects.
-
Activity'sactorproperty now accepts onlyActorobjects.new Activity()constructor'sactoroption now accepts only anActorobject.new Activity()constructor'sactorsoption now accepts onlyActorobjects.Activity.getActor()method now returns only anActorobject.Activity.getActors()method now returns onlyActorobjects.Activity.clone()method'sactoroption now accepts only anActorobject.Activity.clone()method'sactorsoption now accepts onlyActorobjects.
-
Added
sensitiveproperty toObjectclass.new Object()constructor now acceptssensitiveoption.- Added
Object.sensitiveattribute. Object.clone()method now acceptssensitiveoption.
-
Now
lookupWebFinger()follows redirections. -
The
http://webfinger.net/rel/profile-pagelinks in WebFinger responses now omittypeproperty.
Fedify 0.3.0
Released on March 15, 2024.
-
Added utility functions for responding with an ActivityPub object:
- Added
respondWithObject()function. - Added
respondWithObjectIfAcceptable()function. - Added
RespondWithObjectOptionsinterface.
- Added
-
Added utility functions for generating and exporting cryptographic keys which are compatible with popular ActivityPub software:
- Added
generateCryptoKeyPair()function. - Added
exportJwk()function. - Added
importJwk()function.
- Added
-
The following functions and methods now throw
TypeErrorif the specifiedCryptoKeyis notextractable:Context.getActorKey()methodContext.sendActivity()methodFederation.sendActivity()method
-
Added
immediateoption toContext.sendActivity()andFederation.sendActivity()methods. -
Added
SendActivityOptionsinterface. -
Now
onNotFound/onNotAcceptableoptions are optional forFederation.handle()method. [#9]
Fedify 0.2.0
Released on March 10, 2024.
-
Implemented NodeInfo 2.1 protocol. [#1]
- Now
Federation.handle()accepts requests for /.well-known/nodeinfo. - Added
Federation.setNodeInfoDispatcher()method. - Added
Context.getNodeInfoUri()method. - Added
NodeInfointerface. - Added
Softwareinterface. - Added
Protocoltype. - Added
Servicesinterface. - Added
InboundServicetype. - Added
OutboundServicetype. - Added
Usageinterface. - Added
NodeInfoDispatchertype. - Added
nodeInfoToJson()function.
- Now
-
Implemented WebFinger client.
- Added
lookupObject()function. - Added
lookupWebFinger()function.
- Added
-
Federation.handle()now responds withAccess-Control-Allow-Origin: *header for WebFinger requests. -
fetchDocumentLoader(), the default document loader, now sendsAccept: application/activity+json, application/ld+jsonheader (wasAccept: application/ld+jsononly).
Fedify 0.1.0
Initial release. Released on March 8, 2024.