"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LanguageServiceProxyBuilder = void 0; class LanguageServiceProxyBuilder { constructor(info) { this.info = info; this.wrappers = []; } wrap(name, wrapper) { this.wrappers.push({ name, wrapper }); return this; } build() { const proxy = Object.create(null); const languageService = this.info.languageService; // 复制所有方法 for (const k of Object.keys(languageService)) { const original = languageService[k]; if (typeof original === 'function') { proxy[k] = (...args) => original.apply(languageService, args); } else { proxy[k] = original; } } // 应用包装器 for (const { name, wrapper } of this.wrappers) { const original = languageService[name]; if (typeof original === 'function') { proxy[name] = wrapper(original, this.info); } } return proxy; } } exports.LanguageServiceProxyBuilder = LanguageServiceProxyBuilder; //# sourceMappingURL=languageServiceProxy.js.map