Skip to content

Commit e9ae0e5

Browse files
committed
fix: mikro-orm v6 typings
1 parent 07afc64 commit e9ae0e5

File tree

7 files changed

+69
-69
lines changed

7 files changed

+69
-69
lines changed

examples/graphql-server-mikro-orm-postgres/src/entities/email.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,19 @@ import {
77
import { Entity, Property } from '@mikro-orm/core';
88
import { User } from './user';
99

10-
const AccountsEmail: EmailCtor<User> = getEmailCtor<User>({ abstract: true });
11-
1210
export type EmailCtorArgs = AccountsEmailCtorArgs<User> & {
13-
fullName?: string;
11+
fullName: string;
1412
};
1513

14+
const AccountsEmail: EmailCtor<User> = getEmailCtor<User>({ abstract: true });
15+
1616
@Entity()
1717
export class Email extends AccountsEmail {
18-
@Property({ nullable: true })
19-
fullName?: string;
18+
@Property()
19+
fullName: string;
2020

2121
constructor({ fullName, ...otherProps }: EmailCtorArgs) {
2222
super(otherProps);
23-
if (fullName) {
24-
this.fullName = fullName;
25-
}
23+
this.fullName = fullName;
2624
}
2725
}

examples/graphql-server-mikro-orm-postgres/src/entities/user.ts

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
UserCtorArgs as AccountsUserCtorArgs,
44
Session,
55
Service,
6-
ServiceCtorArgs,
76
UserCtor,
87
getUserCtor,
98
} from '@accounts/mikro-orm';
@@ -12,21 +11,15 @@ import { Email, EmailCtorArgs } from './email';
1211

1312
type UserCtorArgs = AccountsUserCtorArgs & {
1413
firstName: string;
15-
lastName: string;
14+
lastName?: string;
1615
};
1716

