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
JavaScript
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);
;