@forklaunch/better-auth-mikro-orm-fork 0.4.102 → 0.4.104

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
@@ -33,7 +33,7 @@ var import_core = require("@mikro-orm/core");
33
33
  var import_dset = require("dset");
34
34
 
35
35
  // src/utils/createAdapterError.ts
36
- var import_better_auth = require("better-auth");
36
+ var import_better_auth = require("@forklaunch/better-auth");
37
37
  function createAdapterError(message) {
38
38
  throw new import_better_auth.BetterAuthError(`[Mikro ORM Adapter] ${message}`);
39
39
  }
@@ -114,6 +114,12 @@ function createAdapterUtils(orm) {
114
114
  `Cannot normalize "${fieldName}" field name into path for "${metadata2.className}" entity.`
115
115
  );
116
116
  };
117
+ const normalizePropertyValue = (property, value) => {
118
+ if (!property.targetMeta || property.kind === import_core.ReferenceKind.SCALAR || property.kind === import_core.ReferenceKind.EMBEDDED) {
119
+ return value;
120
+ }
121
+ return orm.em.getReference(property.targetMeta.class, value);
122
+ };
117
123
  const normalizeInput = (metadata2, input) => {
118
124
  const fields = {};
119
125
  Object.entries(input).forEach(([key, value]) => {
@@ -126,7 +132,7 @@ function createAdapterUtils(orm) {
126
132
  });
127
133
  return fields;
128
134
  };
129
- const normalizeOutput = (metadata2, output, select) => {
135
+ const normalizeOutput = (metadata2, output) => {
130
136
  output = (0, import_core.serialize)(output);
131
137
  const result = {};
132
138
  Object.entries(output).map(([key, value]) => ({
@@ -135,7 +141,7 @@ function createAdapterUtils(orm) {
135
141
  getPropertyMetadata(metadata2, key)
136
142
  ),
137
143
  value
138
- })).filter(({ path }) => select ? select.includes(path) : true).forEach(({ path, value }) => (0, import_dset.dset)(result, path, value));
144
+ })).forEach(({ path, value }) => (0, import_dset.dset)(result, path, value));
139
145
  return result;
140
146
  };
141
147
  function createWhereClause(path, value, op, target = {}) {
@@ -291,13 +297,11 @@ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => (0, impo
291
297
  },
292
298
  async updateMany({ model, where, update }) {
293
299
  const metadata = getEntityMetadata(model);
294
- const affected = await orm.em.nativeUpdate(
300
+ return orm.em.nativeUpdate(
295
301
  metadata.class,
296
302
  normalizeWhereClauses(metadata, where),
297
303
  normalizeInput(metadata, update)
298
304
  );
299
- orm.em.clear();
300
- return affected;
301
305
  },
302
306
  async delete({ model, where }) {
303
307
  const metadata = getEntityMetadata(model);
@@ -314,15 +318,10 @@ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => (0, impo
314
318
  },
315
319
  async deleteMany({ model, where }) {
316
320
  const metadata = getEntityMetadata(model);
317
- const [rows, count] = await orm.em.findAndCount(
321
+ return orm.em.nativeDelete(
318
322
  metadata.class,
319
- normalizeWhereClauses(metadata, where),
320
- {
321
- fields: ["id"]
322
- }
323
+ normalizeWhereClauses(metadata, where)
323
324
  );
324
- await orm.em.removeAndFlush(rows);
325
- return count;
326
325
  }
327
326
  };
328
327
  }
package/lib/adapter.js CHANGED
@@ -7,7 +7,7 @@ import { ReferenceKind, serialize } from "@mikro-orm/core";
7
7
  import { dset } from "dset";
8
8
 
9
9
  // src/utils/createAdapterError.ts
10
- import { BetterAuthError } from "better-auth";
10
+ import { BetterAuthError } from "@forklaunch/better-auth";
11
11
  function createAdapterError(message) {
12
12
  throw new BetterAuthError(`[Mikro ORM Adapter] ${message}`);
13
13
  }
@@ -88,6 +88,12 @@ function createAdapterUtils(orm) {
88
88
  `Cannot normalize "${fieldName}" field name into path for "${metadata2.className}" entity.`
89
89
  );
90
90
  };
91
+ const normalizePropertyValue = (property, value) => {
92
+ if (!property.targetMeta || property.kind === ReferenceKind.SCALAR || property.kind === ReferenceKind.EMBEDDED) {
93
+ return value;
94
+ }
95
+ return orm.em.getReference(property.targetMeta.class, value);
96
+ };
91
97
  const normalizeInput = (metadata2, input) => {
92
98
  const fields = {};
93
99
  Object.entries(input).forEach(([key, value]) => {
@@ -100,7 +106,7 @@ function createAdapterUtils(orm) {
100
106
  });
101
107
  return fields;
102
108
  };
103
- const normalizeOutput = (metadata2, output, select) => {
109
+ const normalizeOutput = (metadata2, output) => {
104
110
  output = serialize(output);
105
111
  const result = {};
106
112
  Object.entries(output).map(([key, value]) => ({
@@ -109,7 +115,7 @@ function createAdapterUtils(orm) {
109
115
  getPropertyMetadata(metadata2, key)
110
116
  ),
111
117
  value
112
- })).filter(({ path }) => select ? select.includes(path) : true).forEach(({ path, value }) => dset(result, path, value));
118
+ })).forEach(({ path, value }) => dset(result, path, value));
113
119
  return result;
114
120
  };
