MCPcopy
hub / github.com/ZToolsCenter/ZTools / resolvePluginUrl

Method resolvePluginUrl

src/main/managers/pluginManager.ts:181–210  ·  view source on GitHub ↗

* 解析插件入口 URL * @returns pluginUrl(字符串)以及是否无界面插件

(
    pluginPath: string,
    pluginConfig: any,
    isDevelopment: boolean
  )

Source from the content-addressed store, hash-verified

179 * @returns pluginUrl(字符串)以及是否无界面插件
180 */
181 private resolvePluginUrl(
182 pluginPath: string,
183 pluginConfig: any,
184 isDevelopment: boolean
185 ): { pluginUrl: string; isConfigHeadless: boolean } {
186 const isConfigHeadless = !pluginConfig.main
187
188 if (isConfigHeadless) {
189 console.log('[Plugin] 检测到无界面插件(Config):', pluginConfig.name)
190 return { pluginUrl: pathToFileURL(hideWindowHtml).href, isConfigHeadless }
191 }
192 if (isDevelopment && pluginConfig.development?.main) {
193 console.log('[Plugin] 开发中插件,使用 development.main:', pluginConfig.development.main)
194 return { pluginUrl: pluginConfig.development.main, isConfigHeadless }
195 }
196 if (pluginConfig.main.startsWith('http')) {
197 console.log('[Plugin] 网络插件:', pluginConfig.main)
198 return { pluginUrl: pluginConfig.main, isConfigHeadless }
199 }
200 // 生产环境内置插件:使用本地 HTTP server 加载(避免 file:// 下的 CSP 限制)
201 if (isBundledInternalPlugin(pluginConfig.name) && getInternalPluginServerPort() > 0) {
202 const httpUrl = getInternalPluginUrl(pluginConfig.name, pluginConfig.main)
203 console.log('[Plugin] 内置插件使用 HTTP server:', httpUrl)
204 return { pluginUrl: httpUrl, isConfigHeadless }
205 }
206 return {
207 pluginUrl: pathToFileURL(path.join(pluginPath, pluginConfig.main)).href,
208 isConfigHeadless
209 }
210 }
211
212 /**
213 * 创建并配置插件的 session(注册 preload、代理、图标协议)

Callers 3

createNewPluginViewMethod · 0.95
preloadPluginMethod · 0.95

Calls 3

isBundledInternalPluginFunction · 0.90
getInternalPluginUrlFunction · 0.90

Tested by

no test coverage detected