setup-crowi.js 951 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { Server } from 'http';
  2. import Crowi from '~/server/crowi';
  3. let _instance = null;
  4. const initCrowi = async(crowi) => {
  5. await crowi.setupModels();
  6. await crowi.setupConfigManager();
  7. await crowi.setupSocketIoService();
  8. await crowi.socketIoService.attachServer(new Server()); // attach dummy server
  9. await Promise.all([
  10. crowi.setUpApp(),
  11. crowi.setUpXss(),
  12. ]);
  13. await Promise.all([
  14. crowi.setupPassport(),
  15. crowi.setupAttachmentService(),
  16. crowi.setUpAcl(),
  17. crowi.setupPageService(),
  18. crowi.setupInAppNotificationService(),
  19. crowi.setupActivityService(),
  20. crowi.setupUserGroupService(),
  21. ]);
  22. };
  23. export async function getInstance(isNewInstance) {
  24. if (isNewInstance) {
  25. const crowi = new Crowi();
  26. await initCrowi(crowi);
  27. return crowi;
  28. }
  29. // initialize singleton instance
  30. if (_instance == null) {
  31. _instance = new Crowi();
  32. await initCrowi(_instance);
  33. }
  34. return _instance;
  35. }