@forklaunch/better-auth-mikro-orm-fork 0.4.105 → 0.4.106

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,8 @@ __export(src_exports, {
25
25
  module.exports = __toCommonJS(src_exports);
26
26
 
27
27
  // src/adapter.ts
28
- var import_adapters = require("@forklaunch/better-auth/adapters");
28
+ var import_core2 = require("@mikro-orm/core");
29
+ var import_adapters = require("better-auth/adapters");
29
30
  var import_dset2 = require("dset");
30
31
 
31
32
  // src/utils/adapterUtils.ts
@@ -33,7 +34,7 @@ var import_core = require("@mikro-orm/core");
33
34
  var import_dset = require("dset");
34
35
 
35
36
  // src/utils/createAdapterError.ts
36
- var import_better_auth = require("@forklaunch/better-auth");
37
+ var import_better_auth = require("better-auth");
37
38
  function createAdapterError(message) {
38
39
  throw new import_better_auth.BetterAuthError(`[Mikro ORM Adapter] ${message}`);
39
40
  }
@@ -124,10 +125,12 @@ function createAdapterUtils(orm) {
124
125
  const fields = {};
125
126
  Object.entries(input).forEach(([key, value]) => {
126
127
  if (typeof value === "object" && value.$in) {
127
- (0, import_dset.dset)(fields, key, value.$in);
128
+ const property = getPropertyMetadata(metadata2, key);
129
+ (0, import_dset.dset)(fields, [property.name], value.$in);
128
130
  } else {
129
- const path = getFieldPath(metadata2, key);
130
- (0, import_dset.dset)(fields, path, value);
131
+ const property = getPropertyMetadata(metadata2, key);
132
+ const normalizedValue = normalizePropertyValue(property, value);
133
+ (0, import_dset.dset)(fields, [property.name], normalizedValue);
131
134
  }
132
135
  });
133
136
  return fields;
@@ -169,6 +172,8 @@ function createAdapterUtils(orm) {
169
172
  switch (w.operator) {
170
173
  case "in":
171
174
  return createWhereInClause(w.field, path, w.value);
175
+ case "not_in":
176
+ return createWhereClause(path, w.value, "$nin");
172
177
  case "contains":
173
178
  return createWhereClause(path, `%${w.value}%`, "$like");
174
179
  case "starts_with":
@@ -188,18 +193,14 @@ function createAdapterUtils(orm) {
188
193
  }
189
194
  const result = {};
190
195
  where.filter(({ connector }) => !connector || connector === "AND").forEach(({ field, operator, value }, index) => {
191
- const path = ["$and", index].concat(
192
- getFieldPath(metadata2, field, true)
193
- );
196
+ const path = ["$and", index].concat(getFieldPath(metadata2, field, true));
194
197
  if (operator === "in") {
195
198
  return createWhereInClause(field, path, value, result);
196
199
  }
197
200
  return createWhereClause(path, value, "eq", result);
198
201
  });
199
202
  where.filter(({ connector }) => connector === "OR").forEach(({ field, value }, index) => {
200
- const path = ["$and", index].concat(
201
- getFieldPath(metadata2, field, true)
202
- );
203
+ const path = ["$or", index].concat(getFieldPath(metadata2, field, true));
203
204
  return createWhereClause(path, value, "eq", result);
204
205
  });
205
206
  return result;
@@ -215,119 +216,135 @@ function createAdapterUtils(orm) {
215
216
  }
216
217
 
217
218
  // src/adapter.ts
218
- var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => (0, import_adapters.createAdapter)({
219
+ var adapter = (orm) => ({ options }) => {
220
+ const {
221
+ getEntityMetadata,
222
+ getFieldPath,
223
+ normalizeInput,
224
+ normalizeOutput,
225
+ normalizeWhereClauses
226
+ } = createAdapterUtils(orm);
227
+ return {
228
+ async create({ model, data, select }) {
229
+ const metadata = getEntityMetadata(model);
230
+ const input = normalizeInput(metadata, data);
231
+ if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
232
+ Reflect.deleteProperty(input, "id");
233
+ }
234
+ const entity = orm.em.create(metadata.class, input);
235
+ try {
236
+ await orm.em.persistAndFlush(entity);
237
+ } catch (error) {
238
+ await orm.em.removeAndFlush(entity);
239
+ throw error;
240
+ }
241
+ return normalizeOutput(metadata, entity, select);
242
+ },
243
+ async count({ model, where }) {
244
+ const metadata = getEntityMetadata(model);
245
+ return orm.em.count(
246
+ metadata.class,
247
+ normalizeWhereClauses(metadata, where)
248
+ );
249
+ },
250
+ async findOne({ model, where, select }) {
251
+ const metadata = getEntityMetadata(model);
252
+ const entity = await orm.em.findOne(
253
+ metadata.class,
254
+ normalizeWhereClauses(metadata, where)
255
+ );
256
+ if (!entity) {
257
+ return null;
258
+ }
259
+ return normalizeOutput(metadata, entity, select);
260
+ },
261
+ async findMany({ model, where, limit, offset, sortBy }) {
262
+ const metadata = getEntityMetadata(model);
263
+ const options2 = {
264
+ limit,
265
+ offset
266
+ };
267
+ if (sortBy) {
268
+ const path = getFieldPath(metadata, sortBy.field);
269
+ (0, import_dset2.dset)(options2, ["orderBy", ...path], sortBy.direction);
270
+ }
271
+ const rows = await orm.em.find(
272
+ metadata.class,
273
+ normalizeWhereClauses(metadata, where),
274
+ options2
275
+ );
276
+ return rows.map((row) => normalizeOutput(metadata, row));
277
+ },
278
+ async update({ model, where, update }) {
279
+ const metadata = getEntityMetadata(model);
280
+ const entity = await orm.em.findOne(
281
+ metadata.class,
282
+ normalizeWhereClauses(metadata, where)
283
+ );
284
+ if (!entity) {
285
+ return null;
286
+ }
287
+ orm.em.assign(entity, normalizeInput(metadata, update));
288
+ try {
289
+ await orm.em.flush();
290
+ } catch (error) {
291
+ await orm.em.removeAndFlush(entity);
292
+ throw error;
293
+ }
294
+ return normalizeOutput(metadata, entity);
295
+ },
296
+ async updateMany({ model, where, update }) {
297
+ const metadata = getEntityMetadata(model);
298
+ return orm.em.nativeUpdate(
299
+ metadata.class,
300
+ normalizeWhereClauses(metadata, where),
301
+ normalizeInput(metadata, update)
302
+ );
303
+ },
304
+ async delete({ model, where }) {
305
+ const metadata = getEntityMetadata(model);
306
+ const entity = await orm.em.findOne(
307
+ metadata.class,
308
+ normalizeWhereClauses(metadata, where),
309
+ {
310
+ fields: ["id"]
311
+ }
312
+ );
313
+ if (entity) {
314
+ await orm.em.removeAndFlush(entity);
315
+ }
316
+ },
317
+ async deleteMany({ model, where }) {
318
+ const metadata = getEntityMetadata(model);
319
+ return orm.em.nativeDelete(
320
+ metadata.class,
321
+ normalizeWhereClauses(metadata, where)
322
+ );
323
+ }
324
+ };
325
+ };
326
+ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true, options } = {}) => (0, import_adapters.createAdapterFactory)({
327
+ adapter: adapter(orm),
219
328
  config: {
220
329
  debugLogs,
221
330
  supportsJSON,
222
331
  adapterId: "mikro-orm-adapter",
223
- adapterName: "Mikro ORM Adapter"
224
- },
225
- adapter({ options }) {
226
- const {
227
- getEntityMetadata,
228
- getFieldPath,
229
- normalizeInput,
230
- normalizeOutput,
231
- normalizeWhereClauses
232
- } = createAdapterUtils(orm);
233
- return {
234
- async create({ model, data, select }) {
235
- const metadata = getEntityMetadata(model);
236
- const input = normalizeInput(metadata, data);
237
- if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
238
- Reflect.deleteProperty(input, "id");
239
- }
240
- const entity = orm.em.create(metadata.class, input);
241
- try {
242
- await orm.em.persistAndFlush(entity);
243
- } catch (error) {
244
- await orm.em.removeAndFlush(entity);
245
- throw error;
246
- }
247
- return normalizeOutput(metadata, entity, select);
248
- },
249
- async count({ model, where }) {
250
- const metadata = getEntityMetadata(model);
251
- return orm.em.count(
252
- metadata.class,
253
- normalizeWhereClauses(metadata, where)
254
- );
255
- },
256
- async findOne({ model, where, select }) {
257
- const metadata = getEntityMetadata(model);
258
- const entity = await orm.em.findOne(
259
- metadata.class,
260
- normalizeWhereClauses(metadata, where)
261
- );
262
- if (!entity) {
263
- return null;
264
- }
265
- return normalizeOutput(metadata, entity, select);
266
- },
267
- async findMany({ model, where, limit, offset, sortBy }) {
268
- const metadata = getEntityMetadata(model);
269
- const options2 = {
270
- limit,
271
- offset
272
- };
273
- if (sortBy) {
274
- const path = getFieldPath(metadata, sortBy.field);
275
- (0, import_dset2.dset)(options2, ["orderBy", ...path], sortBy.direction);
276
- }
277
- const rows = await orm.em.find(
278
- metadata.class,
279
- normalizeWhereClauses(metadata, where),
280
- options2
281
- );
282
- return rows.map((row) => normalizeOutput(metadata, row));
283
- },
284
- async update({ model, where, update }) {
285
- const metadata = getEntityMetadata(model);
286
- const entity = await orm.em.findOne(
287
- metadata.class,
288
- normalizeWhereClauses(metadata, where)
289
- );
290
- if (!entity) {
291
- return null;
292
- }
293
- orm.em.assign(entity, normalizeInput(metadata, update));
294
- try {
295
- await orm.em.flush();
296
- } catch (error) {
297
- await orm.em.removeAndFlush(entity);
298
- throw error;
299
- }
300
- return normalizeOutput(metadata, entity);
301
- },
302
- async updateMany({ model, where, update }) {
303
- const metadata = getEntityMetadata(model);
304
- return orm.em.nativeUpdate(
305
- metadata.class,
306
- normalizeWhereClauses(metadata, where),
307
- normalizeInput(metadata, update)
332
+ adapterName: "Mikro ORM Adapter",
333
+ transaction: async (cb) => {
334
+ return orm.em.transactional(async () => {
335
+ return cb(
336
+ (0, import_adapters.createAdapterFactory)({
337
+ adapter: adapter(orm),
338
+ config: {
339
+ debugLogs,
340
+ supportsJSON,
341
+ adapterId: "mikro-orm-adapter-transaction",
342
+ adapterName: "Mikro ORM Adapter Transaction"
343
+ }
344
+ })(options ?? {})
308
345
  );
309
- },
310
- async delete({ model, where }) {
311
- const metadata = getEntityMetadata(model);
312
- const entity = await orm.em.findOne(
313
- metadata.class,
314
- normalizeWhereClauses(metadata, where),
315
- {
316
- fields: ["id"]
317
- }
318
- );
319
- if (entity) {
320
- await orm.em.removeAndFlush(entity);
321
- }
322
- },
323
- async deleteMany({ model, where }) {
324
- const metadata = getEntityMetadata(model);
325
- return orm.em.nativeDelete(
326
- metadata.class,
327
- normalizeWhereClauses(metadata, where)
328
- );
329
- }
330
- };
346
+ });
347
+ }
331
348
  }
332
349
  });
333
350
  // Annotate the CommonJS export names for ESM import in node:
package/lib/adapter.d.cts CHANGED
@@ -1,6 +1,7 @@
1
- import * as _forklaunch_better_auth from '@forklaunch/better-auth';
1
+ import * as better_auth_adapters from 'better-auth/adapters';
2
+ import { AdapterDebugLogs } from 'better-auth/adapters';
2
3
  import { MikroORM } from '@mikro-orm/core';
3
- import { AdapterDebugLogs } from '@forklaunch/better-auth/adapters';
4
+ import { BetterAuthOptions } from 'better-auth/types';
4
5
 
5
6
  interface MikroOrmAdapterConfig {
6
7
  /**
@@ -20,6 +21,10 @@ interface MikroOrmAdapterConfig {
20
21
  * @default true
21
22
  */
22
23
  supportsJSON?: boolean;
24
+ /**
25
+ * Options for the Better Auth adapter.
26
+ */
27
+ options?: BetterAuthOptions;
23
28
  }
24
29
  /**
25
30
  * Creates Mikro ORM adapter for Better Auth.
@@ -32,6 +37,6 @@ interface MikroOrmAdapterConfig {
32
37
  * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `MikroORM.initSync` methods
33
38
  * @param config - Additional configuration for Mikro ORM adapter
34
39
  */
35
- declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON }?: MikroOrmAdapterConfig) => (options: _forklaunch_better_auth.BetterAuthOptions) => _forklaunch_better_auth.Adapter;
40
+ declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory;
36
41
 
37
42
  export { type MikroOrmAdapterConfig, mikroOrmAdapter };
package/lib/adapter.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import * as _forklaunch_better_auth from '@forklaunch/better-auth';
1
+ import * as better_auth_adapters from 'better-auth/adapters';
2
+ import { AdapterDebugLogs } from 'better-auth/adapters';
2
3
  import { MikroORM } from '@mikro-orm/core';
3
- import { AdapterDebugLogs } from '@forklaunch/better-auth/adapters';
4
+ import { BetterAuthOptions } from 'better-auth/types';
4
5
 
5
6
  interface MikroOrmAdapterConfig {
6
7
  /**
@@ -20,6 +21,10 @@ interface MikroOrmAdapterConfig {
20
21
  * @default true
21
22
  */
22
23
  supportsJSON?: boolean;
24
+ /**
25
+ * Options for the Better Auth adapter.
26
+ */
27
+ options?: BetterAuthOptions;
23
28
  }
24
29
  /**
25
30
  * Creates Mikro ORM adapter for Better Auth.
@@ -32,6 +37,6 @@ interface MikroOrmAdapterConfig {
32
37
  * @param orm - Instance of Mikro ORM returned from `MikroORM.init` or `MikroORM.initSync` methods
33
38
  * @param config - Additional configuration for Mikro ORM adapter
34
39
  */
35
- declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON }?: MikroOrmAdapterConfig) => (options: _forklaunch_better_auth.BetterAuthOptions) => _forklaunch_better_auth.Adapter;
40
+ declare const mikroOrmAdapter: (orm: MikroORM, { debugLogs, supportsJSON, options }?: MikroOrmAdapterConfig) => better_auth_adapters.AdapterFactory;
36
41
 
