UNPKG

nestjs-mvc-tools

Version:

NestJS MVC Tools is a small set of tools designed to help you get started more easily with traditional web development approaches in NestJS.

106 lines (105 loc) 5.75 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 __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var EdgeJsService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.EdgeJsService = exports.GLOBALS_FACTORY_PROVIDER_TOKEN = void 0; const common_1 = require("@nestjs/common"); const edge_js_1 = require("edge.js"); const path_1 = require("path"); const nest_mvc_logger_service_1 = require("./nest-mvc-logger.service"); const nest_mvc_options_service_1 = require("./nest-mvc-options.service"); const vite_asset_path_helper_factory_service_1 = require("./vite-asset-path-helper-factory.service"); exports.GLOBALS_FACTORY_PROVIDER_TOKEN = 'GLOBALS_FACTORY_PROVIDER'; /** * Service for managing Edge.js template engine integration with NestJS. * Provides initialization, configuration, and access to Edge.js instances for server-side rendering. */ let EdgeJsService = EdgeJsService_1 = class EdgeJsService { // -------------------------------------------------------- // Methods // -------------------------------------------------------- constructor(optionsService, logger, viteAssetPathHelperFactory, globalsFactoryResult) { this.optionsService = optionsService; this.logger = logger; this.viteAssetPathHelperFactory = viteAssetPathHelperFactory; this.globalsFactoryResult = globalsFactoryResult; // -------------------------------------------------------- // Properties // -------------------------------------------------------- this.edgeInstance = null; this.options = this.optionsService.viewOptions; this.logger.debug('EdgeJsService constructor called', EdgeJsService_1.name); this.init(); } getEdgeInstance() { this.logger.debug('Getting Edge instance', EdgeJsService_1.name); if (!this.edgeInstance) { throw new Error("not initialized edge instance"); } return this.edgeInstance; } init() { this.logger.debug('Initializing EdgeJs service', EdgeJsService_1.name); try { // Create EdgeJs instance and assign properties this.edgeInstance = edge_js_1.Edge.create({ cache: this.options.cache, }); this.logger.debug(`EdgeJs instance created with cache: ${this.options.cache}`, EdgeJsService_1.name); // Mount default path this.edgeInstance.mount(this.options.rootDir); this.logger.debug(`Mounted default path: ${this.options.rootDir}`, EdgeJsService_1.name); // Mount custom disks for (const disk of this.options.disks) { this.edgeInstance.mount(disk, (0, path_1.join)(this.options.rootDir, disk)); this.logger.debug(`Mounted custom disk: ${disk} -> ${(0, path_1.join)(this.options.rootDir, disk)}`, EdgeJsService_1.name); } // Register helper function with [viteAssetPath] key const viteAssetPathHelperFn = this.viteAssetPathHelperFactory.create(); this.edgeInstance.global("viteAssetPath", viteAssetPathHelperFn); this.logger.debug('Registered viteAssetPath helper function', EdgeJsService_1.name); // Register static global helpers if (this.options.globals) { for (const [key, value] of Object.entries(this.options.globals)) { this.edgeInstance.global(key, value); this.logger.debug(`Registered static global helper: ${key}`, EdgeJsService_1.name); } } // Register factory-based global helpers if (this.globalsFactoryResult) { for (const [key, value] of Object.entries(this.globalsFactoryResult)) { this.edgeInstance.global(key, value); this.logger.debug(`Registered factory global helper: ${key}`, EdgeJsService_1.name); } } this.logger.debug('EdgeJs service initialization completed successfully', EdgeJsService_1.name); } catch (err) { this.logger.error(`EdgeJs service initialization failed: ${err instanceof Error ? err.message : String(err)}`, EdgeJsService_1.name); if (err instanceof Error) { throw new Error(err.message); } throw new Error(String(err)); } } }; exports.EdgeJsService = EdgeJsService; exports.EdgeJsService = EdgeJsService = EdgeJsService_1 = __decorate([ (0, common_1.Injectable)(), __param(3, (0, common_1.Optional)()), __param(3, (0, common_1.Inject)(exports.GLOBALS_FACTORY_PROVIDER_TOKEN)), __metadata("design:paramtypes", [nest_mvc_options_service_1.NestMvcOptionsService, nest_mvc_logger_service_1.NestMvcLoggerService, vite_asset_path_helper_factory_service_1.ViteAssetPathHelperFactoryService, Object]) ], EdgeJsService);