50 行
3.0 KiB
Go
50 行
3.0 KiB
Go
// Package contains constructors and functions necessary for applications to
|
|
// serialize, deserialize, and use ActivityStreams types in Go. This package
|
|
// is code-generated and subject to the same license as the go-fed tool used
|
|
// to generate it.
|
|
//
|
|
// This package is useful to three classes of developers: end-user-application
|
|
// developers, specification writers creating an ActivityStream Extension, and
|
|
// ActivityPub implementors wanting to create an alternate ActivityStreams
|
|
// implementation that still satisfies the interfaces generated by the go-fed
|
|
// tool.
|
|
//
|
|
// Application developers should limit their use to the Resolver type, the
|
|
// constructors beginning with "New", the "Extends" functions, the
|
|
// "DisjointWith" functions, the "ExtendedBy" functions, and any interfaces
|
|
// returned in those functions in this package. This lets applications use
|
|
// Resolvers to Deserialize or Dispatch specific types. The types themselves
|
|
// can Serialize as needed. The "Extends", "DisjointWith", and "ExtendedBy"
|
|
// functions help navigate the ActivityStreams hierarchy since it is not
|
|
// equivalent to object-oriented inheritance.
|
|
//
|
|
// When creating an ActivityStreams extension, developers will want to ensure
|
|
// that the generated code builds correctly and check that the properties,
|
|
// types, extensions, and disjointedness is set up correctly. Writing unit
|
|
// tests with concrete types is then the next step. If the tool has an error
|
|
// generating this code, a fix is needed in the tool as it is likely there is
|
|
// a new RDF type being used in the extension that the tool does not know how
|
|
// to resolve. Thus, most development will focus on the go-fed tool itself.
|
|
//
|
|
// Finally, ActivityStreams implementors that want drop-in replacement while
|
|
// still using the generated interfaces are highly encouraged to examine the
|
|
// Manager type in this package (in addition to the constructors) as these are
|
|
// the locations where concrete types are instantiated. When supplying a
|
|
// different type in these two locations, the other generated code will
|
|
// propagate it throughout the rest of an application. The Manager is
|
|
// instantiated as a singleton at init time in this library. It is then
|
|
// injected into each implementation library so they can deserialize their
|
|
// needed types without relying on the underlying concrete type.
|
|
//
|
|
// Subdirectories of this package include implementation files and functions
|
|
// that are not intended to be directly linked to applications, but are used
|
|
// by this particular package. It is strongly recommended to only use the
|
|
// property interfaces and type interfaces in subdirectories and limiting
|
|
// concrete types to those in this package. The go-fed tool is likely to
|
|
// contain a pruning feature in the future which will analyze an application
|
|
// and eliminate code that would be dead if it were to be generated which
|
|
// reduces the compilation time, compilation resources, and binary size of an
|
|
// application. Such a feature will not be compatible with applications that
|
|
// use the concrete implementation types.
|
|
package streams
|