diff --git a/package-lock.json b/package-lock.json index b6456bd8..c0e2817a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1136,6 +1136,12 @@ "get-intrinsic": "^1.0.2" } }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1554,6 +1560,15 @@ "ms": "2.0.0" } }, + "decache": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.0.tgz", + "integrity": "sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w==", + "dev": true, + "requires": { + "callsite": "^1.0.0" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", diff --git a/package.json b/package.json index 6aa9c078..6af9077b 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@typescript-eslint/eslint-plugin": "^4.21.0", "@typescript-eslint/parser": "^4.21.0", "converse.js": "^7.0.5", + "decache": "^4.6.0", "eslint": "^7.20.0", "eslint-config-standard": "^16.0.2", "eslint-config-standard-with-typescript": "^20.0.0", diff --git a/server/main.ts b/server/main.ts index ef6cee45..fe9e4eb4 100644 --- a/server/main.ts +++ b/server/main.ts @@ -1,5 +1,9 @@ import { initSettings } from './lib/settings' import { initRouters } from './lib/routers' +import type { Logger } from 'winston' + +const decache = require('decache') +let logger: Logger | undefined async function register ({ registerSetting, @@ -7,6 +11,8 @@ async function register ({ getRouter, peertubeHelpers }: RegisterServerOptions): Promise { + logger = peertubeHelpers.logger + await initSettings({ registerSetting }) await initRouters({ settingsManager, @@ -16,6 +22,10 @@ async function register ({ } async function unregister (): Promise { + const module = __filename + logger?.info(`Unloading module ${module}...`) + decache(module) + logger?.info(`Successfully unloaded the module ${module}`) } module.exports = {