a shared library to build ssb apps
or the shared assumptions of all (or most) ssb related applications
ssb-about@2)here's a list of apps in the wild using patchcore:
here's a list of plugins that build on top of patchcore:
to use this you must understand depject but also the historical context - depject is short for ~dependency injection" it was intended to make software that was very easy to add features to, but this didn't really work out. And most of the applications built on it embrace "strong opinions" but still happen to use depject, which is now inconvienient to change, because it's used throughout the entire app.
the patchcore files are organized in the following hierarchy:
${topic} / ${type} / ${module}.js
or when module name is different from file name (this only happens within message/html):
${topic} / ${type} / ${module} / ${file}.js
some cases, the module is skipped (in topics: about, contact, backlinks, feed)
${topic} / ${type}.js
and, (only in backlinks/obs topic/type) the type and module are part of the same name.
{$topic=backlinks} / ${type=obs}-$name}
finally, the config, emoji, keys, and sbot topics types. it's just a single javascript.
${topic}.js
about messages, for setting avatars and names.config.sync.load method that loads config.sync a function that returns an ordinary javascript value, such as a string or number. Usually a simple utility function.async a function that takes a callback, and does IO. It may query the database or publish a message.pull returns pull-stream source, sink, or through. Sometimes pull type returns a function that then creates a pull stream.obs sometimes, return a mutant observable this is generally for things that change in real time or may load slowly, and you usually want to display them as a single thing (i.e. number of likes, or an avatar name). sometimes obs really just wrap async methods, but obs play more nicely with mutant than async functions do, other times obs functions directly expose a obs, or expose a function that you pass the listener to.html returns an HtmlElement this may have dynamic behaviour.AGPL-3.0