@magnet-cms/core 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { init_constants, PLUGIN_METADATA, PLUGIN_FRONTEND_MANIFEST, PLUGIN_MODULE, getPluginOptionsToken } from './chunk-5HGRFVWS.js';
1
+ import { init_constants, PLUGIN_METADATA, PLUGIN_FRONTEND_MANIFEST, PLUGIN_MODULE, getPluginOptionsToken } from './chunk-L5S66O2C.js';
2
2
  import { __name } from './chunk-6EUZQHAF.js';
3
3
  import { Injectable, Inject } from '@nestjs/common';
4
4
 
@@ -1,4 +1,4 @@
1
- import { require_src, require_supports_color, require_safe_buffer, require_ms, init_restricted_route, RestrictedRoute, init_database, init_settings, DatabaseModule, SettingsModule, RBACModule, PluginModule, NotificationModule, HistoryModule, DocumentModule, ContentModule, CacheModule, ApiKeysModule, StorageModule, AuthModule, ActivityModule, AdminModule, EmailModule, EnvironmentModule, GeneralModule, WebhookModule, ViewConfigModule, init_activity_module, init_admin_module, init_api_keys_module, init_auth_module, init_cache_module, init_content_module, init_document_module, init_email_module, init_environment_module, init_general_module, init_history_module, init_notification_module, init_plugin_module, init_rbac_module, init_settings_module, init_storage_module, init_view_config_module, init_webhook_module } from './chunk-5HGRFVWS.js';
1
+ import { require_src, require_supports_color, require_safe_buffer, require_ms, init_restricted_route, RestrictedRoute, init_database, init_settings, DatabaseModule, SettingsModule, RBACModule, PluginModule, NotificationModule, HistoryModule, DocumentModule, ContentModule, CacheModule, ApiKeysModule, StorageModule, AuthModule, ActivityModule, AdminModule, EmailModule, EnvironmentModule, GeneralModule, WebhookModule, ViewConfigModule, init_activity_module, init_admin_module, init_api_keys_module, init_auth_module, init_cache_module, init_content_module, init_document_module, init_email_module, init_environment_module, init_general_module, init_history_module, init_notification_module, init_plugin_module, init_rbac_module, init_settings_module, init_storage_module, init_view_config_module, init_webhook_module } from './chunk-L5S66O2C.js';
2
2
  import { __commonJS, __require, __name, __esm, __toESM, __export } from './chunk-6EUZQHAF.js';
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import { extname, join, resolve } from 'node:path';
@@ -16,7 +16,7 @@ import { __esm, __name, __commonJS, __toESM, __export, __toCommonJS, __require }
16
16
  import { Injectable, Scope, NotFoundException, HttpException, HttpStatus, Get, Param, Put, Body, Controller, Logger, Module, forwardRef, Global, Optional, Inject, Post, Query, Delete, UseGuards, BadRequestException, RequestMethod, All, Req, Res, Next, createParamDecorator, UnauthorizedException, ForbiddenException, ConflictException, UseInterceptors, Patch, HttpCode, UploadedFile, UploadedFiles, SetMetadata } from '@nestjs/common';
17
17
  import { AsyncLocalStorage } from 'node:async_hooks';
18
18
  import { randomUUID, randomBytes as randomBytes$1, createHash, createHmac } from 'node:crypto';
19
- import { SettingField, Settings, Field, Prop, Mixed, Schema, getSettingFields, PROP_METADATA_KEY, ValidationException, getSettingsOptions, InjectModel, getModelToken, getSchemaToken, registerModel, EVENT_HANDLER_METADATA, isUserExtension, getExtendUserOptions, FIELD_METADATA_KEY, UI_METADATA_KEY, EXTEND_USER_METADATA_KEY, Resolve, OnEvent, RESOLVE_METADATA_KEY, SETTING_FIELD_METADATA_KEY, isFieldMetadata, isSettingFieldMetadata, getSchemaOptions, SETTINGS_OPTIONS_METADATA_KEY, DESIGN_TYPE, SCHEMA_METADATA_KEY, SETTING_METADATA_KEY, ResourceNotFoundError, InvalidCredentialsError, UserNotFoundError, DuplicateKeyError, Model as Model$1, MagnetModuleOptions, Setting as Setting$1, PERMISSION_METADATA_KEY, RoleNotFoundError, PermissionNotFoundError, PermissionDeniedError, RESOLVED_PERMISSION_KEY, getRegisteredModel, RequirePermission, EmailAdapter, UI } from '@magnet-cms/common';
19
+ import { SettingField, Settings, Field, Prop, Mixed, Schema, getSettingFields, PROP_METADATA_KEY, ValidationException, getSettingsOptions, InjectModel, getDatabaseAdapterSingletonForFeature, getModelToken, getSchemaToken, registerModel, EVENT_HANDLER_METADATA, isUserExtension, getExtendUserOptions, FIELD_METADATA_KEY, UI_METADATA_KEY, EXTEND_USER_METADATA_KEY, Resolve, OnEvent, RESOLVE_METADATA_KEY, SETTING_FIELD_METADATA_KEY, isFieldMetadata, isSettingFieldMetadata, getSchemaOptions, SETTINGS_OPTIONS_METADATA_KEY, DESIGN_TYPE, SCHEMA_METADATA_KEY, SETTING_METADATA_KEY, ResourceNotFoundError, InvalidCredentialsError, UserNotFoundError, DuplicateKeyError, Model as Model$1, MagnetModuleOptions, Setting as Setting$1, PERMISSION_METADATA_KEY, RoleNotFoundError, PermissionNotFoundError, PermissionDeniedError, RESOLVED_PERMISSION_KEY, getRegisteredModel, RequirePermission, EmailAdapter, UI } from '@magnet-cms/common';
20
20
  export { HasPermission, PermissionMeta, RequirePermission, getPermissionMetadata, hasPermissionDecorator } from '@magnet-cms/common';
21
21
  import { ModuleRef, DiscoveryModule, DiscoveryService, ModulesContainer, MetadataScanner, Reflector } from '@nestjs/core';
22
22
  import nodeCrypto from 'crypto';
