setup-crowi.js 803 B

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