@@ -35,7 +35,8 @@ export interface ExtensionDevOptions {
3535 buildDirectory ?: string
3636
3737 /**
38- * The extension to be built.
38+ * All real extensions in the app, including non-previewable ones (e.g., admin config).
39+ * Previewable extensions are filtered internally for the UI payload.
3940 */
4041 extensions : ExtensionInstance [ ]
4142
@@ -126,14 +127,20 @@ export async function devUIExtensions(options: ExtensionDevOptions): Promise<voi
126127 const bundlePath = payloadOptions . appWatcher . buildOutputPath
127128 const payloadStoreRawPayload = await getExtensionsPayloadStoreRawPayload ( payloadOptions , bundlePath )
128129 const payloadStore = new ExtensionsPayloadStore ( payloadStoreRawPayload , payloadOptions )
129- let extensions = payloadOptions . extensions
130+ let extensions = payloadOptions . extensions . filter ( ( ext ) => ext . isPreviewable )
130131
131132 const getExtensions = ( ) => {
132133 return extensions
133134 }
134135
135136 outputDebug ( `Setting up the UI extensions HTTP server...` , payloadOptions . stdout )
136- const httpServer = setupHTTPServer ( { devOptions : payloadOptions , payloadStore, getExtensions} )
137+ const getAppAssets = ( ) => payloadStore . getAppAssets ( )
138+ const httpServer = setupHTTPServer ( {
139+ devOptions : payloadOptions ,
140+ payloadStore,
141+ getExtensions,
142+ getAppAssets,
143+ } )
137144
138145 outputDebug ( `Setting up the UI extensions Websocket server...` , payloadOptions . stdout )
139146 const websocketConnection = setupWebsocketConnection ( { ...payloadOptions , httpServer, payloadStore} )
@@ -144,6 +151,11 @@ export async function devUIExtensions(options: ExtensionDevOptions): Promise<voi
144151 extensions = app . allExtensions . filter ( ( ext ) => ext . isPreviewable )
145152 }
146153
154+ // Exception for AdminConfig: it's a extension that needs its config extracted at the app level
155+ // for the payloed. No other exceptions should be added, if this pattern is needed again we should
156+ // generalize it.
157+ payloadStore . updateAdminConfigFromExtensionEvents ( extensionEvents )
158+
147159 for ( const event of extensionEvents ) {
148160 if ( ! event . extension . isPreviewable ) continue
149161 const status = event . buildResult ?. status === 'ok' ? 'success' : 'error'
0 commit comments