@mikro-orm/nestjs 5.2.3 → 6.0.1

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,7 +1,6 @@
1
- import type { DynamicModule, MiddlewareConsumer, OnApplicationShutdown } from '@nestjs/common';
1
+ import { type DynamicModule, type MiddlewareConsumer, type OnApplicationShutdown } from '@nestjs/common';
2
2
  import { ModuleRef } from '@nestjs/core';
3
- import type { MikroOrmModuleAsyncOptions, MikroOrmModuleSyncOptions } from './typings';
4
- import { MikroOrmModuleOptions } from './typings';
3
+ import { MikroOrmModuleOptions, type MikroOrmModuleAsyncOptions, type MikroOrmModuleSyncOptions } from './typings';
5
4
  export declare class MikroOrmCoreModule implements OnApplicationShutdown {
6
5
  private readonly options;
7
6
  private readonly moduleRef;
@@ -40,11 +40,11 @@ exports.MikroOrmCoreModule = void 0;
40
40
  const core_1 = require("@mikro-orm/core");
41
41
  const common_1 = require("@nestjs/common");
42
42
  const core_2 = require("@nestjs/core");
43
- const mikro_orm_common_1 = require("./mikro-orm.common");
44
- const mikro_orm_providers_1 = require("./mikro-orm.providers");
45
- const mikro_orm_middleware_1 = require("./mikro-orm.middleware");
46
43
  const middleware_helper_1 = require("./middleware.helper");
44
+ const mikro_orm_common_1 = require("./mikro-orm.common");
47
45
  const mikro_orm_entities_storage_1 = require("./mikro-orm.entities.storage");
46
+ const mikro_orm_middleware_1 = require("./mikro-orm.middleware");
47
+ const mikro_orm_providers_1 = require("./mikro-orm.providers");
48
48
  async function tryRequire(name) {
49
49
  try {
50
50
  return await Promise.resolve(`${name}`).then(s => __importStar(require(s)));
@@ -53,6 +53,17 @@ async function tryRequire(name) {
53
53
  return undefined; // ignore, optional dependency
54
54
  }
55
55
  }
56
+ // TODO: provide the package name via some platform method, prefer that over the static map when available
57
+ const PACKAGES = {
58
+ MongoDriver: '@mikro-orm/mongo',
59
+ MySqlDriver: '@mikro-orm/mysql',
60
+ MsSqlDriver: '@mikro-orm/mssql',
61
+ MariaDbDriver: '@mikro-orm/mariadb',
62
+ PostgreSqlDriver: '@mikro-orm/postgresql',
63
+ SqliteDriver: '@mikro-orm/sqlite',
64
+ LibSqlDriver: '@mikro-orm/libsql',
65
+ BetterSqliteDriver: '@mikro-orm/better-sqlite',
66
+ };
56
67
  let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
57
68
  constructor(options, moduleRef) {
58
69
  this.options = options;
@@ -63,11 +74,34 @@ let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
63
74
  const knex = await tryRequire('@mikro-orm/knex');
64
75
  const mongo = await tryRequire('@mikro-orm/mongodb');
65
76
  const em = await this.createEntityManager(options);
77
+ if (em && !contextName) {
78
+ const packageName = PACKAGES[em.getDriver().constructor.name];
79
+ const driverPackage = await tryRequire(packageName);
80
+ if (driverPackage) {
81
+ return {
82
+ module: MikroOrmCoreModule_1,
83
+ providers: [
84
+ { provide: mikro_orm_common_1.MIKRO_ORM_MODULE_OPTIONS, useValue: options || {} },
85
+ (0, mikro_orm_providers_1.createMikroOrmProvider)(contextName),
86
+ (0, mikro_orm_providers_1.createMikroOrmProvider)(contextName, driverPackage.MikroORM),
87
+ (0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, core_1.EntityManager),
88
+ (0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, driverPackage.EntityManager),
89
+ ],
90
+ exports: [
91
+ core_1.MikroORM,
92
+ core_1.EntityManager,
93
+ driverPackage.EntityManager,
94
+ driverPackage.MikroORM,
95
+ ],
96
+ };
97
+ }
98
+ }
66
99
  return {
67
100
  module: MikroOrmCoreModule_1,
68
101
  providers: [
69
102
  { provide: mikro_orm_common_1.MIKRO_ORM_MODULE_OPTIONS, useValue: options || {} },
70
103
  (0, mikro_orm_providers_1.createMikroOrmProvider)(contextName),
104
+ ...(mongo ? [(0, mikro_orm_providers_1.createMikroOrmProvider)(contextName, mongo.MikroORM)] : []),
71
105
  (0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, core_1.EntityManager, contextName),
72
106
  ...(em ? [(0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, em.constructor, contextName)] : []),
73
107
  ...(knex ? [(0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, knex.EntityManager, contextName)] : []),
@@ -78,7 +112,7 @@ let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
78
112
  contextName ? (0, mikro_orm_common_1.getEntityManagerToken)(contextName) : core_1.EntityManager,
79
113
  ...(em && !contextName ? [em.constructor] : []),
80
114
  ...(knex && !contextName ? [knex.EntityManager] : []),
81
- ...(mongo && !contextName ? [mongo.EntityManager] : []),
115
+ ...(mongo && !contextName ? [mongo.EntityManager, mongo.MikroORM] : []),
82
116
  ],
83
117
  };
84
118
  }
@@ -87,6 +121,30 @@ let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
87
121
  const knex = await tryRequire('@mikro-orm/knex');
88
122
  const mongo = await tryRequire('@mikro-orm/mongodb');
89
123
  const em = await this.createEntityManager(options);
124
+ if (em && !contextName) {
125
+ const packageName = PACKAGES[em.getDriver().constructor.name];
126
+ const driverPackage = await tryRequire(packageName);
127
+ if (driverPackage) {
128
+ return {
129
+ module: MikroOrmCoreModule_1,
130
+ imports: options.imports || [],
131
+ providers: [
132
+ ...(options.providers || []),
133
+ ...(0, mikro_orm_providers_1.createAsyncProviders)({ ...options, contextName: options.contextName }),
134
+ (0, mikro_orm_providers_1.createMikroOrmProvider)(contextName),
135
+ (0, mikro_orm_providers_1.createMikroOrmProvider)(contextName, driverPackage.MikroORM),
136
+ (0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, core_1.EntityManager),
137
+ (0, mikro_orm_providers_1.createEntityManagerProvider)(options?.scope, driverPackage.EntityManager),
138
+ ],
139
+ exports: [
140
+ core_1.MikroORM,
141
+ core_1.EntityManager,
142
+ driverPackage.EntityManager,
143
+ driverPackage.MikroORM,
144
+ ],
145
+ };
146
+ }
147
+ }
90
148
  return {
91
149
  module: MikroOrmCoreModule_1,
92
150
  imports: options.imports || [],
@@ -104,7 +162,7 @@ let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
104
162
  contextName ? (0, mikro_orm_common_1.getEntityManagerToken)(contextName) : core_1.EntityManager,
105
163
  ...(em && !contextName ? [em.constructor] : []),
106
164
  ...(knex && !contextName ? [knex.EntityManager] : []),
107
- ...(mongo && !contextName ? [mongo.EntityManager] : []),
165
+ ...(mongo && !contextName ? [mongo.EntityManager, mongo.MikroORM] : []),
108
166
  ],
109
167
  };
110
168
  }
