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.

75 lines (74 loc) 4.37 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 ViteAssetPathHelperFactoryService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.ViteAssetPathHelperFactoryService = void 0; const common_1 = require("@nestjs/common"); const fs_1 = require("fs"); const nest_mvc_logger_service_1 = require("./nest-mvc-logger.service"); const nest_mvc_options_service_1 = require("./nest-mvc-options.service"); /** * Factory service for creating Vite asset path helper functions. * Generates helpers for resolving asset paths in both development and production modes. */ let ViteAssetPathHelperFactoryService = ViteAssetPathHelperFactoryService_1 = class ViteAssetPathHelperFactoryService { // -------------------------------------------------------- // Methods // -------------------------------------------------------- constructor(optionsService, logger) { this.optionsService = optionsService; this.logger = logger; this.options = this.optionsService.assetOptions; this.logger.debug('ViteAssetPathHelperFactoryService constructor called', ViteAssetPathHelperFactoryService_1.name); this.logger.debug(`Asset options: mode=${this.options.mode}, devServerUrl=${this.options.devServerUrl}`, ViteAssetPathHelperFactoryService_1.name); } create() { this.logger.debug('Creating Vite asset path helper function', ViteAssetPathHelperFactoryService_1.name); let manifest = null; const options = this.options; const logger = this.logger; return function viteAssetPath(path) { logger.debug(`Resolving asset path: ${path} in ${options.mode} mode`, ViteAssetPathHelperFactoryService_1.name); // Return Vite dev server URL in development environment if (options.mode === "development") { const resolvedPath = `${options.devServerUrl}/${path}`; logger.debug(`Development mode - resolved to: ${resolvedPath}`, ViteAssetPathHelperFactoryService_1.name); return resolvedPath; } // Return hashed asset path through manifest file in production environment if (!manifest) { try { const manifestPath = `${options.buildOutDir}/.vite/manifest.json`; const manifestContent = (0, fs_1.readFileSync)(manifestPath, "utf-8"); manifest = JSON.parse(manifestContent); } catch (error) { logger.error(`Error reading manifest file at ${options.buildOutDir}/.vite/manifest.json: ${error}`, ViteAssetPathHelperFactoryService_1.name); return ""; } } const manifestEntry = manifest[path]; if (!manifestEntry) { logger.error(`Asset not found in manifest: ${path}`, ViteAssetPathHelperFactoryService_1.name); return ""; } const resolvedPath = `${options.staticAssetPrefix}/builds/${manifestEntry.file}`; logger.debug(`Production mode - resolved to: ${resolvedPath}`, ViteAssetPathHelperFactoryService_1.name); return resolvedPath; }; } }; exports.ViteAssetPathHelperFactoryService = ViteAssetPathHelperFactoryService; exports.ViteAssetPathHelperFactoryService = ViteAssetPathHelperFactoryService = ViteAssetPathHelperFactoryService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [nest_mvc_options_service_1.NestMvcOptionsService, nest_mvc_logger_service_1.NestMvcLoggerService]) ], ViteAssetPathHelperFactoryService);