setup-crowi.ts 963 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { Server } from 'http';
  2. import Crowi from '../../src/server/crowi';
  3. let _instance: Crowi;
  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. ]);
  12. await Promise.all([
  13. crowi.setupPassport(),
  14. crowi.setupAttachmentService(),
  15. crowi.setUpAcl(),
  16. crowi.setupPageService(),
  17. crowi.setupInAppNotificationService(),
  18. crowi.setupActivityService(),
  19. crowi.setupUserGroupService(),
  20. ]);
  21. };
  22. export async function getInstance(isNewInstance?: boolean): Promise<Crowi> {
  23. if (isNewInstance) {
  24. const crowi = new Crowi();
  25. await initCrowi(crowi);
  26. return crowi;
  27. }
  28. // initialize singleton instance
  29. if (_instance == null) {
  30. _instance = new Crowi();
  31. await initCrowi(_instance);
  32. }
  33. return _instance;
  34. }