@bitwild/rockets
Version:
Rockets - Core server functionality for NestJS applications with built-in authentication, user management, and API scaffolding
108 lines • 5.25 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ROCKETS_MODULE_ASYNC_OPTIONS_TYPE = exports.ROCKETS_MODULE_OPTIONS_TYPE = exports.RocketsModuleClass = void 0;
exports.createRocketsControllers = createRocketsControllers;
exports.createRocketsSettingsProvider = createRocketsSettingsProvider;
exports.createRocketsImports = createRocketsImports;
exports.createRocketsExports = createRocketsExports;
exports.createRocketsProviders = createRocketsProviders;
const nestjs_common_1 = require("@concepta/nestjs-common");
const common_1 = require("@nestjs/common");
const core_1 = require("@nestjs/core");
const nestjs_swagger_ui_1 = require("@concepta/nestjs-swagger-ui");
const rockets_constants_1 = require("./rockets.constants");
const me_controller_1 = require("./modules/user/me.controller");
const config_1 = require("@nestjs/config");
const rockets_options_default_config_1 = require("./config/rockets-options-default.config");
const auth_server_guard_1 = require("./guards/auth-server.guard");
const user_metadata_model_service_1 = require("./modules/user-metadata/services/user-metadata.model.service");
const user_metadata_constants_1 = require("./modules/user-metadata/constants/user-metadata.constants");
const nestjs_common_2 = require("@concepta/nestjs-common");
const rockets_tokens_1 = require("./rockets.tokens");
_a = new common_1.ConfigurableModuleBuilder({
moduleName: 'Rockets',
optionsInjectionToken: rockets_tokens_1.RAW_OPTIONS_TOKEN,
})
.setExtras({ global: false }, definitionTransform)
.build(), exports.RocketsModuleClass = _a.ConfigurableModuleClass, exports.ROCKETS_MODULE_OPTIONS_TYPE = _a.OPTIONS_TYPE, exports.ROCKETS_MODULE_ASYNC_OPTIONS_TYPE = _a.ASYNC_OPTIONS_TYPE;
function definitionTransform(definition, extras) {
const { imports: defImports = [], providers = [], exports = [] } = definition;
const baseModule = Object.assign(Object.assign({}, definition), { global: extras.global, imports: [...createRocketsImports({ imports: defImports, extras })], controllers: createRocketsControllers({ extras }) || [], providers: [...createRocketsProviders({ providers, extras })], exports: createRocketsExports({ exports, extras }) });
return baseModule;
}
function createRocketsControllers(_options) {
return (() => {
const list = [me_controller_1.MeController];
return list;
})();
}
function createRocketsSettingsProvider(optionsOverrides) {
return (0, nestjs_common_1.createSettingsProvider)({
settingsToken: rockets_constants_1.ROCKETS_MODULE_OPTIONS_DEFAULT_SETTINGS_TOKEN,
optionsToken: rockets_tokens_1.RAW_OPTIONS_TOKEN,
settingsKey: rockets_options_default_config_1.rocketsOptionsDefaultConfig.KEY,
optionsOverrides,
});
}
function createRocketsImports(options) {
var _a;
const baseImports = [
config_1.ConfigModule.forFeature(rockets_options_default_config_1.rocketsOptionsDefaultConfig),
nestjs_swagger_ui_1.SwaggerUiModule.registerAsync({
inject: [rockets_tokens_1.RAW_OPTIONS_TOKEN],
useFactory: (options) => {
var _a, _b;
return {
documentBuilder: (_a = options.swagger) === null || _a === void 0 ? void 0 : _a.documentBuilder,
settings: (_b = options.swagger) === null || _b === void 0 ? void 0 : _b.settings,
};
},
}),
];
const extraImports = (_a = options.imports) !== null && _a !== void 0 ? _a : [];
return [...extraImports, ...baseImports];
}
function createRocketsExports(options) {
return [
...(options.exports || []),
config_1.ConfigModule,
rockets_tokens_1.RAW_OPTIONS_TOKEN,
rockets_constants_1.ROCKETS_MODULE_OPTIONS_DEFAULT_SETTINGS_TOKEN,
user_metadata_constants_1.UserMetadataModelService,
];
}
function createRocketsProviders(options) {
var _a, _b;
const providers = [
...((_a = options.providers) !== null && _a !== void 0 ? _a : []),
createRocketsSettingsProvider(),
core_1.Reflector,
{
provide: rockets_constants_1.RocketsAuthProvider,
inject: [rockets_tokens_1.RAW_OPTIONS_TOKEN],
useFactory: (opts) => {
return opts.authProvider;
},
},
{
provide: user_metadata_constants_1.UserMetadataModelService,
inject: [
rockets_tokens_1.RAW_OPTIONS_TOKEN,
(0, nestjs_common_2.getDynamicRepositoryToken)(user_metadata_constants_1.USER_METADATA_MODULE_ENTITY_KEY),
],
useFactory: (opts, repository) => {
const { createDto, updateDto } = opts.userMetadata;
return new user_metadata_model_service_1.GenericUserMetadataModelService(repository, createDto, updateDto);
},
},
];
if (((_b = options.extras) === null || _b === void 0 ? void 0 : _b.enableGlobalGuard) !== false) {
providers.push({
provide: core_1.APP_GUARD,
useClass: auth_server_guard_1.AuthServerGuard,
});
}
return providers;
}
//# sourceMappingURL=rockets.module-definition.js.map