EmbyCrackedClient/web/modules/common/pluginmanager.js

1 line
6.8 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import events from"./../emby-apiclient/events.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import{appHost}from"./servicelocator.js";import globalize from"./globalize.js";let cacheParam=Date.now();function loadStrings(plugin){var strings=plugin.getTranslations?plugin.getTranslations():[];return globalize.loadStrings({name:plugin.id||plugin.packageName,strings:strings})}function definePluginRoute(pluginManager,appRouter,route,plugin){route.contentPath=pluginManager.mapPath(plugin,route.path),route.path=pluginManager.mapRoute(plugin,route),appRouter.addRoute(route)}function PluginManager(){this.pluginsList=[]}PluginManager.prototype.loadPluginFromUrl=function(url){console.log("Loading plugin: "+url);let instance=this;return require([url]).then(function(responses){responses=responses[0];return instance.loadPlugin(responses,url)})},PluginManager.prototype.loadPlugin=function(pluginFactory,url){let instance=this;return Emby.importModule("./modules/approuter.js").then(function(appRouter){console.log("creating plugin instance from: "+url);let plugin=new pluginFactory;var baseUrl;return instance.pluginsList.filter(function(p){return p.id===plugin.id})[0]?Promise.resolve():(baseUrl=appRouter.baseUrl(),(url=(url=url.startsWith("./")?url.substring(2):url).endsWith(".js")?url.substring(0,url.length-3):url).includes("://")||url.startsWith(baseUrl)||(url=baseUrl+"/"+url),baseUrl=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\")),plugin.baseUrl=url.substring(0,baseUrl),instance.register(plugin),plugin.getRoutes&&plugin.getRoutes().forEach(function(route){definePluginRoute(instance,appRouter,route,plugin)}),console.log("loading plugin strings"),loadStrings(plugin))})},PluginManager.prototype.register=function(obj){this.pluginsList.push(obj),events.trigger(this,"registered",[obj])},PluginManager.prototype.ofType=function(type){return this.pluginsList.filter(function(o){return o.type===type})},PluginManager.prototype.plugins=function(){return this.pluginsList},PluginManager.prototype.mapRoute=function(plugin,route){return"string"==typeof plugin&&(plugin=this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]),0===(route=route.path||route).toLowerCase().indexOf("http")?route:"/plugins/"+plugin.id+"/"+route},PluginManager.prototype.mapPath=function(plugin,path,addCacheParam){let url=(plugin="string"==typeof plugin?this.pluginsList.filter(function(p){return(p.id||p.packageName)===plugin})[0]:plugin).baseUrl+"/"+path;return url=addCacheParam?(url+=-1===url.indexOf("?")?"?":"&")+"v="+cacheParam:url};let allowedPluginConfigs=["de228f12-e43e-4bd9-9fc0-2830819c3b92","899c12c7-5b40-4c4e-9afd-afd74a685eb1","14f5f69e-4c8d-491b-8917-8e90e8317530","02528C96-F727-44D7-BE87-9EEF040758C3","dc372f99-4e0e-4c6b-8c18-2b887ca4530c","830fc68f-b964-4d2f-b139-48e22cd143c","b9f0c474-e9a8-4292-ae41-eb3c1542f4cd","7cfbb821-e8fd-40ab-b64e-a7749386a6b2","4C2FDA1C-FD5E-433A-AD2B-718E0B73E9A9","cd5a19be-7676-48ef-b64f-a17c98f2b889","b2ff6a63-303a-4a84-b937-6e12f87e3eb9","0277E613-3EC0-4360-A3DE-F8AF0AABB5E9","9464BD84-D30D-4404-B2AD-DFF4E12D5FC5","9574ac10-bf23-49bc-949f-924f23cfa48f","66fd72a4-7e8e-4f22-8d1c-022ce4b9b0d5","4DCB591C-0FA2-4C5D-A7E5-DABE37164C8B","8e791e2a-058a-4b12-8493-8bf69d92d685","577f89eb-58a7-4013-be06-9a970ddb1377","6153FDF0-40CC-4457-8730-3B4A19512BAE","de228f12-e43e-4bd9-9fc0-2830819c3b92","6C3B6965-C257-47C2-AA02-64457AE21D91","2FE79C34-C9DC-4D94-9DF2-2F3F36764414","0417264b-5a93-4ad0-a1f0-b87569b7cf80","e711475e-efad-431b-8527-033ba9873a34","AB95885A-1D0E-445E-BDBF-80C1912C98C5","F015EA06-B413-47F1-BF15-F049A799658B","986a7283-205a-4436-862d-23135c067f8a","8abc6789-fde2-4705-8592-4028806fa343","2850d40d-9c66-4525-aa46-968e8ef04e97","830fc68f-b964-4d2f-b139-48e22cd143c7","8D7D93B2-01DC-48DC-8C5D-4E7ABBD9F9EB","341944AF-4959-47E5-8ACE-398520208A71","3A63A9F3-810E-44F6-910A-14D6AD1255EC","E610BA80-9750-47BC-979D-3F0FC86E0081","C68856B8-6031-480D-B08E-43B9114ADDB2","7FB7FF5E-5407-4F74-8990-B7AA643085D2","3A63A9F3-810E-44F6-910A-14D6AD1255EC","0A70BB83-E28F-4633-923D-B87244697831","CEA173E8-88