@@ -113,33 +113,30 @@ interface PluginDetails {
113113 */
114114export async function loadPlugin ( url : string , packageName : string | null ) : Promise < string > {
115115 try {
116- const res = await loadPluginImpl ( url , packageName ) ;
116+ if ( DEBUG ) {
117+ if ( registeredPluginUrls . has ( url ) ) throw new Error ( "This plugin has already been registered" ) ;
118+ registeredPluginUrls . add ( url ) ;
119+ }
120+
121+ const plugin = ( await import ( url ) ) . default as Plugin ;
122+ const res = registerPlugin ( plugin , packageName ) ;
117123 return JSON . stringify ( { Success : res } ) ;
118124 } catch ( err ) {
119125 return JSON . stringify ( { Failure : getErrorMessage ( err ) } ) ;
120126 }
121127}
122128
123129/**
124- * Load a plugin.
130+ * Register a plugin.
125131 *
126- * @param url - Absolute path of plugin file as a `file://...` URL
132+ * @param plugin - Plugin
127133 * @param packageName - Optional package name from `package.json` (fallback if `plugin.meta.name` is not defined)
128134 * @returns - Plugin details
129- * @throws {* } If plugin throws during import
130135 * @throws {Error } If `plugin.meta.name` is `null` / `undefined` and `packageName` not provided
131136 * @throws {TypeError } If one of plugin's rules is malformed, or its `createOnce` method returns invalid visitor
132137 * @throws {TypeError } if `plugin.meta.name` is not a string
133- * @throws {Error } In debug build if plugin has already been registered
134138 */
135- async function loadPluginImpl ( url : string , packageName : string | null ) : Promise < PluginDetails > {
136- if ( DEBUG ) {
137- if ( registeredPluginUrls . has ( url ) ) throw new Error ( "This plugin has already been registered" ) ;
138- registeredPluginUrls . add ( url ) ;
139- }
140-
141- const { default : plugin } = ( await import ( url ) ) as { default : Plugin } ;
142-
139+ function registerPlugin ( plugin : Plugin , packageName : string | null ) : PluginDetails {
143140 // TODO: Use a validation library to assert the shape of the plugin, and of rules
144141
145142 const pluginName = getPluginName ( plugin , packageName ) ;
0 commit comments