@@ -15987,14 +15987,16 @@ var init_database_module = __esm({
15987
15987
  /**
15988
15988
  * Register schemas for database access.
15989
15989
  *
15990
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
15991
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
15992
- * with require() to defer loading. See apps/examples for the pattern.
15990
+ * Nest’s compiled CJS output often `require()`s feature modules before the
15991
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
15992
+ * not have run yet. In that case we fall back to the adapter singleton
15993
+ * registered by the official DB packages via
15994
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
15993
15995
  */
15994
15996
  static forFeature(schemas) {
15995
- const adapter = getSharedAdapter();
15997
+ const adapter = getSharedAdapter() ?? getDatabaseAdapterSingletonForFeature();
15996
15998
  if (!adapter) {
15997
- throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(). Ensure MagnetModule.forRoot() includes a database provider.");
15999
+ throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(), or the active DB adapter package must call registerDatabaseAdapterSingletonForFeature() on import. Ensure MagnetModule.forRoot() includes a database provider.");
15998
16000
  }
15999
16001
  const schemasArray = Array.isArray(schemas) ? schemas : [
16000
16002
  schemas
@@ -19486,7 +19488,7 @@ function _ts_decorate16(decorators, target, key, desc) {
19486
19488
  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;
19487
19489
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19488
19490
  }
19489
- var import_passport, DynamicAuthGuard;
19491
+ var import_passport, DynamicAuthGuard, OptionalDynamicAuthGuard;
19490
19492
  var init_dynamic_auth_guard = __esm({
19491
19493
  "src/modules/auth/guards/dynamic-auth.guard.ts"() {
19492
19494
  import_passport = __toESM(require_passport(), 1);
@@ -19505,6 +19507,22 @@ var init_dynamic_auth_guard = __esm({
19505
19507
  DynamicAuthGuard = _ts_decorate16([
19506
19508
  Injectable()
19507
19509
  ], DynamicAuthGuard);
19510
+ OptionalDynamicAuthGuard = class {
19511
+ static {
19512
+ __name(this, "OptionalDynamicAuthGuard");
19513
+ }
19514
+ async canActivate(context) {
19515
+ const guard = new ((0, import_passport.AuthGuard)(DynamicAuthGuard.strategyName))();
19516
+ try {
19517
+ await guard.canActivate(context);
19518
+ } catch {
19519
+ }
19520
+ return true;
19521
+ }
19522
+ };
19523
+ OptionalDynamicAuthGuard = _ts_decorate16([
19524
+ Injectable()
19525
+ ], OptionalDynamicAuthGuard);
19508
19526
  }
19509
19527
  });
19510
19528
 
@@ -40086,6 +40104,7 @@ function _ts_param14(paramIndex, decorator) {
40086
40104
  var AuthController;
40087
40105
  var init_auth_controller = __esm({
40088
40106
  "src/modules/auth/auth.controller.ts"() {
40107
+ init_settings_service();
40089
40108
  init_auth_service();
40090
40109
  init_change_password_dto();
40091
40110
  init_forgot_password_dto();
@@ -40103,8 +40122,10 @@ var init_auth_controller = __esm({
40103
40122
  __name(this, "AuthController");
40104
40123
  }
40105
40124
  authService;
40106
- constructor(authService) {
40125
+ settingsService;
40126
+ constructor(authService, settingsService) {
40107
40127
  this.authService = authService;
40128
+ this.settingsService = settingsService;
40108
40129
  }
40109
40130
  // ============================================================================
40110
40131
  // Authentication
@@ -40171,9 +40192,10 @@ var init_auth_controller = __esm({
40171
40192
  }
40172
40193
  }
40173
40194
  /**
40174
- * Get auth status (public endpoint).
40195
+ * Get auth status (public endpoint with optional auth).
40175
40196
  * Returns authentication state, setup requirement, the list of
40176
40197
  * enabled OAuth providers, and the active auth strategy info.
40198
+ * When a valid token is present, also returns onboardingCompleted.
40177
40199
  */
40178
40200
  async status(req) {
40179
40201
  const [providers, authInfo] = await Promise.all([
@@ -40187,8 +40209,10 @@ var init_auth_controller = __esm({
40187
40209
  } : {}
40188
40210
  };
40189
40211
  if (req.user) {
40212
+ const onboardingCompleted = await this.checkOnboardingCompleted();
40190
40213
  return {
40191
40214
  authenticated: true,
40215
+ onboardingCompleted,
40192
40216
  user: req.user,
40193
40217
  providers,
40194
40218
  ...base2
@@ -40203,6 +40227,22 @@ var init_auth_controller = __esm({
40203
40227
  ...base2
40204
40228
  };
40205
40229
  }
40230
+ /**
40231
+ * Check if the project onboarding has been completed by verifying
40232
+ * whether general settings differ from their defaults.
40233
+ */
40234
+ async checkOnboardingCompleted() {
40235
+ try {
40236
+ const settings = await this.settingsService.getSettingsByGroup("general");
40237
+ const siteNameSetting = settings.find((s) => s.key === "siteName");
40238
+ const baseUrlSetting = settings.find((s) => s.key === "baseUrl");
40239
+ const siteName = siteNameSetting?.value ?? "Magnet CMS";
40240
+ const baseUrl = baseUrlSetting?.value ?? "http://localhost:3000";
40241
+ return siteName !== "Magnet CMS" || baseUrl !== "http://localhost:3000";
40242
+ } catch {
40243
+ return false;
40244
+ }
40245
+ }
40206
40246
  // ============================================================================
40207
40247
  // Sessions
40208
40248
  // ============================================================================
@@ -40337,6 +40377,7 @@ var init_auth_controller = __esm({
40337
40377
  _ts_metadata45("design:returntype", Promise)
40338
40378
  ], AuthController.prototype, "me", null);
40339
40379
  _ts_decorate61([
40380
+ UseGuards(OptionalDynamicAuthGuard),
40340
40381
  Get("status"),
40341
40382
  _ts_param14(0, Req()),
40342
40383
  _ts_metadata45("design:type", Function),
@@ -40413,7 +40454,8 @@ var init_auth_controller = __esm({
40413
40454
  Controller("auth"),
40414
40455
  _ts_metadata45("design:type", Function),
40415
40456
  _ts_metadata45("design:paramtypes", [
40416
- typeof AuthService === "undefined" ? Object : AuthService
40457
+ typeof AuthService === "undefined" ? Object : AuthService,
40458
+ typeof SettingsService === "undefined" ? Object : SettingsService
40417
40459
  ])
40418
40460
  ], AuthController);
40419
40461
  }
@@ -122908,4 +122950,4 @@ mongoose/lib/index.js:
122908
122950
  *)
122909
122951
  */
122910
122952
 
122911
- export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, ApiKeyService, ApiKeySettings, ApiKeyUsage, ApiKeysModule, AssignRoleDto, AuthModule, AuthSettings, AuthStrategyFactory, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheModule, CacheService, ContentController, ContentModule, ContentService, ContentSettings, CreateApiKeyDto, CreateRoleDto, CreateUserDto, CurrentApiKey, DEFAULT_ROLES, DatabaseModule, DiscoveryModule2 as DiscoveryModule, DocumentModule, DocumentService, DuplicateRoleDto, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, EnvironmentModule, EnvironmentService, Environments, EventContextInterceptor, EventHandlerDiscoveryService, EventService, EventsModule, GeneralModule, GeneralSettings, HistoryController, HistoryModule, HistoryService, IS_RESTRICTED_ROUTE, IsIn, IsNotEmpty, IsNumber, IsOptional, IsString, JwtAuthStrategy, LocalStorageAdapter, MagnetLogger, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, Min, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModule, NotificationService, NotificationSettings, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, PermissionDiscoveryService, PermissionGuard, PermissionService, PluginController, PluginLifecycleService, PluginModule, PluginRegistryService, PluginService, RBACModule, RBACSettings, RBAC_CONFIG, ROLE_MODEL, RequireApiKeyPermission, RequireApiKeySchema, RestrictedRoute, Role, RoleService, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsModule, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, UpdatePermissionsDto, UpdateRoleDto, User, UserController, UserExtensionService, UserModule, UserService, ValidationError, ViewConfig, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, createEventContext, eventContextStorage, generateDocumentId, getEventContext, getPluginOptionsToken, init_activity_controller, init_activity_module, init_activity_schema, init_activity_service, init_activity_settings, init_admin_controller, init_admin_module, init_admin_service, init_api_key_decorator, init_api_key_guard, init_api_key_schema, init_api_key_usage_schema, init_api_keys_module, init_api_keys_service, init_api_keys_settings, init_assign_role_dto, init_auth_constants, init_auth_module, init_auth_settings, init_auth_strategy_factory, init_cache_constants, init_cache_module, init_cache_service, init_constants2 as init_constants, init_content_controller, init_content_module, init_content_service, init_content_settings, init_create_api_key_dto, init_create_role_dto, init_database, init_database_module, init_discovery, init_document_id_util, init_document_module, init_document_service, init_duplicate_role_dto, init_dynamic_auth_guard, init_dynamic_permission_interceptor, init_email_module, init_email_service, init_email_verification_service, init_environment_controller, init_environment_module, init_environment_service, init_environment_setting, init_esm52 as init_esm5, init_event_context_interceptor, init_events, init_events_module, init_general_module, init_general_settings, init_history_controller, init_history_module, init_history_service, init_jwt_auth_strategy, init_local_storage_adapter, init_logger_service, init_media_schema, init_memory_cache_adapter, init_notification_constants, init_notification_controller, init_notification_module, init_notification_schema, init_notification_service, init_notification_settings, init_permission_discovery_service, init_permission_guard, init_permission_service, init_plugin_controller, init_plugin_lifecycle_service, init_plugin_module, init_plugin_registry_service, init_plugin_service, init_rbac_constants, init_rbac_decorators, init_rbac_module, init_rbac_settings, init_restricted_route, init_role_schema, init_role_service, init_settings, init_settings_module, init_storage_constants, init_storage_module, init_storage_service, init_storage_settings, init_template_service, init_update_api_key_dto, init_update_permissions_dto, init_update_role_dto, init_user, init_view_config_module, init_view_config_schema, init_view_config_service, init_webhook_listener, init_webhook_module, init_webhook_service, init_webhook_settings, isValidDocumentId, locales, require_argsOrArgArray, require_audit, require_auditTime, require_buffer, require_bufferCount, require_bufferTime, require_bufferToggle, require_bufferWhen, require_catchError, require_cjs, require_combineAll, require_combineLatest2 as require_combineLatest, require_combineLatestAll, require_combineLatestWith, require_concat2 as require_concat, require_concatAll, require_concatMap, require_concatMapTo, require_concatWith, require_connect, require_count, require_debounce, require_debounceTime, require_defaultIfEmpty, require_delay, require_delayWhen, require_dematerialize, require_distinct, require_distinctUntilChanged, require_distinctUntilKeyChanged, require_elementAt, require_endWith, require_every, require_exhaust, require_exhaustAll, require_exhaustMap, require_expand, require_filter, require_finalize, require_find, require_findIndex, require_first, require_flatMap, require_follow_redirects, require_groupBy, require_ignoreElements, require_isEmpty, require_last, require_map, require_mapTo, require_materialize, require_max, require_merge2 as require_merge, require_mergeAll, require_mergeMap, require_mergeMapTo, require_mergeScan, require_mergeWith, require_min, require_ms, require_multicast, require_not, require_observeOn, require_onErrorResumeNextWith, require_pairwise, require_passport, require_pluck, require_publish, require_publishBehavior, require_publishLast, require_publishReplay, require_raceWith, require_reduce, require_refCount, require_repeat, require_repeatWhen, require_retry, require_retryWhen, require_safe_buffer, require_sample, require_sampleTime, require_scan, require_sequenceEqual, require_share, require_shareReplay, require_single, require_skip, require_skipLast, require_skipUntil, require_skipWhile, require_src, require_startWith, require_subscribeOn, require_supports_color, require_switchAll, require_switchMap, require_switchMapTo, require_switchScan, require_take, require_takeLast, require_takeUntil, require_takeWhile, require_tap, require_throttle, require_throttleTime, require_throwIfEmpty, require_timeInterval, require_timeout, require_timeoutWith, require_timestamp, require_toArray, require_window, require_windowCount, require_windowTime, require_windowToggle, require_windowWhen, require_withLatestFrom, require_zip2 as require_zip, require_zipAll, require_zipWith, timezones };
122953
+ export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, ApiKeyService, ApiKeySettings, ApiKeyUsage, ApiKeysModule, AssignRoleDto, AuthModule, AuthSettings, AuthStrategyFactory, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheModule, CacheService, ContentController, ContentModule, ContentService, ContentSettings, CreateApiKeyDto, CreateRoleDto, CreateUserDto, CurrentApiKey, DEFAULT_ROLES, DatabaseModule, DiscoveryModule2 as DiscoveryModule, DocumentModule, DocumentService, DuplicateRoleDto, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, EnvironmentModule, EnvironmentService, Environments, EventContextInterceptor, EventHandlerDiscoveryService, EventService, EventsModule, GeneralModule, GeneralSettings, HistoryController, HistoryModule, HistoryService, IS_RESTRICTED_ROUTE, IsIn, IsNotEmpty, IsNumber, IsOptional, IsString, JwtAuthStrategy, LocalStorageAdapter, MagnetLogger, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, Min, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModule, NotificationService, NotificationSettings, OptionalDynamicAuthGuard, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, PermissionDiscoveryService, PermissionGuard, PermissionService, PluginController, PluginLifecycleService, PluginModule, PluginRegistryService, PluginService, RBACModule, RBACSettings, RBAC_CONFIG, ROLE_MODEL, RequireApiKeyPermission, RequireApiKeySchema, RestrictedRoute, Role, RoleService, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsModule, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, UpdatePermissionsDto, UpdateRoleDto, User, UserController, UserExtensionService, UserModule, UserService, ValidationError, ViewConfig, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, createEventContext, eventContextStorage, generateDocumentId, getEventContext, getPluginOptionsToken, init_activity_controller, init_activity_module, init_activity_schema, init_activity_service, init_activity_settings, init_admin_controller, init_admin_module, init_admin_service, init_api_key_decorator, init_api_key_guard, init_api_key_schema, init_api_key_usage_schema, init_api_keys_module, init_api_keys_service, init_api_keys_settings, init_assign_role_dto, init_auth_constants, init_auth_module, init_auth_settings, init_auth_strategy_factory, init_cache_constants, init_cache_module, init_cache_service, init_constants2 as init_constants, init_content_controller, init_content_module, init_content_service, init_content_settings, init_create_api_key_dto, init_create_role_dto, init_database, init_database_module, init_discovery, init_document_id_util, init_document_module, init_document_service, init_duplicate_role_dto, init_dynamic_auth_guard, init_dynamic_permission_interceptor, init_email_module, init_email_service, init_email_verification_service, init_environment_controller, init_environment_module, init_environment_service, init_environment_setting, init_esm52 as init_esm5, init_event_context_interceptor, init_events, init_events_module, init_general_module, init_general_settings, init_history_controller, init_history_module, init_history_service, init_jwt_auth_strategy, init_local_storage_adapter, init_logger_service, init_media_schema, init_memory_cache_adapter, init_notification_constants, init_notification_controller, init_notification_module, init_notification_schema, init_notification_service, init_notification_settings, init_permission_discovery_service, init_permission_guard, init_permission_service, init_plugin_controller, init_plugin_lifecycle_service, init_plugin_module, init_plugin_registry_service, init_plugin_service, init_rbac_constants, init_rbac_decorators, init_rbac_module, init_rbac_settings, init_restricted_route, init_role_schema, init_role_service, init_settings, init_settings_module, init_storage_constants, init_storage_module, init_storage_service, init_storage_settings, init_template_service, init_update_api_key_dto, init_update_permissions_dto, init_update_role_dto, init_user, init_view_config_module, init_view_config_schema, init_view_config_service, init_webhook_listener, init_webhook_module, init_webhook_service, init_webhook_settings, isValidDocumentId, locales, require_argsOrArgArray, require_audit, require_auditTime, require_buffer, require_bufferCount, require_bufferTime, require_bufferToggle, require_bufferWhen, require_catchError, require_cjs, require_combineAll, require_combineLatest2 as require_combineLatest, require_combineLatestAll, require_combineLatestWith, require_concat2 as require_concat, require_concatAll, require_concatMap, require_concatMapTo, require_concatWith, require_connect, require_count, require_debounce, require_debounceTime, require_defaultIfEmpty, require_delay, require_delayWhen, require_dematerialize, require_distinct, require_distinctUntilChanged, require_distinctUntilKeyChanged, require_elementAt, require_endWith, require_every, require_exhaust, require_exhaustAll, require_exhaustMap, require_expand, require_filter, require_finalize, require_find, require_findIndex, require_first, require_flatMap, require_follow_redirects, require_groupBy, require_ignoreElements, require_isEmpty, require_last, require_map, require_mapTo, require_materialize, require_max, require_merge2 as require_merge, require_mergeAll, require_mergeMap, require_mergeMapTo, require_mergeScan, require_mergeWith, require_min, require_ms, require_multicast, require_not, require_observeOn, require_onErrorResumeNextWith, require_pairwise, require_passport, require_pluck, require_publish, require_publishBehavior, require_publishLast, require_publishReplay, require_raceWith, require_reduce, require_refCount, require_repeat, require_repeatWhen, require_retry, require_retryWhen, require_safe_buffer, require_sample, require_sampleTime, require_scan, require_sequenceEqual, require_share, require_shareReplay, require_single, require_skip, require_skipLast, require_skipUntil, require_skipWhile, require_src, require_startWith, require_subscribeOn, require_supports_color, require_switchAll, require_switchMap, require_switchMapTo, require_switchScan, require_take, require_takeLast, require_takeUntil, require_takeWhile, require_tap, require_throttle, require_throttleTime, require_throwIfEmpty, require_timeInterval, require_timeout, require_timeoutWith, require_timestamp, require_toArray, require_window, require_windowCount, require_windowTime, require_windowToggle, require_windowWhen, require_withLatestFrom, require_zip2 as require_zip, require_zipAll, require_zipWith, timezones };
package/dist/index.cjs CHANGED
@@ -69922,14 +69922,16 @@ var init_database_module = __esm({
69922
69922
  /**
69923
69923
  * Register schemas for database access.
69924
69924
  *
69925
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
69926
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
69927
- * with require() to defer loading. See apps/examples for the pattern.
69925
+ * Nest’s compiled CJS output often `require()`s feature modules before the
69926
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
69927
+ * not have run yet. In that case we fall back to the adapter singleton
69928
+ * registered by the official DB packages via
69929
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
69928
69930
  */
69929
69931
  static forFeature(schemas) {
69930
- const adapter = getSharedAdapter();
69932
+ const adapter = getSharedAdapter() ?? common$1.getDatabaseAdapterSingletonForFeature();
69931
69933
  if (!adapter) {
69932
- throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(). Ensure MagnetModule.forRoot() includes a database provider.");
69934
+ throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(), or the active DB adapter package must call registerDatabaseAdapterSingletonForFeature() on import. Ensure MagnetModule.forRoot() includes a database provider.");
69933
69935
  }
69934
69936
  const schemasArray = Array.isArray(schemas) ? schemas : [
69935
69937
  schemas
@@ -88844,7 +88846,7 @@ function _ts_decorate22(decorators, target, key, desc) {
88844
88846
  else for (var i6 = decorators.length - 1; i6 >= 0; i6--) if (d6 = decorators[i6]) r6 = (c6 < 3 ? d6(r6) : c6 > 3 ? d6(target, key, r6) : d6(target, key)) || r6;
88845
88847
  return c6 > 3 && r6 && Object.defineProperty(target, key, r6), r6;
88846
88848
  }
88847
- var import_passport, DynamicAuthGuard;
88849
+ var import_passport, DynamicAuthGuard, OptionalDynamicAuthGuard;
88848
88850
  var init_dynamic_auth_guard = __esm({
88849
88851
  "src/modules/auth/guards/dynamic-auth.guard.ts"() {
88850
88852
  import_passport = __toESM(require_passport(), 1);
@@ -88863,6 +88865,22 @@ var init_dynamic_auth_guard = __esm({
88863
88865
  DynamicAuthGuard = _ts_decorate22([
88864
88866
  common.Injectable()
88865
88867
  ], DynamicAuthGuard);
88868
+ OptionalDynamicAuthGuard = class {
88869
+ static {
88870
+ __name(this, "OptionalDynamicAuthGuard");
88871
+ }
88872
+ async canActivate(context2) {
88873
+ const guard = new ((0, import_passport.AuthGuard)(DynamicAuthGuard.strategyName))();
88874
+ try {
88875
+ await guard.canActivate(context2);
88876
+ } catch {
88877
+ }
88878
+ return true;
88879
+ }
88880
+ };
88881
+ OptionalDynamicAuthGuard = _ts_decorate22([
88882
+ common.Injectable()
88883
+ ], OptionalDynamicAuthGuard);
88866
88884
  }
88867
88885
  });
88868
88886
 
@@ -162052,6 +162070,7 @@ function _ts_param14(paramIndex, decorator) {
162052
162070
  var AuthController;
162053
162071
  var init_auth_controller = __esm({
162054
162072
  "src/modules/auth/auth.controller.ts"() {
162073
+ init_settings_service();
162055
162074
  init_auth_service();
162056
162075
  init_change_password_dto();
162057
162076
  init_forgot_password_dto();
@@ -162069,8 +162088,10 @@ var init_auth_controller = __esm({
162069
162088
  __name(this, "AuthController");
162070
162089
  }
162071
162090
  authService;
162072
- constructor(authService) {
162091
+ settingsService;
162092
+ constructor(authService, settingsService) {
162073
162093
  this.authService = authService;
162094
+ this.settingsService = settingsService;
162074
162095
  }
162075
162096
  // ============================================================================
162076
162097
  // Authentication
@@ -162137,9 +162158,10 @@ var init_auth_controller = __esm({
162137
162158
  }
162138
162159
  }
162139
162160
  /**
162140
- * Get auth status (public endpoint).
162161
+ * Get auth status (public endpoint with optional auth).
162141
162162
  * Returns authentication state, setup requirement, the list of
162142
162163
  * enabled OAuth providers, and the active auth strategy info.
162164
+ * When a valid token is present, also returns onboardingCompleted.
162143
162165
  */
162144
162166
  async status(req) {
162145
162167
  const [providers, authInfo] = await Promise.all([
@@ -162153,8 +162175,10 @@ var init_auth_controller = __esm({
162153
162175
  } : {}
162154
162176
  };
162155
162177
  if (req.user) {
162178
+ const onboardingCompleted = await this.checkOnboardingCompleted();
162156
162179
  return {
162157
162180
  authenticated: true,
162181
+ onboardingCompleted,
162158
162182
  user: req.user,
162159
162183
  providers,
162160
162184
  ...base2
@@ -162169,6 +162193,22 @@ var init_auth_controller = __esm({
162169
162193
  ...base2
162170
162194
  };
162171
162195
  }
162196
+ /**
162197
+ * Check if the project onboarding has been completed by verifying
162198
+ * whether general settings differ from their defaults.
162199
+ */
162200
+ async checkOnboardingCompleted() {
162201
+ try {
162202
+ const settings = await this.settingsService.getSettingsByGroup("general");
162203
+ const siteNameSetting = settings.find((s6) => s6.key === "siteName");
162204
+ const baseUrlSetting = settings.find((s6) => s6.key === "baseUrl");
162205
+ const siteName = siteNameSetting?.value ?? "Magnet CMS";
162206
+ const baseUrl = baseUrlSetting?.value ?? "http://localhost:3000";
162207
+ return siteName !== "Magnet CMS" || baseUrl !== "http://localhost:3000";
162208
+ } catch {
162209
+ return false;
162210
+ }
162211
+ }
162172
162212
  // ============================================================================
162173
162213
  // Sessions
162174
162214
  // ============================================================================
@@ -162303,6 +162343,7 @@ var init_auth_controller = __esm({
162303
162343
  _ts_metadata49("design:returntype", Promise)
162304
162344
  ], AuthController.prototype, "me", null);
162305
162345
  _ts_decorate68([
162346
+ common.UseGuards(OptionalDynamicAuthGuard),
162306
162347
  common.Get("status"),
162307
162348
  _ts_param14(0, common.Req()),
162308
162349
  _ts_metadata49("design:type", Function),
@@ -162379,7 +162420,8 @@ var init_auth_controller = __esm({
162379
162420
  common.Controller("auth"),
162380
162421
  _ts_metadata49("design:type", Function),
162381
162422
  _ts_metadata49("design:paramtypes", [
162382
- typeof AuthService === "undefined" ? Object : AuthService
162423
+ typeof AuthService === "undefined" ? Object : AuthService,
162424
+ typeof SettingsService === "undefined" ? Object : SettingsService
162383
162425
  ])
162384
162426
  ], AuthController);
162385
162427
  }
package/dist/index.d.cts CHANGED
@@ -48,9 +48,11 @@ declare class DatabaseModule {
48
48
  /**
49
49
  * Register schemas for database access.
50
50
  *
51
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
52
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
53
- * with require() to defer loading. See apps/examples for the pattern.
51
+ * Nest’s compiled CJS output often `require()`s feature modules before the
52
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
53
+ * not have run yet. In that case we fall back to the adapter singleton
54
+ * registered by the official DB packages via
55
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
54
56
  */
55
57
  static forFeature(schemas: Type | Type[]): DynamicModule;
56
58
  }
package/dist/index.d.ts CHANGED
@@ -48,9 +48,11 @@ declare class DatabaseModule {
48
48
  /**
49
49
  * Register schemas for database access.
50
50
  *
51
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
52
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
53
- * with require() to defer loading. See apps/examples for the pattern.
51
+ * Nest’s compiled CJS output often `require()`s feature modules before the
52
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
53
+ * not have run yet. In that case we fall back to the adapter singleton
54
+ * registered by the official DB packages via
55
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
54
56
  */
55
57
  static forFeature(schemas: Type | Type[]): DynamicModule;
56
58
  }
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- import { require_hasown, require_shams, require_get_intrinsic, require_type, require_mime_types, init_magnet_module_imports, magnet_module_imports_exports } from './chunk-QYK4424N.js';
2
- export { Hook, InjectPluginOptions, Plugin } from './chunk-LK4NYP67.js';
3
- import { require_src, require_follow_redirects, require_cjs, require_not, require_filter, require_argsOrArgArray, require_raceWith, require_audit, require_auditTime, require_buffer, require_bufferCount, require_bufferTime, require_bufferToggle, require_bufferWhen, require_catchError, require_combineAll, require_combineLatestAll, require_combineLatest, require_combineLatestWith, require_concat, require_concatAll, require_concatMap, require_concatMapTo, require_concatWith, require_connect, require_count, require_debounce, require_debounceTime, require_defaultIfEmpty, require_delay, require_delayWhen, require_dematerialize, require_distinct, require_distinctUntilChanged, require_distinctUntilKeyChanged, require_elementAt, require_endWith, require_every, require_exhaust, require_exhaustAll, require_exhaustMap, require_expand, require_finalize, require_find, require_findIndex, require_first, require_groupBy, require_ignoreElements, require_isEmpty, require_last, require_map, require_mapTo, require_materialize, require_max, require_merge, require_mergeAll, require_flatMap, require_mergeMap, require_mergeMapTo, require_mergeScan, require_mergeWith, require_min, require_multicast, require_observeOn, require_onErrorResumeNextWith, require_pairwise, require_pluck, require_publish, require_publishBehavior, require_publishLast, require_publishReplay, require_reduce, require_repeat, require_repeatWhen, require_retry, require_retryWhen, require_refCount, require_sample, require_sampleTime, require_scan, require_sequenceEqual, require_share, require_shareReplay, require_single, require_skip, require_skipLast, require_skipUntil, require_skipWhile, require_startWith, require_subscribeOn, require_switchAll, require_switchMap, require_switchMapTo, require_switchScan, require_take, require_takeLast, require_takeUntil, require_takeWhile, require_tap, require_throttle, require_throttleTime, require_throwIfEmpty, require_timeInterval, require_timeout, require_timeoutWith, require_timestamp, require_toArray, require_window, require_windowCount, require_windowTime, require_windowToggle, require_windowWhen, require_withLatestFrom, require_zip, require_zipAll, require_zipWith, init_restricted_route, IS_RESTRICTED_ROUTE, init_esm5, init_logger_service, ValidationError, init_database_module, init_event_context_interceptor, init_events_module, MagnetLogger, DatabaseModule, EventsModule, EventContextInterceptor, init_database, init_discovery, init_events, init_auth_strategy_factory, require_passport, init_permission_guard } from './chunk-5HGRFVWS.js';
4
- export { AuthStrategyFactory, DatabaseModule, DiscoveryModule, EventContextInterceptor, EventHandlerDiscoveryService, EventService, EventsModule, IS_RESTRICTED_ROUTE, MagnetLogger, PermissionGuard, RestrictedRoute, createEventContext, eventContextStorage, getEventContext } from './chunk-5HGRFVWS.js';
1
+ import { require_hasown, require_shams, require_get_intrinsic, require_type, require_mime_types, init_magnet_module_imports, magnet_module_imports_exports } from './chunk-D3C3IDJE.js';
2
+ export { Hook, InjectPluginOptions, Plugin } from './chunk-BLOJL7F5.js';
3
+ import { require_src, require_follow_redirects, require_cjs, require_not, require_filter, require_argsOrArgArray, require_raceWith, require_audit, require_auditTime, require_buffer, require_bufferCount, require_bufferTime, require_bufferToggle, require_bufferWhen, require_catchError, require_combineAll, require_combineLatestAll, require_combineLatest, require_combineLatestWith, require_concat, require_concatAll, require_concatMap, require_concatMapTo, require_concatWith, require_connect, require_count, require_debounce, require_debounceTime, require_defaultIfEmpty, require_delay, require_delayWhen, require_dematerialize, require_distinct, require_distinctUntilChanged, require_distinctUntilKeyChanged, require_elementAt, require_endWith, require_every, require_exhaust, require_exhaustAll, require_exhaustMap, require_expand, require_finalize, require_find, require_findIndex, require_first, require_groupBy, require_ignoreElements, require_isEmpty, require_last, require_map, require_mapTo, require_materialize, require_max, require_merge, require_mergeAll, require_flatMap, require_mergeMap, require_mergeMapTo, require_mergeScan, require_mergeWith, require_min, require_multicast, require_observeOn, require_onErrorResumeNextWith, require_pairwise, require_pluck, require_publish, require_publishBehavior, require_publishLast, require_publishReplay, require_reduce, require_repeat, require_repeatWhen, require_retry, require_retryWhen, require_refCount, require_sample, require_sampleTime, require_scan, require_sequenceEqual, require_share, require_shareReplay, require_single, require_skip, require_skipLast, require_skipUntil, require_skipWhile, require_startWith, require_subscribeOn, require_switchAll, require_switchMap, require_switchMapTo, require_switchScan, require_take, require_takeLast, require_takeUntil, require_takeWhile, require_tap, require_throttle, require_throttleTime, require_throwIfEmpty, require_timeInterval, require_timeout, require_timeoutWith, require_timestamp, require_toArray, require_window, require_windowCount, require_windowTime, require_windowToggle, require_windowWhen, require_withLatestFrom, require_zip, require_zipAll, require_zipWith, init_restricted_route, IS_RESTRICTED_ROUTE, init_esm5, init_logger_service, ValidationError, init_database_module, init_event_context_interceptor, init_events_module, MagnetLogger, DatabaseModule, EventsModule, EventContextInterceptor, init_database, init_discovery, init_events, init_auth_strategy_factory, require_passport, init_permission_guard } from './chunk-L5S66O2C.js';
4
+ export { AuthStrategyFactory, DatabaseModule, DiscoveryModule, EventContextInterceptor, EventHandlerDiscoveryService, EventService, EventsModule, IS_RESTRICTED_ROUTE, MagnetLogger, PermissionGuard, RestrictedRoute, createEventContext, eventContextStorage, getEventContext } from './chunk-L5S66O2C.js';
5
5
  import './chunk-4KTI5N3Y.js';
6
6
  import './chunk-63OQXC3R.js';
7
7
  import './chunk-K5CAAMIC.js';
@@ -16027,14 +16027,16 @@ var init_database_module = __esm({
16027
16027
  /**
16028
16028
  * Register schemas for database access.
16029
16029
  *
16030
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
16031
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
16032
- * with require() to defer loading. See apps/examples for the pattern.
16030
+ * Nest’s compiled CJS output often `require()`s feature modules before the
16031
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
16032
+ * not have run yet. In that case we fall back to the adapter singleton
16033
+ * registered by the official DB packages via
16034
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
16033
16035
  */
16034
16036
  static forFeature(schemas) {
16035
- const adapter = getSharedAdapter();
16037
+ const adapter = getSharedAdapter() ?? common.getDatabaseAdapterSingletonForFeature();
16036
16038
  if (!adapter) {
16037
- throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(). Ensure MagnetModule.forRoot() includes a database provider.");
16039
+ throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(), or the active DB adapter package must call registerDatabaseAdapterSingletonForFeature() on import. Ensure MagnetModule.forRoot() includes a database provider.");
16038
16040
  }
16039
16041
  const schemasArray = Array.isArray(schemas) ? schemas : [
16040
16042
  schemas
@@ -189921,6 +189923,22 @@ var DynamicAuthGuard = class _DynamicAuthGuard {
189921
189923
  DynamicAuthGuard = _ts_decorate13([
189922
189924
  common$1.Injectable()
189923
189925
  ], DynamicAuthGuard);
189926
+ var OptionalDynamicAuthGuard = class {
189927
+ static {
189928
+ __name(this, "OptionalDynamicAuthGuard");
189929
+ }
189930
+ async canActivate(context) {
189931
+ const guard = new ((0, import_passport.AuthGuard)(DynamicAuthGuard.strategyName))();
189932
+ try {
189933
+ await guard.canActivate(context);
189934
+ } catch {
189935
+ }
189936
+ return true;
189937
+ }
189938
+ };
189939
+ OptionalDynamicAuthGuard = _ts_decorate13([
189940
+ common$1.Injectable()
189941
+ ], OptionalDynamicAuthGuard);
189924
189942
 
189925
189943
  // src/modules/user/dto/create-user.dto.ts
189926
189944
  init_esm52();
@@ -194610,6 +194628,9 @@ var AuthStrategyFactory = class _AuthStrategyFactory {
194610
194628
  var AUTH_STRATEGY = "AUTH_STRATEGY";
194611
194629
  var AUTH_CONFIG = "AUTH_CONFIG";
194612
194630
 
194631
+ // src/modules/auth/auth.controller.ts
194632
+ init_settings_service();
194633
+
194613
194634
  // src/modules/auth/auth.service.ts
194614
194635
  var import_jwt = __toESM(require_jwt(), 1);
194615
194636
  init_bcryptjs();
@@ -196793,8 +196814,10 @@ var AuthController = class {
196793
196814
  __name(this, "AuthController");
196794
196815
  }
196795
196816
  authService;
196796
- constructor(authService) {
196817
+ settingsService;
196818
+ constructor(authService, settingsService) {
196797
196819
  this.authService = authService;
196820
+ this.settingsService = settingsService;
196798
196821
  }
196799
196822
  // ============================================================================
196800
196823
  // Authentication
@@ -196861,9 +196884,10 @@ var AuthController = class {
196861
196884
  }
196862
196885
  }
196863
196886
  /**
196864
- * Get auth status (public endpoint).
196887
+ * Get auth status (public endpoint with optional auth).
196865
196888
  * Returns authentication state, setup requirement, the list of
196866
196889
  * enabled OAuth providers, and the active auth strategy info.
196890
+ * When a valid token is present, also returns onboardingCompleted.
196867
196891
  */
196868
196892
  async status(req) {
196869
196893
  const [providers, authInfo] = await Promise.all([
@@ -196877,8 +196901,10 @@ var AuthController = class {
196877
196901
  } : {}
196878
196902
  };
196879
196903
  if (req.user) {
196904
+ const onboardingCompleted = await this.checkOnboardingCompleted();
196880
196905
  return {
196881
196906
  authenticated: true,
196907
+ onboardingCompleted,
196882
196908
  user: req.user,
196883
196909
  providers,
196884
196910
  ...base2
@@ -196893,6 +196919,22 @@ var AuthController = class {
196893
196919
  ...base2
196894
196920
  };
196895
196921
  }
196922
+ /**
196923
+ * Check if the project onboarding has been completed by verifying
196924
+ * whether general settings differ from their defaults.
196925
+ */
196926
+ async checkOnboardingCompleted() {
196927
+ try {
196928
+ const settings = await this.settingsService.getSettingsByGroup("general");
196929
+ const siteNameSetting = settings.find((s6) => s6.key === "siteName");
196930
+ const baseUrlSetting = settings.find((s6) => s6.key === "baseUrl");
196931
+ const siteName = siteNameSetting?.value ?? "Magnet CMS";
196932
+ const baseUrl = baseUrlSetting?.value ?? "http://localhost:3000";
196933
+ return siteName !== "Magnet CMS" || baseUrl !== "http://localhost:3000";
196934
+ } catch {
196935
+ return false;
196936
+ }
196937
+ }
196896
196938
  // ============================================================================
196897
196939
  // Sessions
196898
196940
  // ============================================================================
@@ -197027,6 +197069,7 @@ _ts_decorate62([
197027
197069
  _ts_metadata45("design:returntype", Promise)
197028
197070
  ], AuthController.prototype, "me", null);
197029
197071
  _ts_decorate62([
197072
+ common$1.UseGuards(OptionalDynamicAuthGuard),
197030
197073
  common$1.Get("status"),
197031
197074
  _ts_param14(0, common$1.Req()),
197032
197075
  _ts_metadata45("design:type", Function),
@@ -197103,7 +197146,8 @@ AuthController = _ts_decorate62([
197103
197146
  common$1.Controller("auth"),
197104
197147
  _ts_metadata45("design:type", Function),
197105
197148
  _ts_metadata45("design:paramtypes", [
197106
- typeof AuthService === "undefined" ? Object : AuthService
197149
+ typeof AuthService === "undefined" ? Object : AuthService,
197150
+ typeof SettingsService === "undefined" ? Object : SettingsService
197107
197151
  ])
197108
197152
  ], AuthController);
197109
197153
 
@@ -1,6 +1,6 @@
1
- import { init_magnet_module_imports } from './chunk-QYK4424N.js';
2
- export { buildMagnetImports } from './chunk-QYK4424N.js';
3
- export { ApiKeysModule, CacheModule, ContentModule, DocumentModule, HistoryModule, NotificationModule, PluginModule, RBACModule, SettingsModule } from './chunk-5HGRFVWS.js';
1
+ import { init_magnet_module_imports } from './chunk-D3C3IDJE.js';
2
+ export { buildMagnetImports } from './chunk-D3C3IDJE.js';
3
+ export { ApiKeysModule, CacheModule, ContentModule, DocumentModule, HistoryModule, NotificationModule, PluginModule, RBACModule, SettingsModule } from './chunk-L5S66O2C.js';
4
4
  import './chunk-4KTI5N3Y.js';
5
5
  import './chunk-63OQXC3R.js';
6
6
  import './chunk-K5CAAMIC.js';
package/dist/modules.cjs CHANGED
@@ -16027,14 +16027,16 @@ var init_database_module = __esm({
16027
16027
  /**
16028
16028
  * Register schemas for database access.
16029
16029
  *
16030
- * IMPORTANT: Feature modules that call forFeature() must be loaded AFTER
16031
- * MagnetModule.forRoot() has run (which calls register()). Use a FeaturesModule
16032
- * with require() to defer loading. See apps/examples for the pattern.
16030
+ * Nest’s compiled CJS output often `require()`s feature modules before the
16031
+ * `AppModule` decorator runs `MagnetModule.forRoot()`, so `register()` may
16032
+ * not have run yet. In that case we fall back to the adapter singleton
16033
+ * registered by the official DB packages via
16034
+ * `registerDatabaseAdapterSingletonForFeature()` (same instance as `forRoot()`).
16033
16035
  */
16034
16036
  static forFeature(schemas) {
16035
- const adapter = getSharedAdapter();
16037
+ const adapter = getSharedAdapter() ?? common.getDatabaseAdapterSingletonForFeature();
16036
16038
  if (!adapter) {
16037
- throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(). Ensure MagnetModule.forRoot() includes a database provider.");
16039
+ throw new Error("DatabaseModule.register() must be called before DatabaseModule.forFeature(), or the active DB adapter package must call registerDatabaseAdapterSingletonForFeature() on import. Ensure MagnetModule.forRoot() includes a database provider.");
16038
16040
  }
16039
16041
  const schemasArray = Array.isArray(schemas) ? schemas : [
16040
16042
  schemas
@@ -126556,6 +126558,22 @@ exports.DynamicAuthGuard = class _DynamicAuthGuard {
126556
126558
  exports.DynamicAuthGuard = _ts_decorate14([
126557
126559
  common$1.Injectable()
126558
126560
  ], exports.DynamicAuthGuard);
126561
+ exports.OptionalDynamicAuthGuard = class OptionalDynamicAuthGuard {
126562
+ static {
126563
+ __name(this, "OptionalDynamicAuthGuard");
126564
+ }
126565
+ async canActivate(context) {
126566
+ const guard = new ((0, import_passport.AuthGuard)(exports.DynamicAuthGuard.strategyName))();
126567
+ try {
126568
+ await guard.canActivate(context);
126569
+ } catch {
126570
+ }
126571
+ return true;
126572
+ }
126573
+ };
126574
+ exports.OptionalDynamicAuthGuard = _ts_decorate14([
126575
+ common$1.Injectable()
126576
+ ], exports.OptionalDynamicAuthGuard);
126559
126577
  init_logger_service();
126560
126578
  init_settings();
126561
126579
  function _ts_decorate15(decorators, target, key, desc) {
@@ -129505,6 +129523,9 @@ var AuthStrategyFactory = class _AuthStrategyFactory {
129505
129523
  }
129506
129524
  };
129507
129525
 
129526
+ // src/modules/auth/auth.controller.ts
129527
+ init_settings_service();
129528
+
129508
129529
  // src/modules/auth/auth.service.ts
129509
129530
  var import_jwt = __toESM(require_jwt(), 1);
129510
129531
  init_bcryptjs();
@@ -131688,8 +131709,10 @@ var AuthController = class {
131688
131709
  __name(this, "AuthController");
131689
131710
  }
131690
131711
  authService;
131691
- constructor(authService) {
131712
+ settingsService;
131713
+ constructor(authService, settingsService) {
131692
131714
  this.authService = authService;
131715
+ this.settingsService = settingsService;
131693
131716
  }
131694
131717
  // ============================================================================
131695
131718
  // Authentication
@@ -131756,9 +131779,10 @@ var AuthController = class {
131756
131779
  }
131757
131780
  }
131758
131781
  /**
131759
- * Get auth status (public endpoint).
131782
+ * Get auth status (public endpoint with optional auth).
131760
131783
  * Returns authentication state, setup requirement, the list of
131761
131784
  * enabled OAuth providers, and the active auth strategy info.
131785
+ * When a valid token is present, also returns onboardingCompleted.
131762
131786
  */
131763
131787
  async status(req) {
131764
131788
  const [providers, authInfo] = await Promise.all([
@@ -131772,8 +131796,10 @@ var AuthController = class {
131772
131796
  } : {}
131773
131797
  };
131774
131798
  if (req.user) {
131799
+ const onboardingCompleted = await this.checkOnboardingCompleted();
131775
131800
  return {
131776
131801
  authenticated: true,
131802
+ onboardingCompleted,
131777
131803
  user: req.user,
131778
131804
  providers,
131779
131805
  ...base2
@@ -131788,6 +131814,22 @@ var AuthController = class {
131788
131814
  ...base2
131789
131815
  };
131790
131816
  }
131817
+ /**
131818
+ * Check if the project onboarding has been completed by verifying
131819
+ * whether general settings differ from their defaults.
131820
+ */
131821
+ async checkOnboardingCompleted() {
131822
+ try {
131823
+ const settings = await this.settingsService.getSettingsByGroup("general");
131824
+ const siteNameSetting = settings.find((s6) => s6.key === "siteName");
131825
+ const baseUrlSetting = settings.find((s6) => s6.key === "baseUrl");
131826
+ const siteName = siteNameSetting?.value ?? "Magnet CMS";
131827
+ const baseUrl = baseUrlSetting?.value ?? "http://localhost:3000";
131828
+ return siteName !== "Magnet CMS" || baseUrl !== "http://localhost:3000";
131829
+ } catch {
131830
+ return false;
131831
+ }
131832
+ }
131791
131833
  // ============================================================================
131792
131834
  // Sessions
131793
131835
  // ============================================================================
@@ -131922,6 +131964,7 @@ _ts_decorate51([
131922
131964
  _ts_metadata38("design:returntype", Promise)
131923
131965
  ], AuthController.prototype, "me", null);
131924
131966
  _ts_decorate51([
131967
+ common$1.UseGuards(exports.OptionalDynamicAuthGuard),
131925
131968
  common$1.Get("status"),
131926
131969
  _ts_param11(0, common$1.Req()),
131927
131970
  _ts_metadata38("design:type", Function),
@@ -131998,7 +132041,8 @@ AuthController = _ts_decorate51([
131998
132041
  common$1.Controller("auth"),
131999
132042
  _ts_metadata38("design:type", Function),
132000
132043
  _ts_metadata38("design:paramtypes", [
132001
- typeof AuthService === "undefined" ? Object : AuthService
132044
+ typeof AuthService === "undefined" ? Object : AuthService,
132045
+ typeof exports.SettingsService === "undefined" ? Object : exports.SettingsService
132002
132046
  ])
132003
132047
  ], AuthController);
132004
132048
 
@@ -1292,6 +1292,16 @@ declare class DynamicAuthGuard implements CanActivate {
1292
1292
  static strategyName: string;
1293
1293
  canActivate(context: ExecutionContext): Promise<boolean> | boolean;
1294
1294
  }
1295
+ /**
1296
+ * OptionalDynamicAuthGuard populates req.user when a valid token is present
1297
+ * but allows the request through even without authentication.
1298
+ *
1299
+ * Use this for endpoints that behave differently when authenticated
1300
+ * (e.g., /auth/status returns onboardingCompleted only for authenticated users).
1301
+ */
1302
+ declare class OptionalDynamicAuthGuard implements CanActivate {
1303
+ canActivate(context: ExecutionContext): Promise<boolean>;
1304
+ }
1295
1305
 
1296
1306
  declare const JwtAuthGuard_base: _nestjs_passport.Type<_nestjs_passport.IAuthGuard>;
1297
1307
  declare class JwtAuthGuard extends JwtAuthGuard_base {
@@ -3565,4 +3575,4 @@ declare class GeneralSettings {
3565
3575
  fallbackToDefaultLocale: boolean;
3566
3576
  }
3567
3577
 
3568
- export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, type ActivitySearchQuery, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, type ApiKeyPermissionScope, type ApiKeyRequest, ApiKeyService, ApiKeySettings, type ApiKeyStats, ApiKeyUsage, AssignRoleDto, AuthModule, AuthSettings, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheEvict, type CacheEvictOptions, CacheInterceptor, CachePut, type CachePutOptions, CacheService, CacheSettings, CacheTTL, Cacheable, type CacheableOptions, ContentController, ContentService, ContentSettings, type CreateActivityDto, CreateApiKeyDto, type CreateApiKeyResult, type CreateDocumentOptions, CreateUserDto, type CrudAction, CurrentApiKey, DEFAULT_ROLES, type DeliveryResult, type Document, type DocumentGroup, type DocumentMetadata, DocumentService, type DocumentStatus, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, type EnvironmentItem, EnvironmentModule, EnvironmentService, Environments, type FindDocumentOptions, type FolderInfo, GeneralModule, GeneralSettings, HistoryController, HistoryService, type HttpMethod, JwtAuthGuard, JwtAuthStrategy, type ListDocumentOptions, LocalStorageAdapter, LogUsageDto, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, type MemoryCacheAdapterOptions, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModuleOptions, NotificationService, NotificationSettings, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, type PaginatedActivities, type PaginatedDeliveries, PaginatedUserResult, PluginController, PluginLifecycleService, PluginRegistryService, PluginService, type PublishDocumentOptions, RBACSettings, RBAC_CONFIG, ROLE_MODEL, type RateLimitResult, RequireApiKeyPermission, RequireApiKeySchema, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, type UpdateDocumentOptions, UpdatePermissionsDto, UpsertViewConfigDto, User, UserController, UserExtensionService, UserModule, UserService, type VersionDiff, type VersionFieldChange, type VersionSummary, ViewConfig, type ViewConfigColumn, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPluginOptionsToken, isValidDocumentId, locales, timezones };
3578
+ export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, type ActivitySearchQuery, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, type ApiKeyPermissionScope, type ApiKeyRequest, ApiKeyService, ApiKeySettings, type ApiKeyStats, ApiKeyUsage, AssignRoleDto, AuthModule, AuthSettings, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheEvict, type CacheEvictOptions, CacheInterceptor, CachePut, type CachePutOptions, CacheService, CacheSettings, CacheTTL, Cacheable, type CacheableOptions, ContentController, ContentService, ContentSettings, type CreateActivityDto, CreateApiKeyDto, type CreateApiKeyResult, type CreateDocumentOptions, CreateUserDto, type CrudAction, CurrentApiKey, DEFAULT_ROLES, type DeliveryResult, type Document, type DocumentGroup, type DocumentMetadata, DocumentService, type DocumentStatus, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, type EnvironmentItem, EnvironmentModule, EnvironmentService, Environments, type FindDocumentOptions, type FolderInfo, GeneralModule, GeneralSettings, HistoryController, HistoryService, type HttpMethod, JwtAuthGuard, JwtAuthStrategy, type ListDocumentOptions, LocalStorageAdapter, LogUsageDto, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, type MemoryCacheAdapterOptions, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModuleOptions, NotificationService, NotificationSettings, OptionalDynamicAuthGuard, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, type PaginatedActivities, type PaginatedDeliveries, PaginatedUserResult, PluginController, PluginLifecycleService, PluginRegistryService, PluginService, type PublishDocumentOptions, RBACSettings, RBAC_CONFIG, ROLE_MODEL, type RateLimitResult, RequireApiKeyPermission, RequireApiKeySchema, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, type UpdateDocumentOptions, UpdatePermissionsDto, UpsertViewConfigDto, User, UserController, UserExtensionService, UserModule, UserService, type VersionDiff, type VersionFieldChange, type VersionSummary, ViewConfig, type ViewConfigColumn, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPluginOptionsToken, isValidDocumentId, locales, timezones };
package/dist/modules.d.ts CHANGED
@@ -1292,6 +1292,16 @@ declare class DynamicAuthGuard implements CanActivate {
1292
1292
  static strategyName: string;
1293
1293
  canActivate(context: ExecutionContext): Promise<boolean> | boolean;
1294
1294
  }
1295
+ /**
1296
+ * OptionalDynamicAuthGuard populates req.user when a valid token is present
1297
+ * but allows the request through even without authentication.
1298
+ *
1299
+ * Use this for endpoints that behave differently when authenticated
1300
+ * (e.g., /auth/status returns onboardingCompleted only for authenticated users).
1301
+ */
1302
+ declare class OptionalDynamicAuthGuard implements CanActivate {
1303
+ canActivate(context: ExecutionContext): Promise<boolean>;
1304
+ }
1295
1305
 
1296
1306
  declare const JwtAuthGuard_base: _nestjs_passport.Type<_nestjs_passport.IAuthGuard>;
1297
1307
  declare class JwtAuthGuard extends JwtAuthGuard_base {
@@ -3565,4 +3575,4 @@ declare class GeneralSettings {
3565
3575
  fallbackToDefaultLocale: boolean;
3566
3576
  }
3567
3577
 
3568
- export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, type ActivitySearchQuery, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, type ApiKeyPermissionScope, type ApiKeyRequest, ApiKeyService, ApiKeySettings, type ApiKeyStats, ApiKeyUsage, AssignRoleDto, AuthModule, AuthSettings, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheEvict, type CacheEvictOptions, CacheInterceptor, CachePut, type CachePutOptions, CacheService, CacheSettings, CacheTTL, Cacheable, type CacheableOptions, ContentController, ContentService, ContentSettings, type CreateActivityDto, CreateApiKeyDto, type CreateApiKeyResult, type CreateDocumentOptions, CreateUserDto, type CrudAction, CurrentApiKey, DEFAULT_ROLES, type DeliveryResult, type Document, type DocumentGroup, type DocumentMetadata, DocumentService, type DocumentStatus, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, type EnvironmentItem, EnvironmentModule, EnvironmentService, Environments, type FindDocumentOptions, type FolderInfo, GeneralModule, GeneralSettings, HistoryController, HistoryService, type HttpMethod, JwtAuthGuard, JwtAuthStrategy, type ListDocumentOptions, LocalStorageAdapter, LogUsageDto, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, type MemoryCacheAdapterOptions, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModuleOptions, NotificationService, NotificationSettings, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, type PaginatedActivities, type PaginatedDeliveries, PaginatedUserResult, PluginController, PluginLifecycleService, PluginRegistryService, PluginService, type PublishDocumentOptions, RBACSettings, RBAC_CONFIG, ROLE_MODEL, type RateLimitResult, RequireApiKeyPermission, RequireApiKeySchema, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, type UpdateDocumentOptions, UpdatePermissionsDto, UpsertViewConfigDto, User, UserController, UserExtensionService, UserModule, UserService, type VersionDiff, type VersionFieldChange, type VersionSummary, ViewConfig, type ViewConfigColumn, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPluginOptionsToken, isValidDocumentId, locales, timezones };
3578
+ export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, type ActivitySearchQuery, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, type ApiKeyPermissionScope, type ApiKeyRequest, ApiKeyService, ApiKeySettings, type ApiKeyStats, ApiKeyUsage, AssignRoleDto, AuthModule, AuthSettings, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheEvict, type CacheEvictOptions, CacheInterceptor, CachePut, type CachePutOptions, CacheService, CacheSettings, CacheTTL, Cacheable, type CacheableOptions, ContentController, ContentService, ContentSettings, type CreateActivityDto, CreateApiKeyDto, type CreateApiKeyResult, type CreateDocumentOptions, CreateUserDto, type CrudAction, CurrentApiKey, DEFAULT_ROLES, type DeliveryResult, type Document, type DocumentGroup, type DocumentMetadata, DocumentService, type DocumentStatus, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, type EnvironmentItem, EnvironmentModule, EnvironmentService, Environments, type FindDocumentOptions, type FolderInfo, GeneralModule, GeneralSettings, HistoryController, HistoryService, type HttpMethod, JwtAuthGuard, JwtAuthStrategy, type ListDocumentOptions, LocalStorageAdapter, LogUsageDto, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, type MemoryCacheAdapterOptions, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModuleOptions, NotificationService, NotificationSettings, OptionalDynamicAuthGuard, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, type PaginatedActivities, type PaginatedDeliveries, PaginatedUserResult, PluginController, PluginLifecycleService, PluginRegistryService, PluginService, type PublishDocumentOptions, RBACSettings, RBAC_CONFIG, ROLE_MODEL, type RateLimitResult, RequireApiKeyPermission, RequireApiKeySchema, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, type UpdateDocumentOptions, UpdatePermissionsDto, UpsertViewConfigDto, User, UserController, UserExtensionService, UserModule, UserService, type VersionDiff, type VersionFieldChange, type VersionSummary, ViewConfig, type ViewConfigColumn, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPluginOptionsToken, isValidDocumentId, locales, timezones };
package/dist/modules.js CHANGED
@@ -1,6 +1,6 @@
1
- export { Hook, InjectPluginOptions, Plugin } from './chunk-LK4NYP67.js';
2
- import { init_api_keys_module, init_api_keys_service, init_api_keys_settings, init_api_key_schema, init_api_key_usage_schema, init_create_api_key_dto, init_update_api_key_dto, init_esm5, IsString, IsNotEmpty, IsIn, IsNumber, Min, IsOptional, init_api_key_guard, init_api_key_decorator, init_cache_module, init_cache_service, init_cache_constants, init_memory_cache_adapter, require_cjs, CACHE_METADATA_KEY, CACHE_TTL_KEY, init_auth_constants, init_auth_module, init_auth_settings, init_auth_strategy_factory, init_dynamic_auth_guard, require_passport, init_jwt_auth_strategy, init_content_module, init_content_service, init_content_settings, init_content_controller, init_document_module, init_document_service, init_document_id_util, init_email_module, init_email_service, init_email_verification_service, init_template_service, init_environment_controller, init_environment_module, init_environment_service, init_environment_setting, init_history_controller, init_history_module, init_history_service, init_notification_constants, init_notification_controller, init_notification_module, init_notification_service, init_notification_settings, init_notification_schema, init_constants, init_plugin_controller, init_plugin_module, init_plugin_lifecycle_service, init_plugin_registry_service, init_plugin_service, init_rbac_module, init_permission_discovery_service, init_permission_service, init_role_service, init_permission_guard, init_dynamic_permission_interceptor, init_assign_role_dto, init_create_role_dto, init_duplicate_role_dto, init_update_permissions_dto, init_update_role_dto, init_role_schema, init_rbac_constants, init_rbac_settings, init_rbac_decorators, init_settings, init_storage_module, init_storage_service, init_storage_settings, init_storage_constants, init_local_storage_adapter, init_media_schema, init_user, init_webhook_module, init_webhook_service, init_webhook_settings, init_webhook_listener, init_view_config_module, init_view_config_service, init_view_config_schema, init_activity_controller, init_activity_module, init_activity_service, init_activity_settings, init_activity_schema, init_admin_module, init_admin_controller, init_admin_service, init_general_module, init_general_settings, CacheService } from './chunk-5HGRFVWS.js';
3
- export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, ApiKeyService, ApiKeySettings, ApiKeyUsage, ApiKeysModule, AssignRoleDto, AuthModule, AuthSettings, AuthStrategyFactory, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheModule, CacheService, ContentController, ContentModule, ContentService, ContentSettings, CreateApiKeyDto, CreateRoleDto, CreateUserDto, CurrentApiKey, DEFAULT_ROLES, DocumentModule, DocumentService, DuplicateRoleDto, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, EnvironmentModule, EnvironmentService, Environments, GeneralModule, GeneralSettings, HasPermission, HistoryController, HistoryModule, HistoryService, JwtAuthStrategy, LocalStorageAdapter, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModule, NotificationService, NotificationSettings, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, PermissionDiscoveryService, PermissionGuard, PermissionMeta, PermissionService, PluginController, PluginLifecycleService, PluginModule, PluginRegistryService, PluginService, RBACModule, RBACSettings, RBAC_CONFIG, ROLE_MODEL, RequireApiKeyPermission, RequireApiKeySchema, RequirePermission, Role, RoleService, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsModule, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, UpdatePermissionsDto, UpdateRoleDto, User, UserController, UserExtensionService, UserModule, UserService, ViewConfig, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPermissionMetadata, getPluginOptionsToken, hasPermissionDecorator, isValidDocumentId, locales, timezones } from './chunk-5HGRFVWS.js';
1
+ export { Hook, InjectPluginOptions, Plugin } from './chunk-BLOJL7F5.js';
2
+ import { init_api_keys_module, init_api_keys_service, init_api_keys_settings, init_api_key_schema, init_api_key_usage_schema, init_create_api_key_dto, init_update_api_key_dto, init_esm5, IsString, IsNotEmpty, IsIn, IsNumber, Min, IsOptional, init_api_key_guard, init_api_key_decorator, init_cache_module, init_cache_service, init_cache_constants, init_memory_cache_adapter, require_cjs, CACHE_METADATA_KEY, CACHE_TTL_KEY, init_auth_constants, init_auth_module, init_auth_settings, init_auth_strategy_factory, init_dynamic_auth_guard, require_passport, init_jwt_auth_strategy, init_content_module, init_content_service, init_content_settings, init_content_controller, init_document_module, init_document_service, init_document_id_util, init_email_module, init_email_service, init_email_verification_service, init_template_service, init_environment_controller, init_environment_module, init_environment_service, init_environment_setting, init_history_controller, init_history_module, init_history_service, init_notification_constants, init_notification_controller, init_notification_module, init_notification_service, init_notification_settings, init_notification_schema, init_constants, init_plugin_controller, init_plugin_module, init_plugin_lifecycle_service, init_plugin_registry_service, init_plugin_service, init_rbac_module, init_permission_discovery_service, init_permission_service, init_role_service, init_permission_guard, init_dynamic_permission_interceptor, init_assign_role_dto, init_create_role_dto, init_duplicate_role_dto, init_update_permissions_dto, init_update_role_dto, init_role_schema, init_rbac_constants, init_rbac_settings, init_rbac_decorators, init_settings, init_storage_module, init_storage_service, init_storage_settings, init_storage_constants, init_local_storage_adapter, init_media_schema, init_user, init_webhook_module, init_webhook_service, init_webhook_settings, init_webhook_listener, init_view_config_module, init_view_config_service, init_view_config_schema, init_activity_controller, init_activity_module, init_activity_service, init_activity_settings, init_activity_schema, init_admin_module, init_admin_controller, init_admin_service, init_general_module, init_general_settings, CacheService } from './chunk-L5S66O2C.js';
3
+ export { API_KEY_PERMISSION_KEY, API_KEY_SCHEMA_KEY, AUTH_CONFIG, AUTH_STRATEGY, Activity, ActivityController, ActivityModule, ActivityService, ActivitySettings, AdminController, AdminModule, AdminService, ApiKey, ApiKeyGuard, ApiKeyService, ApiKeySettings, ApiKeyUsage, ApiKeysModule, AssignRoleDto, AuthModule, AuthSettings, AuthStrategyFactory, CACHE_ADAPTER_TOKEN, CACHE_METADATA_KEY, CACHE_TTL_KEY, CRUD_ACTIONS, CacheModule, CacheService, ContentController, ContentModule, ContentService, ContentSettings, CreateApiKeyDto, CreateRoleDto, CreateUserDto, CurrentApiKey, DEFAULT_ROLES, DocumentModule, DocumentService, DuplicateRoleDto, DynamicAuthGuard, DynamicPermissionInterceptor, EmailModule, EmailService, EmailVerificationService, EnvironmentController, EnvironmentModule, EnvironmentService, Environments, GeneralModule, GeneralSettings, HasPermission, HistoryController, HistoryModule, HistoryService, JwtAuthStrategy, LocalStorageAdapter, Media, MediaFolder, MediaSettings, MemoryCacheAdapter, NOTIFICATION_MODULE_OPTIONS, Notification, NotificationController, NotificationModule, NotificationService, NotificationSettings, OptionalDynamicAuthGuard, PERMISSION_CATEGORIES, PLUGIN_FRONTEND_MANIFEST, PLUGIN_METADATA, PLUGIN_MODULE, PermissionDiscoveryService, PermissionGuard, PermissionMeta, PermissionService, PluginController, PluginLifecycleService, PluginModule, PluginRegistryService, PluginService, RBACModule, RBACSettings, RBAC_CONFIG, ROLE_MODEL, RequireApiKeyPermission, RequireApiKeySchema, RequirePermission, Role, RoleService, STORAGE_ADAPTER, STORAGE_CONFIG, SettingsModule, SettingsService, StorageModule, StorageService, TemplateService, USER_EXTENSION_TOKEN, UpdateApiKeyDto, UpdatePermissionsDto, UpdateRoleDto, User, UserController, UserExtensionService, UserModule, UserService, ViewConfig, ViewConfigModule, ViewConfigService, WILDCARD_PERMISSION, WebhookListenerService, WebhookModule, WebhookService, WebhookSettings, generateDocumentId, getPermissionMetadata, getPluginOptionsToken, hasPermissionDecorator, isValidDocumentId, locales, timezones } from './chunk-L5S66O2C.js';
4
4
  import './chunk-4KTI5N3Y.js';
5
5
  import './chunk-63OQXC3R.js';
6
6
  import './chunk-K5CAAMIC.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magnet-cms/core",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "Core NestJS module for Magnet CMS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -72,7 +72,7 @@
72
72
  "sharp": "^0.33.5"
73
73
  },
74
74
  "peerDependencies": {
75
- "@magnet-cms/common": "^0.2.0",
75
+ "@magnet-cms/common": "^0.3.0",
76
76
  "@magnet-cms/utils": "^0.1.1",
77
77
  "@nestjs/common": "^11.1.12",
78
78
  "@nestjs/config": "^4.0.0",