18-
export const AccountsUser: UserCtor<
19-
Email,
20-
Session<User>,
21-
Service<User>,
22-
UserCtorArgs
23-
> = getUserCtor<
17+
export const AccountsUser: UserCtor<Email, Session<User>, Service<User>> = getUserCtor<
2418
Email,
2519
Session<User>,
2620
Service<User>,
2721
UserCtorArgs,
28-
EmailCtorArgs,
29-
ServiceCtorArgs<User>
22+
EmailCtorArgs
3023
>({
3124
abstract: true,
3225
EmailEntity: Email,
@@ -37,18 +30,15 @@ export const AccountsUser: UserCtor<
3730

3831
@Entity()
3932
export class User extends AccountsUser {
40-
@Property({ nullable: true })
41-
firstName?: string;
33+
@Property()
34+
firstName: string;
4235

4336
@Property({ nullable: true })
4437
lastName?: string;
4538

46-
constructor(args: UserCtorArgs) {
47-
super(args);
48-
const { firstName, lastName } = args;
49-
if (firstName) {
50-
this.firstName = firstName;
51-
}
39+
constructor({ firstName, lastName, ...otherProps }: UserCtorArgs) {
40+
super(otherProps);
41+
this.firstName = firstName;
5242
if (lastName) {
5343
this.lastName = lastName;
5444
}

packages/database-mikro-orm/src/entity/Email.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { Ref, Reference, EntitySchema } from '@mikro-orm/core';
1+
import { Reference, EntitySchema, ref } from '@mikro-orm/core';
22
import { IUser, UserCtor } from './User';
33

44
export class Email<CustomUser extends IUser<any, any, any>> {
55
id!: number;
66

7-
user!: Ref<CustomUser>;
7+
user!: Reference<CustomUser> & { id: number };
88

99
address: string;
1010

@@ -13,7 +13,7 @@ export class Email<CustomUser extends IUser<any, any, any>> {
1313
constructor({ address, user, verified }: EmailCtorArgs<CustomUser>) {
1414
this.address = address.toLocaleLowerCase();
1515
if (user) {
16-
this.user = Reference.create(user);
16+
this.user = ref(user);
1717
}
1818
if (verified) {
1919
this.verified = verified;
@@ -27,19 +27,23 @@ export interface EmailCtorArgs<CustomUser extends IUser<any, any, any>> {
2727
verified?: boolean;
2828
}
2929

30-
export type EmailCtor<CustomUser extends IUser<any, any, any>> = new (
31-
args: EmailCtorArgs<CustomUser>
32-
) => Email<CustomUser>;
30+
export type EmailCtor<
31+
CustomUser extends IUser<any, any, any>,
32+
CustomEmailCtorArgs extends EmailCtorArgs<CustomUser> = EmailCtorArgs<CustomUser>,
33+
> = new (args: CustomEmailCtorArgs) => Email<CustomUser>;
3334

34-
export const getEmailCtor = <CustomUser extends IUser<any, any, any>>({
35+
export const getEmailCtor = <
36+
CustomUser extends IUser<any, any, any>,
37+
CustomEmailCtorArgs extends EmailCtorArgs<CustomUser> = EmailCtorArgs<CustomUser>,
38+
>({
3539
abstract = false,
3640
}: {
3741
abstract?: boolean;
38-
} = {}): EmailCtor<CustomUser> => {
42+
} = {}): EmailCtor<CustomUser, CustomEmailCtorArgs> => {
3943
if (abstract) {
4044
Object.defineProperty(Email, 'name', { value: 'AccountsEmail' });
4145
}
42-
return Email as EmailCtor<CustomUser>;
46+
return Email as EmailCtor<CustomUser, CustomEmailCtorArgs>;
4347
};
4448

4549
export const getEmailSchema = ({

packages/database-mikro-orm/src/entity/Service.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { Ref, Reference, EntitySchema } from '@mikro-orm/core';
1+
import { Reference, EntitySchema, ref } from '@mikro-orm/core';
22
import { IUser, UserCtor } from './User';
33

44
export class Service<CustomUser extends IUser<any, any, any>> {
55
id!: number;
66

7-
user!: Ref<CustomUser>;
7+
user!: Reference<CustomUser> & { id: number };
88

99
name: string;
1010

@@ -16,7 +16,7 @@ export class Service<CustomUser extends IUser<any, any, any>> {
1616
this.name = name;
1717

1818
if (user) {
19-
this.user = Reference.create(user);
19+
this.user = ref(user);
2020
}
2121

2222
if (password) {
@@ -31,19 +31,23 @@ export type ServiceCtorArgs<CustomUser extends IUser<any, any, any>> = {
3131
password?: string;
3232
};
3333

34-
export type ServiceCtor<CustomUser extends IUser<any, any, any>> = new (
35-
args: ServiceCtorArgs<CustomUser>
36-
) => Service<CustomUser>;
34+
export type ServiceCtor<
35+
CustomUser extends IUser<any, any, any>,
36+
CustomServiceCtorArgs extends ServiceCtorArgs<CustomUser> = ServiceCtorArgs<CustomUser>,
37+
> = new (args: CustomServiceCtorArgs) => Service<CustomUser>;
3738

38-
export const getServiceCtor = <CustomUser extends IUser<any, any, any>>({
39+
export const getServiceCtor = <
40+
CustomUser extends IUser<any, any, any>,
41+
CustomServiceCtorArgs extends ServiceCtorArgs<CustomUser> = ServiceCtorArgs<CustomUser>,
42+
>({
3943
abstract = false,
4044
}: {
4145
abstract?: boolean;
42-
} = {}): ServiceCtor<CustomUser> => {
46+
} = {}): ServiceCtor<CustomUser, CustomServiceCtorArgs> => {
4347
if (abstract) {
4448
Object.defineProperty(Service, 'name', { value: 'AccountsService' });
4549
}
46-
return Service as ServiceCtor<CustomUser>;
50+
return Service as ServiceCtor<CustomUser, CustomServiceCtorArgs>;
4751
};
4852

4953
export const getServiceSchema = ({

packages/database-mikro-orm/src/entity/Session.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Ref, Reference, EntitySchema } from '@mikro-orm/core';
1+
import { Reference, EntitySchema, ref } from '@mikro-orm/core';
22
import { IUser, UserCtor } from './User';
33

44
export class Session<CustomUser extends IUser<any, any, any>> {
@@ -8,7 +8,7 @@ export class Session<CustomUser extends IUser<any, any, any>> {
88

99
updatedAt: Date = new Date();
1010

11-
user: Ref<CustomUser>;
11+
user: Reference<CustomUser> & { id: number };
1212

1313
token: string;
1414

@@ -21,7 +21,7 @@ export class Session<CustomUser extends IUser<any, any, any>> {
2121
extra?: object;
2222

2323
constructor({ user, token, valid, userAgent, ip, extra }: SessionCtorArgs<CustomUser>) {
24-
this.user = Reference.create(user);
24+
this.user = ref(user);
2525
this.token = token;
2626
this.valid = valid;
2727
if (userAgent) {
@@ -45,19 +45,23 @@ export type SessionCtorArgs<CustomUser extends IUser<any, any, any>> = {
4545
extra?: object;
4646
};
4747

48-
export type SessionCtor<CustomUser extends IUser<any, any, any>> = new (
49-
args: SessionCtorArgs<CustomUser>
50-
) => Session<CustomUser>;
48+
export type SessionCtor<
49+
CustomUser extends IUser<any, any, any>,
50+
CustomSessionCtorArgs extends SessionCtorArgs<CustomUser> = SessionCtorArgs<CustomUser>,
51+
> = new (args: CustomSessionCtorArgs) => Session<CustomUser>;
5152

52-
export const getSessionCtor = <CustomUser extends IUser<any, any, any>>({
53+
export const getSessionCtor = <
54+
CustomUser extends IUser<any, any, any>,
55+
CustomSessionCtorArgs extends SessionCtorArgs<CustomUser> = SessionCtorArgs<CustomUser>,
56+
>({
5357
abstract = false,
5458
}: {
5559
abstract?: boolean;
56-
} = {}): SessionCtor<CustomUser> => {
60+
} = {}): SessionCtor<CustomUser, CustomSessionCtorArgs> => {
5761
if (abstract) {
5862
Object.defineProperty(Session, 'name', { value: 'AccountsSession' });
5963
}
60-
return Session as SessionCtor<CustomUser>;
64+
return Session as SessionCtor<CustomUser, CustomSessionCtorArgs>;
6165
};
6266

6367
export const getSessionSchema = ({

packages/database-mikro-orm/src/entity/User.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ export interface IUser<
1919
}
2020

2121
export const getUserCtor = <
22-
CustomEmail extends Email<IUser<CustomEmail, CustomSession, CustomService>>,
23-
CustomSession extends Session<IUser<CustomEmail, CustomSession, CustomService>>,
24-
CustomService extends Service<IUser<CustomEmail, CustomSession, CustomService>>,
25-
CustomUserCtorArgs extends UserCtorArgs,
26-
CustomEmailCtorArgs extends EmailCtorArgs<IUser<CustomEmail, CustomSession, CustomService>>,
27-
CustomServiceCtorArgs extends ServiceCtorArgs<IUser<CustomEmail, CustomSession, CustomService>>,
22+
CustomEmail extends Email<any>,
23+
CustomSession extends Session<any>,
24+
CustomService extends Service<any>,
25+
CustomUserCtorArgs extends UserCtorArgs = UserCtorArgs,
26+
CustomEmailCtorArgs extends EmailCtorArgs<any> = EmailCtorArgs<any>,
27+
CustomServiceCtorArgs extends ServiceCtorArgs<any> = ServiceCtorArgs<any>,
2828
>({
2929
abstract = false,
3030
EmailEntity = Email as new (args: CustomEmailCtorArgs) => CustomEmail,
@@ -72,7 +72,7 @@ export const getUserCtor = <
7272
if (abstract) {
7373
Object.defineProperty(User, 'name', { value: 'AccountsUser' });
7474
}
75-
return User as UserCtor<CustomEmail, CustomSession, CustomService, CustomUserCtorArgs>;
75+
return User as UserCtor<CustomEmail, CustomSession, CustomService, UserCtorArgs>;
7676
};
7777

7878
export interface UserCtorArgs {
@@ -82,10 +82,10 @@ export interface UserCtorArgs {
8282
}
8383

8484
export type UserCtor<
85-
CustomEmail extends Email<IUser<CustomEmail, CustomSession, CustomService>>,
86-
CustomSession extends Session<IUser<CustomEmail, CustomSession, CustomService>>,
87-
CustomService extends Service<IUser<CustomEmail, CustomSession, CustomService>>,
88-
CustomUserCtorArgs extends UserCtorArgs,
85+
CustomEmail extends Email<any>,
86+
CustomSession extends Session<any>,
87+
CustomService extends Service<any>,
88+
CustomUserCtorArgs extends UserCtorArgs = UserCtorArgs,
8989
> = new (args: CustomUserCtorArgs) => IUser<CustomEmail, CustomSession, CustomService>;
9090

9191
export const getUserSchema = ({
@@ -96,9 +96,9 @@ export const getUserSchema = ({
9696
abstract = false,
9797
}: {
9898
AccountsUser: UserCtor<any, any, any, any>;
99-
EmailEntity?: EmailCtor<InstanceType<typeof AccountsUser>>;
100-
SessionEntity?: SessionCtor<InstanceType<typeof AccountsUser>>;
101-
ServiceEntity?: ServiceCtor<InstanceType<typeof AccountsUser>>;
99+
EmailEntity?: EmailCtor<any, any>;
100+
SessionEntity?: SessionCtor<any, any>;
101+
ServiceEntity?: ServiceCtor<any, any>;
102102
abstract?: boolean;
103103
}) => {
104104
if (abstract) {

tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"compilerOptions": {
3-
"target": "es2019",
4-
"lib": ["es2019"],
3+
"target": "es2022",
4+
"lib": ["es2023"],
55
"module": "commonjs",
66
"moduleResolution": "node",
77
"sourceMap": true,

0 commit comments

Comments
 (0)