@@ -117,14 +175,20 @@ let MikroOrmCoreModule = MikroOrmCoreModule_1 = class MikroOrmCoreModule {
117
175
  return undefined;
118
176
  }
119
177
  try {
178
+ let config;
120
179
  if (!options || Object.keys(options).length === 0) {
121
- const config = await core_1.ConfigurationLoader.getConfiguration(false);
122
- return config.getDriver().createEntityManager();
180
+ config = await core_1.ConfigurationLoader.getConfiguration(false);
181
+ }
182
+ if (!config && 'useFactory' in options) {
183
+ config = new core_1.Configuration(await options.useFactory(), false);
184
+ }
185
+ if (!config && options instanceof core_1.Configuration) {
186
+ config = options;
123
187
  }
124
- if ('useFactory' in options) {
125
- const config = new core_1.Configuration(await options.useFactory(), false);
126
- return config.getDriver().createEntityManager();
188
+ if (!config && typeof options === 'object' && options && 'driver' in options) {
189
+ config = new core_1.Configuration(options, false);
127
190
  }
191
+ return config?.getDriver().createEntityManager();
128
192
  }
129
193
  catch {
130
194
  // ignore
@@ -1,6 +1,6 @@
1
- import type { MiddlewareConsumer } from '@nestjs/common';
2
- import { MikroOrmMiddlewareModuleOptions } from './typings';
1
+ import { type MiddlewareConsumer } from '@nestjs/common';
3
2
  import type { MikroORM } from '@mikro-orm/core';
3
+ import { MikroOrmMiddlewareModuleOptions } from './typings';
4
4
  export declare class MikroOrmMiddlewareModule {
5
5
  private readonly options;
6
6
  constructor(options: MikroOrmMiddlewareModuleOptions);
@@ -13,7 +13,7 @@ export declare class MikroOrmMiddlewareModule {
13
13
  inject?: undefined;
14
14
  } | {
15
15
  provide: string;
16
- useFactory: (...args: MikroORM[]) => MikroORM<import("@mikro-orm/core").IDatabaseDriver<import("@mikro-orm/core").Connection>>[];
16
+ useFactory: (...args: MikroORM[]) => MikroORM<import("@mikro-orm/core").IDatabaseDriver<import("@mikro-orm/core").Connection>, import("@mikro-orm/core").EntityManager<import("@mikro-orm/core").IDatabaseDriver<import("@mikro-orm/core").Connection>>>[];
17
17
  inject: string[];
18
18
  useValue?: undefined;
19
19
  })[];
@@ -15,9 +15,9 @@ var MikroOrmMiddlewareModule_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MikroOrmMiddlewareModule = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
+ const middleware_helper_1 = require("./middleware.helper");
18
19
  const mikro_orm_common_1 = require("./mikro-orm.common");
19
20
  const multiple_mikro_orm_middleware_1 = require("./multiple-mikro-orm.middleware");
20
- const middleware_helper_1 = require("./middleware.helper");
21
21
  let MikroOrmMiddlewareModule = MikroOrmMiddlewareModule_1 = class MikroOrmMiddlewareModule {
22
22
  constructor(options) {
23
23
  this.options = options;
@@ -4,8 +4,8 @@ export declare const MIKRO_ORM_MODULE_OPTIONS: unique symbol;
4
4
  export declare const CONTEXT_NAMES: string[];
5
5
  export declare const logger: Logger;
6
6
  export declare const getMikroORMToken: (name: string) => string;
7
- export declare const InjectMikroORM: (name: string) => (target: object, key: string | symbol | undefined, index?: number | undefined) => void;
7
+ export declare const InjectMikroORM: (name: string) => PropertyDecorator & ParameterDecorator;
8
8
  export declare const getEntityManagerToken: (name: string) => string;
9
- export declare const InjectEntityManager: (name: string) => (target: object, key: string | symbol | undefined, index?: number | undefined) => void;
9
+ export declare const InjectEntityManager: (name: string) => PropertyDecorator & ParameterDecorator;
10
10
  export declare const getRepositoryToken: <T extends object>(entity: EntityName<T>, name?: string) => string;
11
- export declare const InjectRepository: <T extends object>(entity: EntityName<T>, name?: string) => (target: object, key: string | symbol | undefined, index?: number | undefined) => void;
11
+ export declare const InjectRepository: <T extends object>(entity: EntityName<T>, name?: string) => PropertyDecorator & ParameterDecorator;
@@ -1,5 +1,5 @@
1
1
  import { MikroORM } from '@mikro-orm/core';
2
- import type { NestMiddleware } from '@nestjs/common';
2
+ import { type NestMiddleware } from '@nestjs/common';
3
3
  export declare class MikroOrmMiddleware implements NestMiddleware {
4
4
  private readonly orm;
5
5
  constructor(orm: MikroORM);
@@ -1,6 +1,6 @@
1
- import type { AnyEntity } from '@mikro-orm/core';
2
- import type { DynamicModule } from '@nestjs/common';
3
- import type { MikroOrmModuleAsyncOptions, MikroOrmModuleSyncOptions, MikroOrmMiddlewareModuleOptions, MikroOrmModuleFeatureOptions, EntityName } from './typings';
1
+ import { type AnyEntity } from '@mikro-orm/core';
2
+ import { type DynamicModule } from '@nestjs/common';
3
+ import type { EntityName, MikroOrmMiddlewareModuleOptions, MikroOrmModuleAsyncOptions, MikroOrmModuleFeatureOptions, MikroOrmModuleSyncOptions } from './typings';
4
4
  export declare class MikroOrmModule {
5
5
  /**
6
6
  * Clears the entity storage. This is useful for testing purposes, when you want to isolate the tests.
@@ -10,10 +10,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MikroOrmModule = void 0;
11
11
  const core_1 = require("@mikro-orm/core");
12
12
  const common_1 = require("@nestjs/common");
13
- const mikro_orm_providers_1 = require("./mikro-orm.providers");
14
13
  const mikro_orm_core_module_1 = require("./mikro-orm-core.module");
15
14
  const mikro_orm_middleware_module_1 = require("./mikro-orm-middleware.module");
16
15
  const mikro_orm_entities_storage_1 = require("./mikro-orm.entities.storage");
16
+ const mikro_orm_providers_1 = require("./mikro-orm.providers");
17
17
  let MikroOrmModule = MikroOrmModule_1 = class MikroOrmModule {
18
18
  /**
19
19
  * Clears the entity storage. This is useful for testing purposes, when you want to isolate the tests.
@@ -1,9 +1,7 @@
1
- import type { AnyEntity } from '@mikro-orm/core';
2
- import { EntityManager } from '@mikro-orm/core';
3
- import type { MikroOrmModuleAsyncOptions, EntityName } from './typings';
4
- import type { Provider, Type } from '@nestjs/common';
5
- import { Scope } from '@nestjs/common';
6
- export declare function createMikroOrmProvider(contextName?: string): Provider;
1
+ import { EntityManager, type AnyEntity } from '@mikro-orm/core';
2
+ import { Scope, type Provider, type Type } from '@nestjs/common';
3
+ import type { EntityName, MikroOrmModuleAsyncOptions } from './typings';
4
+ export declare function createMikroOrmProvider(contextName?: string, type?: Type): Provider;
7
5
  export declare function createEntityManagerProvider(scope?: Scope, entityManager?: Type, contextName?: string): Provider<EntityManager>;
8
6
  export declare function createMikroOrmAsyncOptionsProvider(options: MikroOrmModuleAsyncOptions): Provider;
9
7
  export declare function createAsyncProviders(options: MikroOrmModuleAsyncOptions): Provider[];
@@ -1,13 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createMikroOrmRepositoryProviders = exports.createAsyncProviders = exports.createMikroOrmAsyncOptionsProvider = exports.createEntityManagerProvider = exports.createMikroOrmProvider = void 0;
4
- const mikro_orm_common_1 = require("./mikro-orm.common");
5
4
  const core_1 = require("@mikro-orm/core");
5
+ const mikro_orm_common_1 = require("./mikro-orm.common");
6
6
  const common_1 = require("@nestjs/common");
7
7
  const mikro_orm_entities_storage_1 = require("./mikro-orm.entities.storage");
8
- function createMikroOrmProvider(contextName) {
8
+ function createMikroOrmProvider(contextName, type = core_1.MikroORM) {
9
+ if (!contextName && type !== core_1.MikroORM) {
10
+ return {
11
+ provide: type,
12
+ useFactory: orm => orm, // just a simple alias
13
+ inject: [core_1.MikroORM], // depend on the ORM from core package
14
+ };
15
+ }
9
16
  return {
10
- provide: contextName ? (0, mikro_orm_common_1.getMikroORMToken)(contextName) : core_1.MikroORM,
17
+ provide: contextName ? (0, mikro_orm_common_1.getMikroORMToken)(contextName) : type,
11
18
  useFactory: async (options) => {
12
19
  options = { ...options };
13
20
  if (options?.autoLoadEntities) {
@@ -47,8 +54,8 @@ function createMikroOrmAsyncOptionsProvider(options) {
47
54
  if (options.useFactory) {
48
55
  return {
49
56
  provide: mikro_orm_common_1.MIKRO_ORM_MODULE_OPTIONS,
50
- useFactory: (...args) => {
51
- const factoryOptions = options.useFactory(...args);
57
+ useFactory: async (...args) => {
58
+ const factoryOptions = await options.useFactory(...args);
52
59
  return options.contextName
53
60
  ? { contextName: options.contextName, ...factoryOptions }
54
61
  : factoryOptions;
@@ -86,7 +93,7 @@ function createMikroOrmRepositoryProviders(entities, contextName) {
86
93
  const inject = contextName ? (0, mikro_orm_common_1.getEntityManagerToken)(contextName) : core_1.EntityManager;
87
94
  (entities || []).forEach(entity => {
88
95
  const meta = metadata.find(meta => meta.class === entity);
89
- const repository = (meta?.repository ?? meta?.customRepository);
96
+ const repository = meta?.repository;
90
97
  if (repository) {
91
98
  providers.push({
92
99
  provide: repository(),
@@ -1,5 +1,5 @@
1
- import type { MikroORM } from '@mikro-orm/core';
2
- import type { NestMiddleware } from '@nestjs/common';
1
+ import { type MikroORM } from '@mikro-orm/core';
2
+ import { type NestMiddleware } from '@nestjs/common';
3
3
  export declare class MultipleMikroOrmMiddleware implements NestMiddleware {
4
4
  private readonly orm;
5
5
  constructor(orm: MikroORM[]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/nestjs",
3
- "version": "5.2.3",
3
+ "version": "6.0.1",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Martin Adamek",
@@ -40,31 +40,32 @@
40
40
  "lint": "eslint src/**/*.ts"
41
41
  },
42
42
  "peerDependencies": {
43
- "@mikro-orm/core": "^5.0.0 || ^6.0.0-dev.0",
44
- "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
45
- "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0"
43
+ "@mikro-orm/core": "^6.0.0",
44
+ "@nestjs/common": "^10.0.0",
45
+ "@nestjs/core": "^10.0.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@mikro-orm/core": "^5.7.12",
49
- "@mikro-orm/sqlite": "^5.7.12",
50
- "@nestjs/common": "^9.4.3",
51
- "@nestjs/core": "^9.4.3",
52
- "@nestjs/platform-express": "^9.4.3",
53
- "@nestjs/testing": "^9.4.3",
54
- "@types/jest": "^29.5.2",
55
- "@types/node": "^20.3.1",
56
- "@types/supertest": "^2.0.12",
57
- "@typescript-eslint/eslint-plugin": "~5.61.0",
58
- "@typescript-eslint/parser": "~5.61.0",
59
- "conventional-changelog": "^5.0.0",
60
- "conventional-changelog-cli": "^4.0.0",
61
- "eslint": "^8.43.0",
62
- "jest": "^29.5.0",
48
+ "@mikro-orm/core": "^6.2.7",
49
+ "@mikro-orm/sqlite": "^6.2.7",
50
+ "@nestjs/common": "^10.3.8",
51
+ "@nestjs/core": "^10.3.8",
52
+ "@nestjs/platform-express": "^10.3.8",
53
+ "@nestjs/testing": "^10.3.8",
54
+ "@types/jest": "^29.5.12",
55
+ "@types/node": "^20.12.12",
56
+ "@types/supertest": "^6.0.2",
57
+ "@typescript-eslint/eslint-plugin": "~7.9.0",
58
+ "@typescript-eslint/parser": "~7.9.0",
59
+ "conventional-changelog": "^6.0.0",
60
+ "conventional-changelog-cli": "^5.0.0",
61
+ "eslint": "^8.57.0",
62
+ "eslint-plugin-import": "^2.29.1",
63
+ "jest": "^29.7.0",
63
64
  "rxjs": "^7.8.1",
64
- "supertest": "^6.3.3",
65
- "ts-jest": "^29.1.0",
66
- "ts-node": "^10.9.1",
67
- "typescript": "5.3.3"
65
+ "supertest": "^7.0.0",
66
+ "ts-jest": "^29.1.2",
67
+ "ts-node": "^10.9.2",
68
+ "typescript": "5.4.5"
68
69
  },
69
70
  "commitlint": {
70
71
  "extends": [
@@ -102,7 +103,7 @@
102
103
  ]
103
104
  },
104
105
  "engines": {
105
- "node": ">= 14.0.0"
106
+ "node": ">= 18.12.0"
106
107
  },
107
- "packageManager": "yarn@4.0.2"
108
+ "packageManager": "yarn@4.2.2"
108
109
  }