flotilla.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const stack = require("secret-stack");
  2. const shuffle = require("lodash.shuffle");
  3. const debug = require("debug")("oasis");
  4. const ssbConfig = require("ssb-config");
  5. const plugins = [
  6. // Authentication often hooked for authentication.
  7. require("ssb-master"),
  8. require("ssb-db"),
  9. require("ssb-replicate"),
  10. require("ssb-backlinks"),
  11. require("ssb-conn"),
  12. shuffle([
  13. require("ssb-about"),
  14. require("ssb-blobs"),
  15. require("ssb-ebt"),
  16. require("ssb-friends"),
  17. require("ssb-invite"),
  18. require("ssb-lan"),
  19. require("ssb-logging"),
  20. require("ssb-meme"),
  21. require("ssb-no-auth"),
  22. require("ssb-onion"),
  23. require("ssb-ooo"),
  24. require("ssb-plugins"),
  25. require("ssb-private1"),
  26. require("ssb-query"),
  27. require("ssb-room/tunnel/client"),
  28. require("ssb-search"),
  29. require("ssb-tangle"),
  30. require("ssb-unix-socket"),
  31. require("ssb-ws"),
  32. ]),
  33. ];
  34. module.exports = (config) => {
  35. const server = stack();
  36. const walk = (input) => {
  37. if (Array.isArray(input)) {
  38. input.forEach(walk);
  39. } else {
  40. debug(input.name || "???");
  41. server.use(input);
  42. }
  43. };
  44. walk(plugins);
  45. return server({ ...ssbConfig, ...config });
  46. };