@@ -47,17 +47,18 @@ class Plugins {
4747
4848 registeredPlugins : Type . ActivatedPlugin [ ] = [ ] ;
4949
50+ initialization : Promise < void > ;
51+
5052 constructor ( ) {
51- this . init ( ) ;
53+ this . initialization = this . init ( ) ;
5254 }
5355
54- init ( ) {
56+ async init ( ) {
5557 this . registerBuiltin ( ) ;
5658
57- getPluginsStatus ( ) . then ( ( plugins ) => {
58- this . registeredPlugins = plugins . filter ( ( p ) => p . enabled ) ;
59- this . registerPlugins ( ) ;
60- } ) ;
59+ const plugins = await getPluginsStatus ( ) . catch ( ( ) => [ ] ) ;
60+ this . registeredPlugins = plugins . filter ( ( p ) => p . enabled ) ;
61+ await this . registerPlugins ( ) ;
6162 }
6263
6364 refresh ( ) {
@@ -101,12 +102,9 @@ class Plugins {
101102 return func ;
102103 } )
103104 . filter ( ( p ) => p ) ;
104- return new Promise ( ( resolve ) => {
105- plugins . forEach ( async ( p ) => {
106- const plugin = await p ( ) ;
107- this . register ( plugin ) ;
108- } ) ;
109- resolve ( true ) ;
105+ return Promise . all ( plugins . map ( ( p ) => p ( ) ) ) . then ( ( resolvedPlugins ) => {
106+ resolvedPlugins . forEach ( ( plugin ) => this . register ( plugin ) ) ;
107+ return true ;
110108 } ) ;
111109 }
112110
@@ -122,18 +120,6 @@ class Plugins {
122120 this . plugins . push ( plugin ) ;
123121 }
124122
125- activatePlugins ( activatedPlugins : Type . ActivatedPlugin [ ] ) {
126- this . plugins . forEach ( ( plugin : any ) => {
127- const { slug_name } = plugin . info ;
128- const activatedPlugin : any = activatedPlugins ?. find (
129- ( p ) => p . slug_name === slug_name ,
130- ) ;
131- if ( activatedPlugin ) {
132- plugin . activated = activatedPlugin ?. enabled ;
133- }
134- } ) ;
135- }
136-
137123 getPlugin ( slug_name : string ) {
138124 return this . plugins . find ( ( p ) => p . info . slug_name === slug_name ) ;
139125 }
@@ -150,7 +136,8 @@ class Plugins {
150136
151137const plugins = new Plugins ( ) ;
152138
153- const getRoutePlugins = ( ) => {
139+ const getRoutePlugins = async ( ) => {
140+ await plugins . initialization ;
154141 return plugins
155142 . getPlugins ( )
156143 . filter ( ( plugin ) => plugin . info . type === PluginType . Route ) ;
@@ -180,8 +167,8 @@ const validateRoutePlugin = async (slugName) => {
180167 return Boolean ( registeredPlugin ?. enabled ) ;
181168} ;
182169
183- const mergeRoutePlugins = ( routes ) => {
184- const routePlugins = getRoutePlugins ( ) ;
170+ const mergeRoutePlugins = async ( routes ) => {
171+ const routePlugins = await getRoutePlugins ( ) ;
185172 if ( routePlugins . length === 0 ) {
186173 return routes ;
187174 }
0 commit comments