@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 +21 -16
- package/lib/adapter.d.cts +7 -4
- package/lib/adapter.d.ts +7 -4
- package/lib/adapter.js +21 -16
- package/package.json +25 -24
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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 }) =>
|
|
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
|
-
|
|
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
|
-
|
|
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?.
|
|
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.
|
|
241
|
+
await orm.em.persist(entity).flush();
|
|
237
242
|
} catch (error) {
|
|
238
|
-
await orm.em.
|
|
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.
|
|
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.
|
|
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?:
|
|
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
|
|
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?:
|
|
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
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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 }) =>
|
|
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
|
-
|
|
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
|
-
|
|
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?.
|
|
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.
|
|
217
|
+
await orm.em.persist(entity).flush();
|
|
213
218
|
} catch (error) {
|
|
214
|
-
await orm.em.
|
|
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.
|
|
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.
|
|
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.
|
|
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": ">=
|
|
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
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@changesets/
|
|
52
|
-
"@
|
|
53
|
-
"@commitlint/
|
|
54
|
-
"@commitlint/
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@mikro-orm/core": "
|
|
58
|
-
"@
|
|
59
|
-
"@types/
|
|
60
|
-
"@
|
|
61
|
-
"@vitest/
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
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": "
|
|
67
|
-
"tsup": "8.
|
|
68
|
-
"typescript": "5.
|
|
69
|
-
"uuid": "
|
|
70
|
-
"vitest": "
|
|
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": "^
|
|
77
|
+
"@mikro-orm/core": "^7.0.0",
|
|
77
78
|
"better-auth": "^1.0.0"
|
|
78
79
|
},
|
|
79
80
|
"scripts": {
|