@nestjs-mod/common
Version:
A collection of utilities for unifying NestJS applications and modules
79 lines • 6.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProjectUtils = void 0;
const types_1 = require("../../../nest-module/types");
const utils_1 = require("../../../nest-module/utils");
const project_utils_configuration_1 = require("./project-utils.configuration");
const project_utils_constants_1 = require("./project-utils.constants");
const application_package_json_service_1 = require("./services/application-package-json.service");
const dot_env_service_1 = require("./services/dot-env.service");
const gitignore_file_1 = require("./services/gitignore-file");
const nx_project_json_service_1 = require("./services/nx-project-json.service");
const package_json_service_1 = require("./services/package-json.service");
const project_utils_patcher_service_1 = require("./services/project-utils-patcher.service");
const wrap_application_options_service_1 = require("./services/wrap-application-options.service");
const wrapApplicationOptionsService = new wrap_application_options_service_1.WrapApplicationOptionsService();
const packageJsonService = new package_json_service_1.PackageJsonService({});
const gitignoreService = new gitignore_file_1.GitignoreService(packageJsonService);
const dotEnvService = new dot_env_service_1.DotEnvService(wrapApplicationOptionsService, {}, gitignoreService);
const applicationPackageJsonService = new application_package_json_service_1.ApplicationPackageJsonService({});
const nxProjectJsonService = new nx_project_json_service_1.NxProjectJsonService({}, applicationPackageJsonService, packageJsonService, dotEnvService);
let projectUtilsPatcherService = undefined;
exports.ProjectUtils = (0, utils_1.createNestModule)({
moduleName: project_utils_constants_1.PROJECT_UTILS_MODULE_NAME,
moduleDescription: 'Utilities for setting global application parameters, such as project name, description, and settings validation parameters.',
moduleCategory: types_1.NestModuleCategory.system,
staticConfigurationModel: project_utils_configuration_1.ProjectUtilsConfiguration,
sharedProviders: [
{ provide: wrap_application_options_service_1.WrapApplicationOptionsService, useValue: wrapApplicationOptionsService },
{ provide: dot_env_service_1.DotEnvService, useValue: dotEnvService },
{ provide: package_json_service_1.PackageJsonService, useValue: packageJsonService },
{ provide: application_package_json_service_1.ApplicationPackageJsonService, useValue: applicationPackageJsonService },
{ provide: gitignore_file_1.GitignoreService, useValue: gitignoreService },
{ provide: nx_project_json_service_1.NxProjectJsonService, useValue: nxProjectJsonService },
project_utils_patcher_service_1.ProjectUtilsPatcherService,
],
// we use wrapApplication to modify some of the files after connecting all modules, since modules can add additional data that will be used when modifying files
wrapApplication: async () => {
if (projectUtilsPatcherService) {
projectUtilsPatcherService.patchModules();
}
},
// we use postWrapApplication to modify some of the files after connecting all modules, since modules can add additional data that will be used when modifying files
postWrapApplication: async () => {
if (projectUtilsPatcherService) {
projectUtilsPatcherService.patchModules();
}
},
// we use preWrapApplication because we need to get project data and install it globally - before running the application on NestJS
preWrapApplication: async (options) => {
Object.assign(wrapApplicationOptionsService, options);
if (options.current.staticConfiguration) {
// PackageJsonService
const tempPackageJsonService = new package_json_service_1.PackageJsonService(wrapApplicationOptionsService.current.staticConfiguration);
Object.setPrototypeOf(packageJsonService, tempPackageJsonService);
Object.assign(packageJsonService, tempPackageJsonService);
// ApplicationPackageJsonService
const tempApplicationPackageJsonService = new application_package_json_service_1.ApplicationPackageJsonService(wrapApplicationOptionsService.current.staticConfiguration);
Object.setPrototypeOf(applicationPackageJsonService, tempApplicationPackageJsonService);
Object.assign(applicationPackageJsonService, tempApplicationPackageJsonService);
// GitignoreService
const tempGitignoreService = new gitignore_file_1.GitignoreService(packageJsonService);
Object.setPrototypeOf(gitignoreService, tempGitignoreService);
Object.assign(gitignoreService, tempGitignoreService);
// DotEnvService
const tempDotEnvService = new dot_env_service_1.DotEnvService(wrapApplicationOptionsService, wrapApplicationOptionsService.current.staticConfiguration, tempGitignoreService);
tempDotEnvService.read();
Object.setPrototypeOf(dotEnvService, tempDotEnvService);
Object.assign(dotEnvService, tempDotEnvService);
// NxProjectJsonService
const tempNxProjectJsonService = new nx_project_json_service_1.NxProjectJsonService(wrapApplicationOptionsService.current.staticConfiguration, applicationPackageJsonService, packageJsonService, dotEnvService);
Object.setPrototypeOf(nxProjectJsonService, tempNxProjectJsonService);
Object.assign(nxProjectJsonService, tempNxProjectJsonService);
// ProjectUtilsPatcherService
projectUtilsPatcherService = new project_utils_patcher_service_1.ProjectUtilsPatcherService(wrapApplicationOptionsService.current.staticConfiguration, new application_package_json_service_1.ApplicationPackageJsonService(wrapApplicationOptionsService.current.staticConfiguration), wrapApplicationOptionsService, dotEnvService, packageJsonService);
projectUtilsPatcherService.patchModules();
}
},
}).ProjectUtils;
//# sourceMappingURL=project-utils.module.js.map