index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // ===========================================
  2. // Wiki.js
  3. // Licensed under AGPLv3
  4. // ===========================================
  5. const path = require('path')
  6. const { nanoid } = require('nanoid')
  7. const { DateTime } = require('luxon')
  8. const semver = require('semver')
  9. if (!semver.satisfies(process.version, '>=18')) {
  10. console.error('ERROR: Node.js 18.x or later required!')
  11. process.exit(1)
  12. }
  13. let WIKI = {
  14. IS_DEBUG: process.env.NODE_ENV === 'development',
  15. IS_MASTER: true,
  16. ROOTPATH: process.cwd(),
  17. INSTANCE_ID: nanoid(10),
  18. SERVERPATH: path.join(process.cwd(), 'server'),
  19. Error: require('./helpers/error'),
  20. configSvc: require('./core/config'),
  21. kernel: require('./core/kernel'),
  22. sites: {},
  23. sitesMappings: {},
  24. startedAt: DateTime.utc(),
  25. storage: {
  26. defs: [],
  27. modules: []
  28. }
  29. }
  30. global.WIKI = WIKI
  31. WIKI.configSvc.init()
  32. // ----------------------------------------
  33. // Init Logger
  34. // ----------------------------------------
  35. WIKI.logger = require('./core/logger').init()
  36. // ----------------------------------------
  37. // Start Kernel
  38. // ----------------------------------------
  39. WIKI.kernel.init()
  40. // ----------------------------------------
  41. // Register exit handler
  42. // ----------------------------------------
  43. process.on('SIGINT', () => {
  44. WIKI.kernel.shutdown()
  45. })
  46. process.on('message', (msg) => {
  47. if (msg === 'shutdown') {
  48. WIKI.kernel.shutdown()
  49. }
  50. })