115
121
  function createWhereClause(path, value, op, target = {}) {
@@ -265,13 +271,11 @@ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => createAd
265
271
  },
266
272
  async updateMany({ model, where, update }) {
267
273
  const metadata = getEntityMetadata(model);
268
- const affected = await orm.em.nativeUpdate(
274
+ return orm.em.nativeUpdate(
269
275
  metadata.class,
270
276
  normalizeWhereClauses(metadata, where),
271
277
  normalizeInput(metadata, update)
272
278
  );
273
- orm.em.clear();
274
- return affected;
275
279
  },
276
280
  async delete({ model, where }) {
277
281
  const metadata = getEntityMetadata(model);
@@ -288,15 +292,10 @@ var mikroOrmAdapter = (orm, { debugLogs, supportsJSON = true } = {}) => createAd
288
292
  },
289
293
  async deleteMany({ model, where }) {
290
294
  const metadata = getEntityMetadata(model);
291
- const [rows, count] = await orm.em.findAndCount(
295
+ return orm.em.nativeDelete(
292
296
  metadata.class,
293
- normalizeWhereClauses(metadata, where),
294
- {
295
- fields: ["id"]
296
- }
297
+ normalizeWhereClauses(metadata, where)
297
298
  );
298
- await orm.em.removeAndFlush(rows);
299
- return count;
300
299
  }
301
300
  };
302
301
  }
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.102",
5
+ "version": "0.4.104",
6
6
  "description": "Mikro ORM Adapter for Better Auth",
