UNPKG

@hanivanrizky/nestjs-html-parser

Version:

⚠️ ARCHIVED - This package is no longer maintained. Please migrate to @hanivanrizky/nestjs-xpath-parser (https://github.com/Hanivan/nestjs-xpath-parser)

189 lines 6.46 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var HtmlParserModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.HtmlParserModule = void 0; const common_1 = require("@nestjs/common"); const html_parser_config_1 = require("./html-parser.config"); const html_parser_service_1 = require("./html-parser.service"); /** * HTML Parser Module with default configuration * * When imported directly, provides HtmlParserService with default settings: * - loggerLevel: 'log' * * For custom configuration, use forRoot() or forRootAsync() */ let HtmlParserModule = HtmlParserModule_1 = class HtmlParserModule { /** * Configure the HTML Parser Module with custom options * * @param config - Configuration options for the HTML Parser * @returns DynamicModule with configured providers * * @example * Basic configuration * ```typescript * @Module({ * imports: [ * HtmlParserModule.forRoot({ * loggerLevel: 'debug' * }) * ], * }) * export class AppModule {} * ``` * * @example * Using different logger levels * ```typescript * // For production - minimal logging * HtmlParserModule.forRoot({ loggerLevel: 'error' }) * * // For development - detailed logging * HtmlParserModule.forRoot({ loggerLevel: 'debug' }) * * // For testing - verbose logging * HtmlParserModule.forRoot({ loggerLevel: 'verbose' }) * ``` */ static forRoot(config = {}) { const configProvider = { provide: html_parser_config_1.HTML_PARSER_LOGGER_LEVEL, useValue: config.loggerLevel || ['log', 'error', 'debug'], }; return { module: HtmlParserModule_1, providers: [html_parser_service_1.HtmlParserService, configProvider], exports: [html_parser_service_1.HtmlParserService], }; } /** * Configure the HTML Parser Module asynchronously * * Useful when configuration depends on other modules or services that need to be initialized first. * * @param options - Async configuration options * @returns DynamicModule with async configured providers * * @example * Using with ConfigService * ```typescript * @Module({ * imports: [ * ConfigModule.forRoot(), * HtmlParserModule.forRootAsync({ * imports: [ConfigModule], * useFactory: (configService: ConfigService) => ({ * loggerLevel: configService.get('HTML_PARSER_LOGGER_LEVEL', 'warn') * }), * inject: [ConfigService], * }), * ], * }) * export class AppModule {} * ``` * * @example * Using with custom configuration factory * ```typescript * @Injectable() * class HtmlParserConfigService implements HtmlParserConfigFactory { * createHtmlParserConfig(): HtmlParserConfig { * return { * loggerLevel: process.env.NODE_ENV === 'production' ? 'error' : 'debug' * }; * } * } * * @Module({ * imports: [ * HtmlParserModule.forRootAsync({ * useClass: HtmlParserConfigService, * }), * ], * }) * export class AppModule {} * ``` * * @example * Using with existing provider * ```typescript * @Module({ * imports: [ * HtmlParserModule.forRootAsync({ * useExisting: MyExistingConfigService, * }), * ], * }) * export class AppModule {} * ``` */ static forRootAsync(options) { const asyncProviders = this.createAsyncProviders(options); return { module: HtmlParserModule_1, imports: options.imports || [], providers: [html_parser_service_1.HtmlParserService, ...asyncProviders], exports: [html_parser_service_1.HtmlParserService], }; } /** * Create async providers for the module configuration * * @param options - Async configuration options * @returns Array of providers for async configuration * @private */ static createAsyncProviders(options) { if (options.useFactory) { return [ { provide: html_parser_config_1.HTML_PARSER_LOGGER_LEVEL, useFactory: async (...args) => { const config = await options.useFactory(...args); return (config.loggerLevel || ['log', 'error', 'debug']); }, inject: options.inject || [], }, ]; } // useClass or useExisting const inject = [ (options.useExisting || options.useClass), ]; return [ { provide: html_parser_config_1.HTML_PARSER_LOGGER_LEVEL, useFactory: async (factory) => { const config = await factory.createHtmlParserConfig(); return (config.loggerLevel || ['log', 'error', 'debug']); }, inject, }, ...(options.useClass ? [{ provide: options.useClass, useClass: options.useClass }] : []), ]; } }; exports.HtmlParserModule = HtmlParserModule; exports.HtmlParserModule = HtmlParserModule = HtmlParserModule_1 = __decorate([ (0, common_1.Module)({ providers: [ html_parser_service_1.HtmlParserService, { provide: html_parser_config_1.HTML_PARSER_LOGGER_LEVEL, useValue: ['log', 'error', 'debug'], }, ], exports: [html_parser_service_1.HtmlParserService], }) ], HtmlParserModule); //# sourceMappingURL=html-parser.module.js.map