( conn, pluginFolder = pluginFolder, pluginFilter = pluginFilter, _ev, filename )
| 52 | } |
| 53 | |
| 54 | async function reload( |
| 55 | conn, |
| 56 | pluginFolder = pluginFolder, |
| 57 | pluginFilter = pluginFilter, |
| 58 | _ev, |
| 59 | filename |
| 60 | ) { |
| 61 | if (pluginFilter(filename)) { |
| 62 | let dir = global.__filename(join(pluginFolder, filename), true) |
| 63 | if (filename in plugins) { |
| 64 | if (existsSync(dir)) conn.logger.info(` updated plugin - '${filename}'`) |
| 65 | else { |
| 66 | conn?.logger.warn(`deleted plugin - '${filename}'`) |
| 67 | return delete plugins[filename] |
| 68 | } |
| 69 | } else conn?.logger.info(`new plugin - '${filename}'`) |
| 70 | let err = syntaxerror(readFileSync(dir), filename, { |
| 71 | sourceType: 'module', |
| 72 | allowAwaitOutsideFunction: true, |
| 73 | }) |
| 74 | if (err) conn.logger.error(`syntax error while loading '${filename}'\n${format(err)}`) |
| 75 | else |
| 76 | try { |
| 77 | const module = await importFile(global.__filename(dir)).catch(console.error) |
| 78 | if (module) plugins[filename] = module |
| 79 | } catch (e) { |
| 80 | conn?.logger.error(`error require plugin '${filename}\n${format(e)}'`) |
| 81 | } finally { |
| 82 | plugins = Object.fromEntries(Object.entries(plugins).sort(([a], [b]) => a.localeCompare(b))) |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | |
| 87 | export { |
| 88 | pluginFolder, |
nothing calls this directly
no test coverage detected