7
7
  "keywords": [
8
8
  "auth",
@@ -61,6 +61,7 @@
61
61
  "@vitest/ui": "3.1.1",
62
62
  "better-auth": "1.2.9",
63
63
  "del-cli": "6.0.0",
64
+ "es-toolkit": "1.39.7",
64
65
  "husky": "9.1.7",
65
66
  "is-in-ci": "1.0.0",
66
67
  "tsup": "8.4.0",
package/readme.md CHANGED
@@ -1,53 +1,64 @@
1
1
  # better-auth-mikro-orm
2
2
 
3
- [Mikro ORM](https://mikro-orm.io/) adapter for [Better Auth](https://www.better-auth.com/)
3
+ [MikroORM](https://mikro-orm.io/) adapter for [Better Auth](https://www.better-auth.com/)
4
+
5
+ [![CI](https://github.com/octet-stream/better-auth-mikro-orm/actions/workflows/ci.yaml/badge.svg)](https://github.com/octet-stream/better-auth-mikro-orm/actions/workflows/ci.yaml)
6
+ [![codecov](https://codecov.io/gh/octet-stream/better-auth-mikro-orm/graph/badge.svg?token=xcVndkC8mL)](https://codecov.io/gh/octet-stream/better-auth-mikro-orm)
4
7
 
5
8
  ## Installation
6
9
 
7
- pnpm:
10
+ Using npm:
8
11
 
9
12
  ```sh
10
- pnpm add better-auth-mikro-orm
13
+ npm i better-auth-mikro-orm
11
14
  ```
12
15
 
13
- npm:
16
+ Using yarn:
14
17
 
15
18
  ```sh
16
- npm i better-auth-mikro-orm
19
+ yarn add better-auth-mikro-orm
20
+ ```
21
+
22
+ Using pnpm:
23
+
24
+ ```sh
25
+ pnpm add better-auth-mikro-orm
17
26
  ```
18
27
 
19
28
  ## Usage
20
29
 
21
- 1. First you'll need to set up Mikro ORM and define the [core schema](https://www.better-auth.com/docs/concepts/database#core-schema) for Better Auth.
22
- If you use any plugin - don't forget to check if they have any additional database schema definitions, then define entities you'll need for each plugin.
23
- 2. When you finished with the schema definition you can simply pass the result of `mikroOrmAdapter` call to the `database` option like this:
30
+ 1. First you'll need to set up MikroORM and define the [core schema](https://www.better-auth.com/docs/concepts/database#core-schema) for Better Auth.
31
+ If you use any plugin, don't forget to check if they have any additional database schema definitions, then define entities you'll need for each plugin.
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:
24
33
 
25
34
  ```ts
26
- import {mikroOrmAdapter} from "better-auth-mikro-orm"
27
- import {betterAuth} from "better-auth"
35
+ import { mikroOrmAdapter } from "@forklaunch/better-auth-mikro-orm";
36
+ import { betterAuth } from "@forklaunch/better-auth";
28
37
 
29
- import {orm} from "./orm.js" // Your Mikro ORM instance
38
+ import { orm } from "./orm.js"; // Your Mikro ORM instance
30
39
 
31
40
  export const auth = betterAuth({
32
41
  database: mikroOrmAdapter(orm),
33
42
 
34
- // Don't forget to disable ID generator if it already managed by Mikro ORM:
43
+ // Don't forget to disable the ID generator if it is already managed by MikroORM
35
44
  advanced: {
36
- generateId: false
37
- }
38
- })
45
+ database: {
46
+ generateId: false,
47
+ },
48
+ },
49
+ });
39
50
  ```
40
51
 
41
52
  ## API
42
53
 
43
54
  ### `mikroOrmAdapter(orm: MikroORM): AdapterInstance`
44
55
 
45
- Creates Mikro ORM adapter instance. Note that this adapter **does not** manage database schema for you, so you can't use it with [`@better-auth/cli`](https://www.better-auth.com/docs/concepts/cli).
46
- This means you'll have to manage database schema on your own.
47
- Please refer to Better Auth and Mikro ORM documentation on the details.
56
+ Creates the MikroORM adapter instance. Note that this adapter **does not** manage database schemas for you, so you can't use it with [`@better-auth/cli`](https://www.better-auth.com/docs/concepts/cli).
57
+ This means you'll have to manage database schemas on your own.
58
+ Please refer to the Better Auth and MikroORM documentations for details.
48
59
 
49
- Returns `AdapterInstance` function for Better Auth `database` option.
60
+ Returns the `AdapterInstance` function for the Better Auth `database` option.
50
61
 
51
62
  This function expects a single argument:
52
63
 
53
- * `orm` - An instance of `MikroORM` returned from `MikroORM.init` or `MikroORM.initSync` methods.
64
+ - `orm` - An instance of `MikroORM` returned from either `MikroORM.init` or `MikroORM.initSync`.