UNPKG

node-web-mvc

Version:
58 lines (57 loc) 2.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SpringBootApplication = void 0; const src_1 = __importDefault(require("../hmr/src")); const ElementType_1 = __importDefault(require("./annotations/annotation/ElementType")); const Target_1 = __importDefault(require("./annotations/Target")); const Tracer_1 = __importDefault(require("./annotations/annotation/Tracer")); const HotUpdaterReleaseManager_1 = __importDefault(require("../hmr/src/HotUpdaterReleaseManager")); class SpringBootApplication { onInitialize() { if (this.isDist) { this.hot = null; } } constructor(meta) { const clazz = meta.ctor; registerHotUpdate(meta.ctor); if (typeof clazz.main === 'function') { setTimeout(() => { this.onInitialize(); clazz.main(); }, 10); } } } exports.SpringBootApplication = SpringBootApplication; exports.default = (0, Target_1.default)([ElementType_1.default.TYPE])(SpringBootApplication); function registerHotUpdate(clazz) { if (typeof require == 'function') { const tracer = Tracer_1.default.getTracer(clazz); const mod = (require.cache[tracer.id] || (require.main.filename == tracer.id ? require.main : null)); if (mod && !mod.hot) { src_1.default.makeHash(mod.filename); src_1.default.create(mod) .preload((old) => { if (old == mod) { // 重启服务清理步骤 // 1. 移除所有模块缓存 Object.keys(require.cache).forEach((key) => { const old = require.cache[key]; const isHotUpdater = old.exports.default == HotUpdaterReleaseManager_1.default; if (isHotUpdater) return; delete require.cache[key]; }); // 2. 关闭http等需要释放的服务 HotUpdaterReleaseManager_1.default.destroy(); // 重置启动时间 process.emit('message', { type: 'RESET_NODE_MVC_STARTER_TIME' }, null); } }); } } }