@forklaunch/better-auth-mikro-orm-fork 0.4.106 → 0.5.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.
package/lib/adapter.cjs CHANGED
@@ -25,7 +25,6 @@ __export(src_exports, {
25
25
  module.exports = __toCommonJS(src_exports);
26
26
 
27
27
  // src/adapter.ts
28
- var import_core2 = require("@mikro-orm/core");
29
28
  var import_adapters = require("better-auth/adapters");
30
29
  var import_dset2 = require("dset");
31
30
 
@@ -51,12 +50,15 @@ function createAdapterUtils(orm) {
51
50
  const normalizeEntityName = (name) => naming.getEntityName(naming.classToTableName(name));
52
51
  const getEntityMetadata = (entityName) => {
53
52
  entityName = normalizeEntityName(entityName);
54
- if (!metadata.has(entityName)) {
55
- createAdapterError(
56
- `Cannot find metadata for "${entityName}" entity. Make sure it defined and listed in your Mikro ORM config.`
57
- );
53
+ const allMetadata = metadata.getAll();
54
+ for (const meta of allMetadata.values()) {
55
+ if (meta.className === entityName) {
56
+ return meta;
57
+ }
58
58
  }
59
- return metadata.get(entityName);
59
+ createAdapterError(
60
+ `Cannot find metadata for "${entityName}" entity. Make sure it defined and listed in your Mikro ORM config.`
61
+ );
60
62
  };
61
63
  function getPropertyMetadata(metadata2, fieldName) {
62
64
  const prop = metadata2.props.find((prop2) => {
@@ -124,7 +126,7 @@ function createAdapterUtils(orm) {
124
126
  const normalizeInput = (metadata2, input) => {
125
127
  const fields = {};
126
128
  Object.entries(input).forEach(([key, value]) => {
127
- if (typeof value === "object" && value.$in) {
129
+ if (typeof value === "object" && value !== null && value.$in) {
128
130
  const property = getPropertyMetadata(metadata2, key);
129
131
  (0, import_dset.dset)(fields, [property.name], value.$in);
130
132
  } else {
@@ -144,7 +146,9 @@ function createAdapterUtils(orm) {
144
146
  getPropertyMetadata(metadata2, key)
145
147
  ),
146
148
  value
147
- })).forEach(({ path, value }) => (0, import_dset.dset)(result, path, value));
149
+ })).forEach(({ path, value }) => {
150
+ (0, import_dset.dset)(result, path, value);
151
+ });
148
152
  return result;
149
153
  };
150
154
  function createWhereClause(path, value, op, target = {}) {
@@ -195,13 +199,14 @@ function createAdapterUtils(orm) {
195
199
  where.filter(({ connector }) => !connector || connector === "AND").forEach(({ field, operator, value }, index) => {
196
200
  const path = ["$and", index].concat(getFieldPath(metadata2, field, true));
197
201
  if (operator === "in") {
198
- return createWhereInClause(field, path, value, result);
202
+ createWhereInClause(field, path, value, result);
203
+ } else {
204
+ createWhereClause(path, value, "eq", result);
199
205
  }
200
- return createWhereClause(path, value, "eq", result);
201
206
  });
202
207
  where.filter(({ connector }) => connector === "OR").forEach(({ field, value }, index) => {
203
208
  const path = ["$or", index].concat(getFieldPath(metadata2, field, true));
204
- return createWhereClause(path, value, "eq", result);
209
+ createWhereClause(path, value, "eq", result);
205
210
  });
206
211
  return result;
207
212
  };
@@ -228,14 +233,14 @@ var adapter = (orm) => ({ options }) => {
228
233
  async create({ model, data, select }) {
229
234
  const metadata = getEntityMetadata(model);
230
235
  const input = normalizeInput(metadata, data);
231
- if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
236
+ if (options.advanced?.database?.generateId === false) {
232
237
  Reflect.deleteProperty(input, "id");
233
238
  }
234
239
  const entity = orm.em.create(metadata.class, input);
235
240
  try {
236
- await orm.em.persistAndFlush(entity);
241
+ await orm.em.persist(entity).flush();
237
242
  } catch (error) {
238
- await orm.em.removeAndFlush(entity);
243
+ await orm.em.remove(entity).flush();
239
244
  throw error;
240
245
  }
241
246
  return normalizeOutput(metadata, entity, select);
@@ -288,7 +293,7 @@ var adapter = (orm) => ({ options }) => {
288
293
  try {
289
294
  await orm.em.flush();
290
295
  } catch (error) {
291
- await orm.em.removeAndFlush(entity);
296
+ await orm.em.remove(entity).flush();
292
297
  throw error;
293
298
  }
294
299
  return normalizeOutput(metadata, entity);
@@ -311,7 +316,7 @@ var adapter = (orm) => ({ options }) => {
311
316
  }
312
317
  );
313
318
  if (entity) {
314
- await orm.em.removeAndFlush(entity);
319
+ await orm.em.remove(entity).flush();
315
320
  }
316
321
  },
317
322
  async deleteMany({ model, where }) {
package/lib/adapter.d.cts CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as better_auth_adapters from 'better-auth/adapters';
2
- import { AdapterDebugLogs } from 'better-auth/adapters';
3
2
  import { MikroORM } from '@mikro-orm/core';
4
3
  import { BetterAuthOptions } from 'better-auth/types';
5
4
 
@@ -9,7 +8,11 @@ interface MikroOrmAdapterConfig {
9
8
  *
10
9
  * @default false
11
10
  */
12
- debugLogs?: AdapterDebugLogs;
11
+ debugLogs?: boolean | {
12
+ isRunningAdapterTests: boolean;
13
+ } | {
14
+ logCondition?: () => boolean;
15
+ };
13
16
  /**
14
17
  * Indicates whether or not JSON is supported by target database.
15
18
  *
@@ -34,9 +37,9 @@ interface MikroOrmAdapterConfig {
34
37
  * * No complex primary key support
35
38
  * * No schema generation
36
39
  *
37
- * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `MikroORM.initSync` methods
40
+ * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `new MikroORM` constructor
38
41
  * @param config - Additional configuration for Mikro ORM adapter
39
42
  */
40
- declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory;
43
+ declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory<BetterAuthOptions>;
41
44
 
42
45
  export { type MikroOrmAdapterConfig, mikroOrmAdapter };
package/lib/adapter.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as better_auth_adapters from 'better-auth/adapters';
2
- import { AdapterDebugLogs } from 'better-auth/adapters';
3
2
  import { MikroORM } from '@mikro-orm/core';
4
3
  import { BetterAuthOptions } from 'better-auth/types';
5
4
 
@@ -9,7 +8,11 @@ interface MikroOrmAdapterConfig {
9
8
  *
10
9
  * @default false
11
10
  */
12
- debugLogs?: AdapterDebugLogs;
11
+ debugLogs?: boolean | {
12
+ isRunningAdapterTests: boolean;
13
+ } | {
14
+ logCondition?: () => boolean;
15
+ };
13
16
  /**
14
17
  * Indicates whether or not JSON is supported by target database.
15
18
  *
@@ -34,9 +37,9 @@ interface MikroOrmAdapterConfig {
34
37
  * * No complex primary key support
35
38
  * * No schema generation
36
39
  *
37
- * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `MikroORM.initSync` methods
40
+ * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `new MikroORM` constructor
38
41
  * @param config - Additional configuration for Mikro ORM adapter
39
42
  */
40
- declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory;
43
+ declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory<BetterAuthOptions>;
41
44
 
42
45
  export { type MikroOrmAdapterConfig, mikroOrmAdapter };
package/lib/adapter.js CHANGED
@@ -1,5 +1,4 @@
1
1
  // src/adapter.ts
2
- import "@mikro-orm/core";
3
2
  import {
4
3
  createAdapterFactory
5
4
  } from "better-auth/adapters";
@@ -27,12 +26,15 @@ function createAdapterUtils(orm) {
27
26
  const normalizeEntityName = (name) => naming.getEntityName(naming.classToTableName(name));
28
27
  const getEntityMetadata = (entityName) => {
29
28
  entityName = normalizeEntityName(entityName);
30
- if (!metadata.has(entityName)) {
31
- createAdapterError(
32
- `Cannot find metadata for "${entityName}" entity. Make sure it defined and listed in your Mikro ORM config.`
33
- );
29
+ const allMetadata = metadata.getAll();
30
+ for (const meta of allMetadata.values()) {
31
+ if (meta.className === entityName) {
32
+ return meta;
33
+ }
34
34
  }
35
- return metadata.get(entityName);
35
+ createAdapterError(
36
+ `Cannot find metadata for "${entityName}" entity. Make sure it defined and listed in your Mikro ORM config.`
37
+ );
36
38
  };
37
39
  function getPropertyMetadata(metadata2, fieldName) {
38
40
  const prop = metadata2.props.find((prop2) => {
@@ -100,7 +102,7 @@ function createAdapterUtils(orm) {
100
102
  const normalizeInput = (metadata2, input) => {
101
103
  const fields = {};
102
104
  Object.entries(input).forEach(([key, value]) => {
103
- if (typeof value === "object" && value.$in) {
105
+ if (typeof value === "object" && value !== null && value.$in) {
104
106
  const property = getPropertyMetadata(metadata2, key);
105
107
  dset(fields, [property.name], value.$in);
106
108
  } else {
@@ -120,7 +122,9 @@ function createAdapterUtils(orm) {
120
122
  getPropertyMetadata(metadata2, key)
121
123
  ),
122
124
  value
123
- })).forEach(({ path, value }) => dset(result, path, value));
125
+ })).forEach(({ path, value }) => {
126
+ dset(result, path, value);
127
+ });
124
128
  return result;
125
129
  };
126
130
  function createWhereClause(path, value, op, target = {}) {
@@ -171,13 +175,14 @@ function createAdapterUtils(orm) {
171
175
  where.filter(({ connector }) => !connector || connector === "AND").forEach(({ field, operator, value }, index) => {
172
176
  const path = ["$and", index].concat(getFieldPath(metadata2, field, true));
173
177
  if (operator === "in") {
174
- return createWhereInClause(field, path, value, result);
178
+ createWhereInClause(field, path, value, result);
179
+ } else {
180
+ createWhereClause(path, value, "eq", result);
175
181
  }
176
- return createWhereClause(path, value, "eq", result);
177
182
  });
178
183
  where.filter(({ connector }) => connector === "OR").forEach(({ field, value }, index) => {
179
184
  const path = ["$or", index].concat(getFieldPath(metadata2, field, true));
180
- return createWhereClause(path, value, "eq", result);
185
+ createWhereClause(path, value, "eq", result);
181
186
  });
182
187
  return result;
183
188
  };
@@ -204,14 +209,14 @@ var adapter = (orm) => ({ options }) => {
204
209
  async create({ model, data, select }) {
205
210
  const metadata = getEntityMetadata(model);
206
211
  const input = normalizeInput(metadata, data);
207
- if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
212
+ if (options.advanced?.database?.generateId === false) {
208
213
  Reflect.deleteProperty(input, "id");
209
214
  }
210
215
  const entity = orm.em.create(metadata.class, input);
211
216
  try {
212
- await orm.em.persistAndFlush(entity);
217
+ await orm.em.persist(entity).flush();
213
218
  } catch (error) {
214
- await orm.em.removeAndFlush(entity);
219
+ await orm.em.remove(entity).flush();
215
220
  throw error;
216
221
  }
217
222
  return normalizeOutput(metadata, entity, select);
@@ -264,7 +269,7 @@ var adapter = (orm) => ({ options }) => {
264
269
  try {
265
270
  await orm.em.flush();
266
271
  } catch (error) {
267
- await orm.em.removeAndFlush(entity);
272
+ await orm.em.remove(entity).flush();
268
273
  throw error;
269
274
  }
270
275
  return normalizeOutput(metadata, entity);
@@ -287,7 +292,7 @@ var adapter = (orm) => ({ options }) => {
287
292
  }
288
293
  );
289
294
  if (entity) {
290
- await orm.em.removeAndFlush(entity);
295
+ await orm.em.remove(entity).flush();
291
296
  }
292
297
  },
293
298
  async deleteMany({ model, where }) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "type": "module",
4
4
  "name": "@forklaunch/better-auth-mikro-orm-fork",
5
- "version": "0.4.106",
5
+ "version": "0.5.0",
6
6
  "description": "Mikro ORM Adapter for Better Auth",
7
7
  "keywords": [
8
8
  "auth",
@@ -20,7 +20,7 @@
20
20
  "url": "git+ssh://git@github.com/octet-stream/better-auth-mikro-orm.git"
21
21
  },
22
22
  "engines": {
23
- "node": ">= 18"
23
+ "node": ">= 22.17"
24
24
  },
25
25
  "types": "./lib/adapter.d.cts",
26
26
  "main": "./lib/adapter.cjs",
@@ -46,34 +46,35 @@
46
46
  "lib"
47
47
  ],
48
48
  "devDependencies": {
49
- "@biomejs/biome": "1.9.4",
50
- "@changesets/changelog-github": "0.5.1",
51
- "@changesets/cli": "2.29.2",
52
- "@commitlint/cli": "19.8.0",
53
- "@commitlint/config-conventional": "19.8.0",
54
- "@commitlint/types": "19.8.0",
55
- "@faker-js/faker": "9.7.0",
56
- "@mikro-orm/better-sqlite": "6.4.13",
57
- "@mikro-orm/core": "6.4.13",
58
- "@types/node": "22.14.1",
59
- "@types/uuid": "10.0.0",
60
- "@vitest/coverage-v8": "3.1.1",
61
- "@vitest/ui": "3.1.1",
62
- "better-auth": "1.3.11",
63
- "del-cli": "6.0.0",
64
- "es-toolkit": "1.39.7",
49
+ "@better-auth/test-utils": "1.5.5",
50
+ "@biomejs/biome": "2.4.7",
51
+ "@changesets/changelog-github": "0.6.0",
52
+ "@changesets/cli": "2.30.0",
53
+ "@commitlint/cli": "20.5.0",
54
+ "@commitlint/config-conventional": "20.5.0",
55
+ "@commitlint/types": "20.5.0",
56
+ "@faker-js/faker": "10.3.0",
57
+ "@mikro-orm/core": "7.0.2",
58
+ "@mikro-orm/sqlite": "7.0.2",
59
+ "@types/node": "25.5.0",
60
+ "@types/uuid": "11.0.0",
61
+ "@vitest/coverage-v8": "4.1.0",
62
+ "@vitest/ui": "4.1.0",
63
+ "better-auth": "1.5.5",
64
+ "del-cli": "7.0.0",
65
+ "es-toolkit": "1.45.1",
65
66
  "husky": "9.1.7",
66
- "is-in-ci": "1.0.0",
67
- "tsup": "8.4.0",
68
- "typescript": "5.8.3",
69
- "uuid": "11.1.0",
70
- "vitest": "3.1.1"
67
+ "is-in-ci": "2.0.0",
68
+ "tsup": "8.5.1",
69
+ "typescript": "5.9.3",
70
+ "uuid": "13.0.0",
71
+ "vitest": "4.1.0"
71
72
  },
72
73
  "dependencies": {
73
74
  "dset": "3.1.4"
74
75
  },
75
76
  "peerDependencies": {
76
- "@mikro-orm/core": "^6.0.0",
77
+ "@mikro-orm/core": "^7.0.0",
77
78
  "better-auth": "^1.0.0"
78
79
  },
79
80
  "scripts": {