删除文件 lib/renderer/loader.js
This commit is contained in:
		
							parent
							
								
									a6478b91ac
								
							
						
					
					
						commit
						ee1008b758
					
				| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
import fs from 'node:fs'
 | 
					 | 
				
			||||||
import yaml from 'yaml'
 | 
					 | 
				
			||||||
import lodash from 'lodash'
 | 
					 | 
				
			||||||
import cfg from '../config/config.js'
 | 
					 | 
				
			||||||
import { Data } from '#miao'
 | 
					 | 
				
			||||||
import Renderer from './Renderer.js'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** 全局变量 Renderer */
 | 
					 | 
				
			||||||
global.Renderer = Renderer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 加载渲染器
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
class RendererLoader {
 | 
					 | 
				
			||||||
  constructor() {
 | 
					 | 
				
			||||||
    this.renderers = new Map()
 | 
					 | 
				
			||||||
    this.dir = './renderers'
 | 
					 | 
				
			||||||
    // TODO 渲染器热加载
 | 
					 | 
				
			||||||
    this.watcher = {}
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  static async init() {
 | 
					 | 
				
			||||||
    const render = new RendererLoader()
 | 
					 | 
				
			||||||
    await render.load()
 | 
					 | 
				
			||||||
    return render
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  async load() {
 | 
					 | 
				
			||||||
    const subFolders = fs.readdirSync(this.dir, { withFileTypes: true }).filter((dirent) => dirent.isDirectory())
 | 
					 | 
				
			||||||
    for (let subFolder of subFolders) {
 | 
					 | 
				
			||||||
      let name = subFolder.name
 | 
					 | 
				
			||||||
      try {
 | 
					 | 
				
			||||||
        const rendererFn = await Data.importDefault(`${this.dir}/${name}/index.js`)
 | 
					 | 
				
			||||||
        let configFile = `${this.dir}/${name}/config.yaml`
 | 
					 | 
				
			||||||
        let rendererCfg = fs.existsSync(configFile) ? yaml.parse(fs.readFileSync(configFile, 'utf8')) : {}
 | 
					 | 
				
			||||||
        let renderer = rendererFn(rendererCfg)
 | 
					 | 
				
			||||||
        if (!renderer.id || !renderer.type || !renderer.render || !lodash.isFunction(renderer.render)) {
 | 
					 | 
				
			||||||
          logger.warn('渲染后端 ' + (renderer.id || subFolder.name) + ' 不可用')
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        this.renderers.set(renderer.id, renderer)
 | 
					 | 
				
			||||||
        logger.info(`加载渲染后端 ${renderer.id}`)
 | 
					 | 
				
			||||||
      } catch (err) {
 | 
					 | 
				
			||||||
        logger.error(`渲染后端 ${name} 加载失败`)
 | 
					 | 
				
			||||||
        logger.error(err)
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  getRenderer(name = cfg.renderer?.name || 'puppeteer') {
 | 
					 | 
				
			||||||
    // TODO 渲染器降级
 | 
					 | 
				
			||||||
    return this.renderers.get(name)
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default await RendererLoader.init()
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue