UNPKG

nestjs-telegraf-i18n

Version:
45 lines (39 loc) 1.46 kB
import { Injectable, Logger, OnModuleInit } from "@nestjs/common"; import * as i18nUtils from "nestjs-i18n/dist/utils/context"; @Injectable() export class I18nContextGetterPatcher implements OnModuleInit { private readonly logger = new Logger(this.constructor.name); private readonly _suppressedTypes: Set<string>; constructor( private readonly suppressedTypes: Set<string> | string | string[], ) { if (typeof suppressedTypes === "string") { this._suppressedTypes = new Set([suppressedTypes]); } else if (Array.isArray(suppressedTypes)) { this._suppressedTypes = new Set(suppressedTypes); } else { this._suppressedTypes = suppressedTypes; } } onModuleInit() { this.logger.log( `Patching nestjs-i18n getContextObject to suppress warnings for context types: "${[...this._suppressedTypes].join('", "')}"`, ); if (i18nUtils && (i18nUtils as any).getContextObject) { const originalGetContextObject = (i18nUtils as any).getContextObject; (i18nUtils as any).getContextObject = (...args: any[]) => { const contextType = args[1]?.getType?.() ?? "undefined"; if (this._suppressedTypes.has(contextType)) { return undefined; } return originalGetContextObject.apply(this, args); }; } } } @Injectable() export class TelegrafI18nContextGetterPatcher extends I18nContextGetterPatcher { constructor() { super("telegraf"); } }