37
42
  export { type MikroOrmAdapterConfig, mikroOrmAdapter };
package/lib/adapter.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // src/adapter.ts
2
+ import "@mikro-orm/core";
2
3
  import {
3
- createAdapter
4
- } from "@forklaunch/better-auth/adapters";
4
+ createAdapterFactory
5
+ } from "better-auth/adapters";
5
6
  import { dset as dset2 } from "dset";
6
7
 
7
8
  // src/utils/adapterUtils.ts
@@ -9,7 +10,7 @@ import { ReferenceKind, serialize } from "@mikro-orm/core";
9
10
  import { dset } from "dset";
10
11
 
11
12
  // src/utils/createAdapterError.ts
12
- import { BetterAuthError } from "@forklaunch/better-auth";
13
+ import { BetterAuthError } from "better-auth";
13
14
  function createAdapterError(message) {
14
15
  throw new BetterAuthError(`[Mikro ORM Adapter] ${message}`);
15
16
  }
@@ -100,10 +101,12 @@ function createAdapterUtils(orm) {
100
101
  const fields = {};
101
102
  Object.entries(input).forEach(([key, value]) => {
102
103
  if (typeof value === "object" && value.$in) {
103
- dset(fields, key, value.$in);
104
+ const property = getPropertyMetadata(metadata2, key);
105
+ dset(fields, [property.name], value.$in);
104
106
  } else {
105
- const path = getFieldPath(metadata2, key);
106
- dset(fields, path, value);
107
+ const property = getPropertyMetadata(metadata2, key);
108
+ const normalizedValue = normalizePropertyValue(property, value);
109
+ dset(fields, [property.name], normalizedValue);
107
110
  }
108
111
  });
109
112
  return fields;
@@ -145,6 +148,8 @@ function createAdapterUtils(orm) {
145
148
  switch (w.operator) {
146
149
  case "in":
147
150
  return createWhereInClause(w.field, path, w.value);
151
+ case "not_in":
152
+ return createWhereClause(path, w.value, "$nin");
148
153
  case "contains":
149
154
  return createWhereClause(path, `%${w.value}%`, "$like");
150
155
  case "starts_with":
@@ -164,18 +169,14 @@ function createAdapterUtils(orm) {
164
169
  }
165
170
  const result = {};
166
171
  where.filter(({ connector }) => !connector || connector === "AND").forEach(({ field, operator, value }, index) => {
167
- const path = ["$and", index].concat(
168
- getFieldPath(metadata2, field, true)
169
- );
172
+ const path = ["$and", index].concat(getFieldPath(metadata2, field, true));
170
173
  if (operator === "in") {
171
174
  return createWhereInClause(field, path, value, result);
172
175
  }
173
176
  return createWhereClause(path, value, "eq", result);
174
177
  });
175
178
  where.filter(({ connector }) => connector === "OR").forEach(({ field, value }, index) => {
176
- const path = ["$and", index].concat(
177
- getFieldPath(metadata2, field, true)
178
- );
179
+ const path = ["$or", index].concat(getFieldPath(metadata2, field, true));
179
180
  return createWhereClause(path, value, "eq", result);
180
181
  });
181
182
  return result;
@@ -191,119 +192,135 @@ function createAdapterUtils(orm) {
191
192
  }
192
193
 
193
194
  // src/adapter.ts
194
- var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => createAdapter({
195
+ var adapter = (orm) => ({ options }) => {
196
+ const {
197
+ getEntityMetadata,
198
+ getFieldPath,
199
+ normalizeInput,
200
+ normalizeOutput,
201
+ normalizeWhereClauses
202
+ } = createAdapterUtils(orm);
203
+ return {
204
+ async create({ model, data, select }) {
205
+ const metadata = getEntityMetadata(model);
206
+ const input = normalizeInput(metadata, data);
207
+ if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
208
+ Reflect.deleteProperty(input, "id");
209
+ }
210
+ const entity = orm.em.create(metadata.class, input);
211
+ try {
212
+ await orm.em.persistAndFlush(entity);
213
+ } catch (error) {
214
+ await orm.em.removeAndFlush(entity);
215
+ throw error;
216
+ }
217
+ return normalizeOutput(metadata, entity, select);
218
+ },
219
+ async count({ model, where }) {
220
+ const metadata = getEntityMetadata(model);
221
+ return orm.em.count(
222
+ metadata.class,
223
+ normalizeWhereClauses(metadata, where)
224
+ );
225
+ },
226
+ async findOne({ model, where, select }) {
227
+ const metadata = getEntityMetadata(model);
228
+ const entity = await orm.em.findOne(
229
+ metadata.class,
230
+ normalizeWhereClauses(metadata, where)
231
+ );
232
+ if (!entity) {
233
+ return null;
234
+ }
235
+ return normalizeOutput(metadata, entity, select);
236
+ },
237
+ async findMany({ model, where, limit, offset, sortBy }) {
238
+ const metadata = getEntityMetadata(model);
239
+ const options2 = {
240
+ limit,
241
+ offset
242
+ };
243
+ if (sortBy) {
244
+ const path = getFieldPath(metadata, sortBy.field);
245
+ dset2(options2, ["orderBy", ...path], sortBy.direction);
246
+ }
247
+ const rows = await orm.em.find(
248
+ metadata.class,
249
+ normalizeWhereClauses(metadata, where),
250
+ options2
251
+ );
252
+ return rows.map((row) => normalizeOutput(metadata, row));
253
+ },
254
+ async update({ model, where, update }) {
255
+ const metadata = getEntityMetadata(model);
256
+ const entity = await orm.em.findOne(
257
+ metadata.class,
258
+ normalizeWhereClauses(metadata, where)
259
+ );
260
+ if (!entity) {
261
+ return null;
262
+ }
263
+ orm.em.assign(entity, normalizeInput(metadata, update));
264
+ try {
265
+ await orm.em.flush();
266
+ } catch (error) {
267
+ await orm.em.removeAndFlush(entity);
268
+ throw error;
269
+ }
270
+ return normalizeOutput(metadata, entity);
271
+ },
272
+ async updateMany({ model, where, update }) {
273
+ const metadata = getEntityMetadata(model);
274
+ return orm.em.nativeUpdate(
275
+ metadata.class,
276
+ normalizeWhereClauses(metadata, where),
277
+ normalizeInput(metadata, update)
278
+ );
279
+ },
280
+ async delete({ model, where }) {
281
+ const metadata = getEntityMetadata(model);
282
+ const entity = await orm.em.findOne(
283
+ metadata.class,
284
+ normalizeWhereClauses(metadata, where),
285
+ {
286
+ fields: ["id"]
287
+ }
288
+ );
289
+ if (entity) {
290
+ await orm.em.removeAndFlush(entity);
291
+ }
292
+ },
293
+ async deleteMany({ model, where }) {
294
+ const metadata = getEntityMetadata(model);
295
+ return orm.em.nativeDelete(
296
+ metadata.class,
297
+ normalizeWhereClauses(metadata, where)
298
+ );
299
+ }
300
+ };
301
+ };
302
+ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true, options } = {}) => createAdapterFactory({
303
+ adapter: adapter(orm),
195
304
  config: {
196
305
  debugLogs,
197
306
  supportsJSON,
198
307
  adapterId: "mikro-orm-adapter",
199
- adapterName: "Mikro ORM Adapter"
200
- },
201
- adapter({ options }) {
202
- const {
203
- getEntityMetadata,
204
- getFieldPath,
205
- normalizeInput,
206
- normalizeOutput,
207
- normalizeWhereClauses
208
- } = createAdapterUtils(orm);
209
- return {
210
- async create({ model, data, select }) {
211
- const metadata = getEntityMetadata(model);
212
- const input = normalizeInput(metadata, data);
213
- if (options.advanced?.generateId === false && !options.advanced?.database || options.advanced?.database?.generateId === false) {
214
- Reflect.deleteProperty(input, "id");
215
- }
216
- const entity = orm.em.create(metadata.class, input);
217
- try {
218
- await orm.em.persistAndFlush(entity);
219
- } catch (error) {
220
- await orm.em.removeAndFlush(entity);
221
- throw error;
222
- }
223
- return normalizeOutput(metadata, entity, select);
224
- },
225
- async count({ model, where }) {
226
- const metadata = getEntityMetadata(model);
227
- return orm.em.count(
228
- metadata.class,
229
- normalizeWhereClauses(metadata, where)
230
- );
231
- },
232
- async findOne({ model, where, select }) {
233
- const metadata = getEntityMetadata(model);
234
- const entity = await orm.em.findOne(
235
- metadata.class,
236
- normalizeWhereClauses(metadata, where)
237
- );
238
- if (!entity) {
239
- return null;
240
- }
241
- return normalizeOutput(metadata, entity, select);
242
- },
243
- async findMany({ model, where, limit, offset, sortBy }) {
244
- const metadata = getEntityMetadata(model);
245
- const options2 = {
246
- limit,
247
- offset
248
- };
249
- if (sortBy) {
250
- const path = getFieldPath(metadata, sortBy.field);
251
- dset2(options2, ["orderBy", ...path], sortBy.direction);
252
- }
253
- const rows = await orm.em.find(
254
- metadata.class,
255
- normalizeWhereClauses(metadata, where),
256
- options2
257
- );
258
- return rows.map((row) => normalizeOutput(metadata, row));
259
- },
260
- async update({ model, where, update }) {
261
- const metadata = getEntityMetadata(model);
262
- const entity = await orm.em.findOne(
263
- metadata.class,
264
- normalizeWhereClauses(metadata, where)
265
- );
266
- if (!entity) {
267
- return null;
268
- }
269
- orm.em.assign(entity, normalizeInput(metadata, update));
270
- try {
271
- await orm.em.flush();
272
- } catch (error) {
273
- await orm.em.removeAndFlush(entity);
274
- throw error;
275
- }
276
- return normalizeOutput(metadata, entity);
277
- },
278
- async updateMany({ model, where, update }) {
279
- const metadata = getEntityMetadata(model);
280
- return orm.em.nativeUpdate(
281
- metadata.class,
282
- normalizeWhereClauses(metadata, where),
283
- normalizeInput(metadata, update)
308
+ adapterName: "Mikro ORM Adapter",
309
+ transaction: async (cb) => {
310
+ return orm.em.transactional(async () => {
311
+ return cb(
312
+ createAdapterFactory({
313
+ adapter: adapter(orm),
314
+ config: {
315
+ debugLogs,
316
+ supportsJSON,
317
+ adapterId: "mikro-orm-adapter-transaction",
318
+ adapterName: "Mikro ORM Adapter Transaction"
319
+ }
320
+ })(options ?? {})
284
321
  );
285
- },
286
- async delete({ model, where }) {
287
- const metadata = getEntityMetadata(model);
288
- const entity = await orm.em.findOne(
289
- metadata.class,
290
- normalizeWhereClauses(metadata, where),
291
- {
292
- fields: ["id"]
293
- }
294
- );
295
- if (entity) {
296
- await orm.em.removeAndFlush(entity);
297
- }
298
- },
299
- async deleteMany({ model, where }) {
300
- const metadata = getEntityMetadata(model);
301
- return orm.em.nativeDelete(
302
- metadata.class,
303
- normalizeWhereClauses(metadata, where)
304
- );
305
- }
306
- };
322
+ });
323
+ }
307
324
  }
308
325
  });
309
326
  export {
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.105",
5
+ "version": "0.4.106",
6
6
  "description": "Mikro ORM Adapter for Better Auth",
7
7
  "keywords": [
8
8
  "auth",
@@ -59,7 +59,7 @@
59
59
  "@types/uuid": "10.0.0",
60
60
  "@vitest/coverage-v8": "3.1.1",
61
61
  "@vitest/ui": "3.1.1",
62
- "@forklaunch/better-auth": "1.3.8",
62
+ "better-auth": "1.3.11",
63
63
  "del-cli": "6.0.0",
64
64
  "es-toolkit": "1.39.7",
65
65
  "husky": "9.1.7",
package/readme.md CHANGED
@@ -32,8 +32,8 @@ pnpm add better-auth-mikro-orm
32
32
  2. When you're finished with the schema definitions, you can simply pass the result of the `mikroOrmAdapter` call to the `database` option like this:
33
33
 
34
34
  ```ts
35
- import { mikroOrmAdapter } from "@forklaunch/better-auth-mikro-orm";
36
- import { betterAuth } from "@forklaunch/better-auth";
35
+ import { mikroOrmAdapter } from "better-auth-mikro-orm";
36
+ import { betterAuth } from "better-auth";
37
37
 
38
38
  import { orm } from "./orm.js"; // Your Mikro ORM instance
39
39