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