fix(typings): fix `ignoreDuplicates` option (#13220) · sequelize/sequelize@b33d78e

1+

import { expectTypeOf } from 'expect-type'

2+

import { User } from './models/User';

3+4+

async () => {

5+

const user = await User.create({

6+

id: 123,

7+

firstName: '<first-name>',

8+

}, {

9+

ignoreDuplicates: false,

10+

returning: true,

11+

});

12+

expectTypeOf(user).toEqualTypeOf<User>()

13+14+

const voidUsers = await Promise.all([

15+

User.create({

16+

id: 123,

17+

firstName: '<first-name>',

18+

}, {

19+

ignoreDuplicates: true,

20+

returning: false,

21+

}),

22+

User.create({

23+

id: 123,

24+

firstName: '<first-name>',

25+

}, {

26+

ignoreDuplicates: true,

27+

returning: true,

28+

}),

29+

User.create({

30+

id: 123,

31+

firstName: '<first-name>',

32+

}, {

33+

ignoreDuplicates: false,

34+

returning: false,

35+

}),

36+

User.create({

37+

id: 123,

38+

firstName: '<first-name>',

39+

}, { returning: false }),

40+

User.create({

41+

id: 123,

42+

firstName: '<first-name>',

43+

}, { ignoreDuplicates: true }),

44+

]);

45+

expectTypeOf(voidUsers).toEqualTypeOf<[void, void, void, void, void]>()

46+47+

const emptyUsers = await Promise.all([

48+

User.create(),

49+

User.create(undefined),

50+

User.create(undefined, undefined),

51+

]);

52+

expectTypeOf(emptyUsers).toEqualTypeOf<[User, User, User]>()

53+54+

const partialUser = await User.create({

55+

id: 123,

56+

firstName: '<first-name>',

57+

lastName: '<last-name>',

58+

}, {

59+

fields: ['firstName'],

60+

returning: ['id'],

61+

});

62+

expectTypeOf(partialUser).toEqualTypeOf<User>()

63+64+

// @ts-expect-error missing attribute

65+

await User.create({

66+

id: 123,

67+

});

68+

await User.create({

69+

id: 123,

70+

firstName: '<first-name>',

71+

// @ts-expect-error unknown attribute

72+

unknown: '<unknown>',

73+

});

74+

};