entry.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import './polyfills'
  2. import 'zone.js'
  3. import 'core-js/proposals/reflect-metadata'
  4. import 'core-js/features/array/flat'
  5. import 'rxjs'
  6. import '../app/src/global.scss'
  7. import '../app/src/toastr.scss'
  8. import { enableProdMode, NgModuleRef, ApplicationRef } from '@angular/core'
  9. import { enableDebugTools } from '@angular/platform-browser'
  10. import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
  11. import { getRootModule } from '../app/src/app.module'
  12. import { BootstrapData, BOOTSTRAP_DATA } from '../tabby-core/src/api/mainProcess'
  13. interface BootstrapOptions {
  14. packageModules: any[]
  15. bootstrapData: BootstrapData
  16. debugMode: boolean
  17. connector: any
  18. }
  19. window['bootstrapTabby'] = async function bootstrap (options: BootstrapOptions): Promise<NgModuleRef<any>> {
  20. window.parent.postMessage('request-connector', '*')
  21. const pluginModules = []
  22. for (const packageModule of options.packageModules) {
  23. if (!packageModule.default) {
  24. continue
  25. }
  26. const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
  27. pluginModule.pluginName = packageModule.pluginName
  28. pluginModule.bootstrap = packageModule.bootstrap
  29. pluginModules.push(pluginModule)
  30. }
  31. if (!options.debugMode) {
  32. enableProdMode()
  33. }
  34. const module = getRootModule(pluginModules)
  35. window['rootModule'] = module
  36. const moduleRef = await platformBrowserDynamic([
  37. { provide: BOOTSTRAP_DATA, useValue: options.bootstrapData },
  38. { provide: 'WEB_CONNECTOR', useValue: options.connector },
  39. ]).bootstrapModule(module)
  40. if (options.debugMode) {
  41. const applicationRef = moduleRef.injector.get(ApplicationRef)
  42. const componentRef = applicationRef.components[0]
  43. enableDebugTools(componentRef)
  44. }
  45. return moduleRef
  46. }