@nest-boot/auth 7.9.3 → 7.9.4

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,5 +1,5 @@
1
1
  import { EntityClass, MikroORM } from "@mikro-orm/core";
2
- import { type DBAdapterDebugLogOption } from "better-auth/adapters";
2
+ import { type DBAdapterDebugLogOption, Where } from "better-auth/adapters";
3
3
  import { BaseAccount, BaseSession, BaseUser, BaseVerification } from "../entities";
4
4
  export interface MikroOrmAdapterConfig {
5
5
  /**
@@ -24,4 +24,5 @@ export interface MikroOrmAdapterConfig {
24
24
  */
25
25
  debugLogs?: DBAdapterDebugLogOption;
26
26
  }
27
+ export declare function convertWhereToMikroOrm(where: Required<Where>[]): Record<string, unknown>;
27
28
  export declare const mikroOrmAdapter: ({ orm, entities, ...config }: MikroOrmAdapterConfig) => import("better-auth/adapters").AdapterFactory;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mikroOrmAdapter = void 0;
4
+ exports.convertWhereToMikroOrm = convertWhereToMikroOrm;
4
5
  const adapters_1 = require("better-auth/adapters");
5
6
  function convertWhereToMikroOrm(where) {
6
- return where.map(({ field, operator, value }) => {
7
+ const conditions = where.map(({ field, operator, value }) => {
7
8
  switch (operator) {
8
9
  case "eq":
9
10
  return {
@@ -80,8 +81,23 @@ function convertWhereToMikroOrm(where) {
80
81
  $like: `%${value}`,
81
82
  },
82
83
  };
84
+ default:
85
+ throw new Error(`Unsupported operator: ${String(operator)}`);
83
86
  }
84
87
  });
88
+ const hasOr = where.some((w) => w.connector === "OR");
89
+ if (!hasOr) {
90
+ return { $and: conditions };
91
+ }
92
+ const groups = [[]];
93
+ for (let i = 0; i < conditions.length; i++) {
94
+ if (i > 0 && where[i].connector === "OR") {
95
+ groups.push([]);
96
+ }
97
+ groups[groups.length - 1].push(conditions[i]);
98
+ }
99
+ const orBranches = groups.map((group) => group.length === 1 ? group[0] : { $and: group });
100
+ return orBranches.length === 1 ? orBranches[0] : { $or: orBranches };
85
101
  }
86
102
  const mikroOrmAdapter = ({ orm, entities, ...config }) => {
87
103
  const getEntityClass = (model) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mikro-orm-adapter.js","sourceRoot":"","sources":["../../src/adapters/mikro-orm-adapter.ts"],"names":[],"mappings":";;;AACA,mDAI8B;AAiC9B,SAAS,sBAAsB,CAAC,KAAwB;IACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,IAAI;gBACP,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC;YACJ,KAAK,IAAI;gBACP,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC;YACJ,KAAK,IAAI;gBACP,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC;YACJ,KAAK,KAAK;gBACR,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,IAAI,EAAE,KAAK;qBACZ;iBACF,CAAC;YACJ,KAAK,IAAI;gBACP,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC;YACJ,KAAK,KAAK;gBACR,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,IAAI,EAAE,KAAK;qBACZ;iBACF,CAAC;YACJ,KAAK,IAAI;gBACP,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,GAAG,EAAE,KAAK;qBACX;iBACF,CAAC;YACJ,KAAK,QAAQ;gBACX,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,IAAI,EAAE,KAAK;qBACZ;iBACF,CAAC;YACJ,KAAK,UAAU;gBACb,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBAED,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,KAAK,EAAE,IAAI,KAAK,GAAG;qBACpB;iBACF,CAAC;YACJ,KAAK,aAAa;gBAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBAED,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,KAAK,EAAE,GAAG,KAAK,GAAG;qBACnB;iBACF,CAAC;YACJ,KAAK,WAAW;gBACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBAED,OAAO;oBACL,CAAC,KAAK,CAAC,EAAE;wBACP,KAAK,EAAE,IAAI,KAAK,EAAE;qBACnB;iBACF,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,EAC9B,GAAG,EACH,QAAQ,EACR,GAAG,MAAM,EACa,EAAE,EAAE;IAC1B,MAAM,cAAc,GAAG,CAAC,KAAa,EAA2B,EAAE;QAChE,OAAO,QAAQ,CAAC,KAA8B,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,OAAO,IAAA,+BAAoB,EAAC;QAC1B,MAAM,EAAE;YACN,SAAS,EAAE,mBAAmB,EAAE,uCAAuC;YACvE,WAAW,EAAE,kBAAkB,EAAE,2BAA2B;YAC5D,SAAS,EAAE,KAAK,EAAE,oDAAoD;YACtE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE,gCAAgC;YACtE,YAAY,EAAE,IAAI,EAAE,uDAAuD;YAC3E,aAAa,EAAE,IAAI,EAAE,uDAAuD;YAC5E,gBAAgB,EAAE,IAAI,EAAE,0DAA0D;YAClF,kBAAkB,EAAE,IAAI,EAAE,+EAA+E;YACzG,mBAAmB,EAAE,IAAI,EAAE,qDAAqD;YAChF,GAAG,MAAM;SACV;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO;gBACL,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;oBACrC,OAAO,MAAa,CAAC;gBACvB,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;oBACzC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACjC,cAAc,CAAC,KAAK,CAAC,EACrB,sBAAsB,CAAC,KAAK,CAAC,CAC9B,CAAC;oBAEF,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAa,CAAC,CAAC;oBAErC,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBAErB,OAAO,MAAa,CAAC;gBACvB,CAAC;gBACD,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC7C,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,CAC9B,cAAc,CAAC,KAAK,CAAC,EACrB,sBAAsB,CAAC,KAAK,CAAC,EAC7B,MAAM,CACP,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;oBACjC,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,CACvB,cAAc,CAAC,KAAK,CAAC,EACrB,sBAAsB,CAAC,KAAK,CAAC,CAC9B,CAAC;gBACJ,CAAC;gBACD,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;oBACrC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,CAC9B,cAAc,CAAC,KAAK,CAAC,EACrB,sBAAsB,CAAC,KAAK,CAAC,CAC9B,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;oBAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACjC,cAAc,CAAC,KAAK,CAAC,EACrB,sBAAsB,CAAC,KAAK,CAAC,CAC9B,CAAC;oBAEF,OAAO,MAAa,CAAC;gBACvB,CAAC;gBACD,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC1D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;wBACzD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1D,KAAK,EAAE,KAAK;wBACZ,MAAM,EAAE,MAAM,IAAI,CAAC;wBACnB,GAAG,CAAC,MAAM;4BACR,CAAC,CAAC;gCACE,OAAO,EAAE;oCACP,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS;iCACjC;6BACF;4BACH,CAAC,CAAC,EAAE,CAAC;qBACR,CAAC,CAAC;oBAEH,OAAO,MAAa,CAAC;gBACvB,CAAC;gBACD,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;oBAChC,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CACvB,cAAc,CAAC,KAAK,CAAC,EACrB,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAjGW,QAAA,eAAe,mBAiG1B"}
1
+ {"version":3,"file":"mikro-orm-adapter.js","sourceRoot":"","sources":["../../src/adapters/mikro-orm-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Unit tests for convertWhereToMikroOrm
3
+ *
4
+ * Locks down AND/OR connector semantics to prevent returning raw arrays
5
+ * that MikroORM interprets as OR (which caused an OIDC login identity
6
+ * collision bug in production).
7
+ */
8
+ export {};
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for convertWhereToMikroOrm
4
+ *
5
+ * Locks down AND/OR connector semantics to prevent returning raw arrays
6
+ * that MikroORM interprets as OR (which caused an OIDC login identity
7
+ * collision bug in production).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ // Mock better-auth/adapters to avoid ESM compatibility issues (types only)
11
+ jest.mock("better-auth/adapters", () => ({}));
12
+ // Import the function under test
13
+ const mikro_orm_adapter_1 = require("./mikro-orm-adapter");
14
+ /** Helper to construct a Where condition */
15
+ function makeWhere(field, operator, value, connector = "AND") {
16
+ return { field, operator, value, connector };
17
+ }
18
+ describe("convertWhereToMikroOrm", () => {
19
+ describe("AND connector", () => {
20
+ it("should merge multiple AND conditions into a $and object (OIDC login reproduction)", () => {
21
+ const where = [
22
+ makeWhere("accountId", "eq", "w9mj34kow1sc", "AND"),
23
+ makeWhere("providerId", "eq", "oidc", "AND"),
24
+ ];
25
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
26
+ // Must be a $and object, not an array (arrays are interpreted as $or by MikroORM)
27
+ expect(result).toEqual({
28
+ $and: [
29
+ { accountId: { $eq: "w9mj34kow1sc" } },
30
+ { providerId: { $eq: "oidc" } },
31
+ ],
32
+ });
33
+ expect(Array.isArray(result)).toBe(false);
34
+ });
35
+ it("should default to AND when connector is omitted", () => {
36
+ const where = [
37
+ { field: "name", operator: "eq", value: "test" },
38
+ { field: "age", operator: "gt", value: 18 },
39
+ ];
40
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
41
+ expect(result).toEqual({
42
+ $and: [{ name: { $eq: "test" } }, { age: { $gt: 18 } }],
43
+ });
44
+ });
45
+ it("should handle duplicate fields correctly (range query, no key override)", () => {
46
+ const where = [
47
+ makeWhere("createdAt", "gte", "2024-01-01"),
48
+ makeWhere("createdAt", "lt", "2025-01-01"),
49
+ ];
50
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
51
+ expect(result).toEqual({
52
+ $and: [
53
+ { createdAt: { $gte: "2024-01-01" } },
54
+ { createdAt: { $lt: "2025-01-01" } },
55
+ ],
56
+ });
57
+ });
58
+ });
59
+ describe("OR connector", () => {
60
+ it("should wrap all OR conditions in a $or object", () => {
61
+ const where = [
62
+ makeWhere("email", "eq", "a@test.com", "OR"),
63
+ makeWhere("email", "eq", "b@test.com", "OR"),
64
+ ];
65
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
66
+ expect(result).toEqual({
67
+ $or: [
68
+ { email: { $eq: "a@test.com" } },
69
+ { email: { $eq: "b@test.com" } },
70
+ ],
71
+ });
72
+ });
73
+ });
74
+ describe("mixed AND/OR", () => {
75
+ it("A AND B OR C → (A AND B) OR C", () => {
76
+ const where = [
77
+ makeWhere("accountId", "eq", "xxx", "AND"),
78
+ makeWhere("providerId", "eq", "oidc", "AND"),
79
+ makeWhere("status", "eq", "active", "OR"),
80
+ ];
81
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
82
+ expect(result).toEqual({
83
+ $or: [
84
+ {
85
+ $and: [
86
+ { accountId: { $eq: "xxx" } },
87
+ { providerId: { $eq: "oidc" } },
88
+ ],
89
+ },
90
+ { status: { $eq: "active" } },
91
+ ],
92
+ });
93
+ });
94
+ it("A AND B OR C AND D → (A AND B) OR (C AND D)", () => {
95
+ const where = [
96
+ makeWhere("a", "eq", "1", "AND"),
97
+ makeWhere("b", "eq", "2", "AND"),
98
+ makeWhere("c", "eq", "3", "OR"),
99
+ makeWhere("d", "eq", "4", "AND"),
100
+ ];
101
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
102
+ expect(result).toEqual({
103
+ $or: [
104
+ { $and: [{ a: { $eq: "1" } }, { b: { $eq: "2" } }] },
105
+ { $and: [{ c: { $eq: "3" } }, { d: { $eq: "4" } }] },
106
+ ],
107
+ });
108
+ });
109
+ it("should flatten when only one branch exists", () => {
110
+ const where = [makeWhere("a", "eq", "1", "OR")];
111
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
112
+ expect(result).toEqual({ a: { $eq: "1" } });
113
+ });
114
+ });
115
+ describe("operator mapping", () => {
116
+ const testOperator = (operator, mikroOp, value = "test") => {
117
+ const where = [makeWhere("f", operator, value)];
118
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)(where);
119
+ expect(result).toEqual({ $and: [{ f: { [mikroOp]: value } }] });
120
+ };
121
+ it("eq → $eq", () => testOperator("eq", "$eq"));
122
+ it("ne → $ne", () => testOperator("ne", "$ne"));
123
+ it("lt → $lt", () => testOperator("lt", "$lt", 10));
124
+ it("lte → $lte", () => testOperator("lte", "$lte", 10));
125
+ it("gt → $gt", () => testOperator("gt", "$gt", 10));
126
+ it("gte → $gte", () => testOperator("gte", "$gte", 10));
127
+ it("in → $in", () => testOperator("in", "$in", [1, 2]));
128
+ it("not_in → $nin", () => testOperator("not_in", "$nin", [1, 2]));
129
+ it("contains → $like %value%", () => {
130
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([
131
+ makeWhere("name", "contains", "test"),
132
+ ]);
133
+ expect(result).toEqual({ $and: [{ name: { $like: "%test%" } }] });
134
+ });
135
+ it("starts_with → $like value%", () => {
136
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([
137
+ makeWhere("name", "starts_with", "test"),
138
+ ]);
139
+ expect(result).toEqual({ $and: [{ name: { $like: "test%" } }] });
140
+ });
141
+ it("ends_with → $like %value", () => {
142
+ const result = (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([
143
+ makeWhere("name", "ends_with", "test"),
144
+ ]);
145
+ expect(result).toEqual({ $and: [{ name: { $like: "%test" } }] });
146
+ });
147
+ });
148
+ describe("string type validation", () => {
149
+ it("should throw when contains receives a non-string value", () => {
150
+ expect(() => (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([makeWhere("f", "contains", 123)])).toThrow("Value must be a string");
151
+ });
152
+ it("should throw when starts_with receives a non-string value", () => {
153
+ expect(() => (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([makeWhere("f", "starts_with", 123)])).toThrow("Value must be a string");
154
+ });
155
+ it("should throw when ends_with receives a non-string value", () => {
156
+ expect(() => (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([makeWhere("f", "ends_with", 123)])).toThrow("Value must be a string");
157
+ });
158
+ });
159
+ describe("unsupported operator", () => {
160
+ it("should throw on unknown operator", () => {
161
+ expect(() => (0, mikro_orm_adapter_1.convertWhereToMikroOrm)([makeWhere("f", "unknown_op", "x")])).toThrow("Unsupported operator: unknown_op");
162
+ });
163
+ });
164
+ });
165
+ //# sourceMappingURL=mikro-orm-adapter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mikro-orm-adapter.spec.js","sourceRoot":"","sources":["../../src/adapters/mikro-orm-adapter.spec.ts"],"names":[],"mappings":"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"}