@or-sdk/users 3.4.0 → 3.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/CHANGELOG.md +9 -0
- package/dist/cjs/Users.js +74 -39
- package/dist/cjs/Users.js.map +1 -1
- package/dist/cjs/__tests__/Users.spec.js +67 -39
- package/dist/cjs/__tests__/Users.spec.js.map +1 -1
- package/dist/cjs/errors.js +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/schemas/_base.js +26 -0
- package/dist/cjs/schemas/_base.js.map +1 -0
- package/dist/cjs/schemas/constructor.js +22 -0
- package/dist/cjs/schemas/constructor.js.map +1 -0
- package/dist/cjs/schemas/createUserWithMulti.js +21 -0
- package/dist/cjs/schemas/createUserWithMulti.js.map +1 -0
- package/dist/cjs/schemas/getAccountInfo.js +3 -0
- package/dist/cjs/schemas/getAccountInfo.js.map +1 -0
- package/dist/cjs/schemas/getCurrentMultiUserProfile.js +19 -0
- package/dist/cjs/schemas/getCurrentMultiUserProfile.js.map +1 -0
- package/dist/cjs/schemas/getUserById.js +9 -0
- package/dist/cjs/schemas/getUserById.js.map +1 -0
- package/dist/cjs/schemas/index.js +28 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/schemas/listAccountProfiles.js +3 -0
- package/dist/cjs/schemas/listAccountProfiles.js.map +1 -0
- package/dist/cjs/schemas/listProfiles.js +13 -0
- package/dist/cjs/schemas/listProfiles.js.map +1 -0
- package/dist/cjs/schemas/listUsers.js +13 -0
- package/dist/cjs/schemas/listUsers.js.map +1 -0
- package/dist/cjs/schemas/listUsersAdvanced.js +10 -0
- package/dist/cjs/schemas/listUsersAdvanced.js.map +1 -0
- package/dist/cjs/schemas/upsertMultiUser.js +11 -0
- package/dist/cjs/schemas/upsertMultiUser.js.map +1 -0
- package/dist/esm/Users.js +43 -26
- package/dist/esm/Users.js.map +1 -1
- package/dist/esm/__tests__/Users.spec.js +13 -5
- package/dist/esm/__tests__/Users.spec.js.map +1 -1
- package/dist/esm/errors.js +2 -2
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/schemas/_base.js +20 -0
- package/dist/esm/schemas/_base.js.map +1 -0
- package/dist/esm/schemas/constructor.js +19 -0
- package/dist/esm/schemas/constructor.js.map +1 -0
- package/dist/esm/schemas/createUserWithMulti.js +18 -0
- package/dist/esm/schemas/createUserWithMulti.js.map +1 -0
- package/dist/esm/schemas/getAccountInfo.js +2 -0
- package/dist/esm/schemas/getAccountInfo.js.map +1 -0
- package/dist/esm/schemas/getCurrentMultiUserProfile.js +16 -0
- package/dist/esm/schemas/getCurrentMultiUserProfile.js.map +1 -0
- package/dist/esm/schemas/getUserById.js +6 -0
- package/dist/esm/schemas/getUserById.js.map +1 -0
- package/dist/esm/schemas/index.js +12 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/schemas/listAccountProfiles.js +2 -0
- package/dist/esm/schemas/listAccountProfiles.js.map +1 -0
- package/dist/esm/schemas/listProfiles.js +10 -0
- package/dist/esm/schemas/listProfiles.js.map +1 -0
- package/dist/esm/schemas/listUsers.js +10 -0
- package/dist/esm/schemas/listUsers.js.map +1 -0
- package/dist/esm/schemas/listUsersAdvanced.js +7 -0
- package/dist/esm/schemas/listUsersAdvanced.js.map +1 -0
- package/dist/esm/schemas/upsertMultiUser.js +8 -0
- package/dist/esm/schemas/upsertMultiUser.js.map +1 -0
- package/dist/types/Users.d.ts +11 -10
- package/dist/types/Users.d.ts.map +1 -1
- package/dist/types/__tests__/mocks/server.d.ts +3 -3
- package/dist/types/__tests__/mocks/server.d.ts.map +1 -1
- package/dist/types/errors.d.ts +2 -2
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/schemas/_base.d.ts +16 -0
- package/dist/types/schemas/_base.d.ts.map +1 -0
- package/dist/types/schemas/constructor.d.ts +34 -0
- package/dist/types/schemas/constructor.d.ts.map +1 -0
- package/dist/types/schemas/createUserWithMulti.d.ts +46 -0
- package/dist/types/schemas/createUserWithMulti.d.ts.map +1 -0
- package/dist/types/schemas/getAccountInfo.d.ts +5 -0
- package/dist/types/schemas/getAccountInfo.d.ts.map +1 -0
- package/dist/types/schemas/getCurrentMultiUserProfile.d.ts +66 -0
- package/dist/types/schemas/getCurrentMultiUserProfile.d.ts.map +1 -0
- package/dist/types/schemas/getUserById.d.ts +26 -0
- package/dist/types/schemas/getUserById.d.ts.map +1 -0
- package/dist/types/schemas/index.d.ts +12 -0
- package/dist/types/schemas/index.d.ts.map +1 -0
- package/dist/types/schemas/listAccountProfiles.d.ts +4 -0
- package/dist/types/schemas/listAccountProfiles.d.ts.map +1 -0
- package/dist/types/schemas/listProfiles.d.ts +43 -0
- package/dist/types/schemas/listProfiles.d.ts.map +1 -0
- package/dist/types/schemas/listUsers.d.ts +36 -0
- package/dist/types/schemas/listUsers.d.ts.map +1 -0
- package/dist/types/schemas/listUsersAdvanced.d.ts +44 -0
- package/dist/types/schemas/listUsersAdvanced.d.ts.map +1 -0
- package/dist/types/schemas/upsertMultiUser.d.ts +18 -0
- package/dist/types/schemas/upsertMultiUser.d.ts.map +1 -0
- package/dist/types/types.d.ts +8 -90
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/Users.ts +160 -60
- package/src/__tests__/Users.spec.ts +15 -5
- package/src/__tests__/__snapshots__/Users.spec.ts.snap +66 -56
- package/src/errors.ts +2 -2
- package/src/index.ts +1 -1
- package/src/schemas/_base.ts +29 -0
- package/src/schemas/constructor.ts +21 -0
- package/src/schemas/createUserWithMulti.ts +26 -0
- package/src/schemas/getAccountInfo.ts +4 -0
- package/src/schemas/getCurrentMultiUserProfile.ts +19 -0
- package/src/schemas/getUserById.ts +22 -0
- package/src/schemas/index.ts +11 -0
- package/src/schemas/listAccountProfiles.ts +5 -0
- package/src/schemas/listProfiles.ts +37 -0
- package/src/schemas/listUsers.ts +27 -0
- package/src/schemas/listUsersAdvanced.ts +39 -0
- package/src/schemas/upsertMultiUser.ts +13 -0
- package/src/types.ts +13 -111
- package/{vitest.config.js → vitest.config.mts} +2 -2
- package/dist/cjs/schemas.js +0 -52
- package/dist/cjs/schemas.js.map +0 -1
- package/dist/esm/schemas.js +0 -45
- package/dist/esm/schemas.js.map +0 -1
- package/dist/types/schemas.d.ts +0 -111
- package/dist/types/schemas.d.ts.map +0 -1
- package/src/schemas.ts +0 -52
|
@@ -1,93 +1,103 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
+
exports[`Users API > constructor > throws error if usersUrl and discoveryUrl are not provided 1`] = `
|
|
4
|
+
[ZodError: [
|
|
5
|
+
{
|
|
6
|
+
"code": "custom",
|
|
7
|
+
"message": "Either \\"discoveryUrl\\" or \\"usersUrl\\" is required.",
|
|
8
|
+
"path": []
|
|
9
|
+
}
|
|
10
|
+
]]
|
|
11
|
+
`;
|
|
12
|
+
|
|
3
13
|
exports[`Users API > createUserWithMulti > should throw error if expire time is in the past 1`] = `
|
|
4
|
-
|
|
14
|
+
[ZodError: [
|
|
5
15
|
{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
"code": "custom",
|
|
17
|
+
"message": "Has to be in the future",
|
|
18
|
+
"path": [
|
|
19
|
+
"disableAt"
|
|
10
20
|
]
|
|
11
21
|
}
|
|
12
|
-
]
|
|
22
|
+
]]
|
|
13
23
|
`;
|
|
14
24
|
|
|
15
25
|
exports[`Users API > getCurrentMultiUserProfile > show throw error on invalid response 1`] = `
|
|
16
|
-
|
|
26
|
+
[ZodError: [
|
|
17
27
|
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
"code": "invalid_type",
|
|
29
|
+
"expected": "string",
|
|
30
|
+
"received": "undefined",
|
|
31
|
+
"path": [
|
|
32
|
+
"id"
|
|
23
33
|
],
|
|
24
|
-
|
|
34
|
+
"message": "Required"
|
|
25
35
|
},
|
|
26
36
|
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
"code": "invalid_type",
|
|
38
|
+
"expected": "string",
|
|
39
|
+
"received": "undefined",
|
|
40
|
+
"path": [
|
|
41
|
+
"username"
|
|
32
42
|
],
|
|
33
|
-
|
|
43
|
+
"message": "Required"
|
|
34
44
|
},
|
|
35
45
|
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
"code": "invalid_type",
|
|
47
|
+
"expected": "object",
|
|
48
|
+
"received": "undefined",
|
|
49
|
+
"path": [
|
|
50
|
+
"data"
|
|
41
51
|
],
|
|
42
|
-
|
|
52
|
+
"message": "Required"
|
|
43
53
|
},
|
|
44
54
|
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
"code": "unrecognized_keys",
|
|
56
|
+
"keys": [
|
|
57
|
+
"wrongResponse"
|
|
48
58
|
],
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
"path": [],
|
|
60
|
+
"message": "Unrecognized key(s) in object: 'wrongResponse'"
|
|
51
61
|
}
|
|
52
|
-
]
|
|
62
|
+
]]
|
|
53
63
|
`;
|
|
54
64
|
|
|
55
65
|
exports[`Users API > getCurrentMultiUserProfile > show throw error on invalid response if validate = true 1`] = `
|
|
56
|
-
|
|
66
|
+
[ZodError: [
|
|
57
67
|
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
"code": "invalid_type",
|
|
69
|
+
"expected": "string",
|
|
70
|
+
"received": "undefined",
|
|
71
|
+
"path": [
|
|
72
|
+
"id"
|
|
63
73
|
],
|
|
64
|
-
|
|
74
|
+
"message": "Required"
|
|
65
75
|
},
|
|
66
76
|
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
"code": "invalid_type",
|
|
78
|
+
"expected": "string",
|
|
79
|
+
"received": "undefined",
|
|
80
|
+
"path": [
|
|
81
|
+
"username"
|
|
72
82
|
],
|
|
73
|
-
|
|
83
|
+
"message": "Required"
|
|
74
84
|
},
|
|
75
85
|
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
"code": "invalid_type",
|
|
87
|
+
"expected": "object",
|
|
88
|
+
"received": "undefined",
|
|
89
|
+
"path": [
|
|
90
|
+
"data"
|
|
81
91
|
],
|
|
82
|
-
|
|
92
|
+
"message": "Required"
|
|
83
93
|
},
|
|
84
94
|
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
"code": "unrecognized_keys",
|
|
96
|
+
"keys": [
|
|
97
|
+
"wrongResponse"
|
|
88
98
|
],
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
"path": [],
|
|
100
|
+
"message": "Unrecognized key(s) in object: 'wrongResponse'"
|
|
91
101
|
}
|
|
92
|
-
]
|
|
102
|
+
]]
|
|
93
103
|
`;
|
package/src/errors.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApiError } from '@or-sdk/base';
|
|
2
2
|
|
|
3
|
-
export class CreateUserConflictError extends
|
|
3
|
+
export class CreateUserConflictError extends ApiError {}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import isEmail from 'validator/lib/isEmail';
|
|
2
|
+
import isMobilePhone from 'validator/lib/isMobilePhone';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
// not using `.email()` here because it's does not allow for 'name+client/env@example.com'
|
|
6
|
+
export const emailSchema = z.string()
|
|
7
|
+
.min(1)
|
|
8
|
+
.refine(isEmail, { message: 'Has to be an email' });
|
|
9
|
+
|
|
10
|
+
export const phoneSchema = z.string()
|
|
11
|
+
.min(1)
|
|
12
|
+
.refine(isMobilePhone, { message: 'Has to be a phone number' });
|
|
13
|
+
|
|
14
|
+
export const futureDatetimeSchema = z.string()
|
|
15
|
+
.datetime()
|
|
16
|
+
.refine((value) => new Date(value) > new Date(), { message: 'Has to be in the future' });
|
|
17
|
+
|
|
18
|
+
export type AccountProfile = {
|
|
19
|
+
id: string;
|
|
20
|
+
email: string;
|
|
21
|
+
username: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export enum UserRole {
|
|
25
|
+
GUEST = 'GUEST',
|
|
26
|
+
USER = 'USER',
|
|
27
|
+
ADMIN = 'ADMIN',
|
|
28
|
+
SUPER_ADMIN = 'SUPER_ADMIN',
|
|
29
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Token } from '@or-sdk/base';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
const authTokenSchema = z.string().min(1, { message: 'Token is required' });
|
|
5
|
+
export const usersConfigSchema = z.object({
|
|
6
|
+
token: z.union([
|
|
7
|
+
authTokenSchema,
|
|
8
|
+
z.function().args().returns(authTokenSchema),
|
|
9
|
+
]) satisfies z.ZodType<Token>,
|
|
10
|
+
discoveryUrl: z.string().url().optional(),
|
|
11
|
+
accountId: z.string().uuid().optional(),
|
|
12
|
+
usersUrl: z.string().url().optional(),
|
|
13
|
+
sdkUrl: z.string().url().optional(),
|
|
14
|
+
})
|
|
15
|
+
.strict()
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
if (!data.discoveryUrl && !data.usersUrl) return false;
|
|
18
|
+
return true;
|
|
19
|
+
}, { message: 'Either "discoveryUrl" or "usersUrl" is required.' });
|
|
20
|
+
|
|
21
|
+
export type UsersConfig = z.infer<typeof usersConfigSchema>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { emailSchema, futureDatetimeSchema, UserRole } from './_base';
|
|
4
|
+
|
|
5
|
+
export enum UserPermissionScope {
|
|
6
|
+
READONLY = 'READONLY',
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const createUserWithMultDataSchema = z.object({
|
|
10
|
+
role: z.nativeEnum(UserRole),
|
|
11
|
+
email: emailSchema,
|
|
12
|
+
disableAt: futureDatetimeSchema.optional(),
|
|
13
|
+
creatorUsername: emailSchema.optional(),
|
|
14
|
+
permissions: z.object({
|
|
15
|
+
scope: z.nativeEnum(UserPermissionScope).array().optional(),
|
|
16
|
+
}).optional(),
|
|
17
|
+
type: z.string().optional(),
|
|
18
|
+
redirectUrl: z.string().url().optional(),
|
|
19
|
+
}).strict();
|
|
20
|
+
|
|
21
|
+
export type CreateUserWithMultData = z.infer<typeof createUserWithMultDataSchema>;
|
|
22
|
+
|
|
23
|
+
export type CreateUserWithMultResult = {
|
|
24
|
+
emailSent: boolean;
|
|
25
|
+
userCreated?: true;
|
|
26
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { emailSchema, phoneSchema } from './_base';
|
|
4
|
+
|
|
5
|
+
export const currentMultiUserProfileSchema = z.object({
|
|
6
|
+
id: z.string().uuid(),
|
|
7
|
+
username: emailSchema,
|
|
8
|
+
data: z.object({
|
|
9
|
+
profile: z.object({
|
|
10
|
+
firstName: z.string().optional(),
|
|
11
|
+
lastName: z.string().optional(),
|
|
12
|
+
phoneNumber: phoneSchema.or(z.literal('')).optional(),
|
|
13
|
+
icon: z.string().url().optional(),
|
|
14
|
+
}).strict().optional(),
|
|
15
|
+
meta: z.record(z.any()).optional(),
|
|
16
|
+
}).strict(),
|
|
17
|
+
}).strict();
|
|
18
|
+
|
|
19
|
+
export type CurrentMultiUserProfile = z.infer<typeof currentMultiUserProfileSchema>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const getUserByIdParamsSchema = z.object({
|
|
4
|
+
userId: z.string().uuid(),
|
|
5
|
+
projection: z.string().array().optional(),
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export type GetUserByIdParams = z.infer<typeof getUserByIdParamsSchema>;
|
|
9
|
+
|
|
10
|
+
export type User = {
|
|
11
|
+
dateCreated: number;
|
|
12
|
+
accountId: string;
|
|
13
|
+
email: string;
|
|
14
|
+
role: string;
|
|
15
|
+
data: {
|
|
16
|
+
firstName: string;
|
|
17
|
+
updatedBy: string;
|
|
18
|
+
};
|
|
19
|
+
dateModified: number;
|
|
20
|
+
username: string;
|
|
21
|
+
id: string;
|
|
22
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './_base';
|
|
2
|
+
export * from './constructor';
|
|
3
|
+
export * from './createUserWithMulti';
|
|
4
|
+
export * from './getAccountInfo';
|
|
5
|
+
export * from './getCurrentMultiUserProfile';
|
|
6
|
+
export * from './getUserById';
|
|
7
|
+
export * from './listAccountProfiles';
|
|
8
|
+
export * from './listProfiles';
|
|
9
|
+
export * from './listUsers';
|
|
10
|
+
export * from './listUsersAdvanced';
|
|
11
|
+
export * from './upsertMultiUser';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { List } from '@or-sdk/base';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
import { emailSchema } from './_base';
|
|
5
|
+
|
|
6
|
+
export const listProfilesParamsSchema = z.object({
|
|
7
|
+
email: emailSchema.optional(),
|
|
8
|
+
username: emailSchema.optional(),
|
|
9
|
+
id: z.string().uuid().optional(),
|
|
10
|
+
|
|
11
|
+
offset: z.number().int().min(0).optional(),
|
|
12
|
+
limit: z.number().int().min(1).optional(),
|
|
13
|
+
}).strict().optional();
|
|
14
|
+
|
|
15
|
+
export type ListProfilesParams = z.infer<typeof listProfilesParamsSchema>;
|
|
16
|
+
|
|
17
|
+
export type ProfileItem = {
|
|
18
|
+
id: string;
|
|
19
|
+
email: string;
|
|
20
|
+
username: string;
|
|
21
|
+
data: {
|
|
22
|
+
profile?: {
|
|
23
|
+
firstName?: string;
|
|
24
|
+
lastName?: string;
|
|
25
|
+
phoneNumber?: string;
|
|
26
|
+
icon?: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
dateCreated: string;
|
|
30
|
+
dateModified: string;
|
|
31
|
+
disabled: boolean;
|
|
32
|
+
twoFactor?: {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type ListProfilesResult = List<ProfileItem>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { OrderDirection, List } from '@or-sdk/base';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
export const listUsersParamsSchema = z.object({
|
|
5
|
+
from: z.number().int().min(0).optional().describe('The starting point for the list of users.'),
|
|
6
|
+
size: z.number().int().min(1).optional().describe('The maximum number of users to return.'),
|
|
7
|
+
orderProperty: z.string().min(1).optional().describe('The property to order the users by.'),
|
|
8
|
+
orderDirection: z.nativeEnum(OrderDirection).optional().describe('The direction to order the users.'),
|
|
9
|
+
query: z.record(z.any()).optional().describe('The query to filter the users.'),
|
|
10
|
+
}).strict();
|
|
11
|
+
|
|
12
|
+
export type ListUsersParams = z.infer<typeof listUsersParamsSchema>;
|
|
13
|
+
|
|
14
|
+
export type UserItem = {
|
|
15
|
+
id: string;
|
|
16
|
+
email: string;
|
|
17
|
+
username: string;
|
|
18
|
+
dateCreated: string;
|
|
19
|
+
multiUserId?: string;
|
|
20
|
+
data: {
|
|
21
|
+
firstName?: string;
|
|
22
|
+
lastName?: string;
|
|
23
|
+
contactPhone?: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type ListUsersResult = List<UserItem>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { UserRole } from './_base';
|
|
4
|
+
|
|
5
|
+
export const listUsersAdvancedParamsSchema = z.object({
|
|
6
|
+
limit: z.number().int().min(1).optional(),
|
|
7
|
+
offset: z.number().int().min(0).optional(),
|
|
8
|
+
skipShareViews: z.boolean().optional(),
|
|
9
|
+
}).strict().optional();
|
|
10
|
+
|
|
11
|
+
export type ListUsersAdvancedParams = z.infer<typeof listUsersAdvancedParamsSchema>;
|
|
12
|
+
|
|
13
|
+
export type UserAdvanced = {
|
|
14
|
+
id: string;
|
|
15
|
+
email: string;
|
|
16
|
+
username: string;
|
|
17
|
+
dateCreated: Date;
|
|
18
|
+
role: keyof typeof UserRole;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
data: {
|
|
21
|
+
firstName?: string;
|
|
22
|
+
lastName?: string;
|
|
23
|
+
disableAt?: string;
|
|
24
|
+
phoneNumber?: string;
|
|
25
|
+
permissions?: {
|
|
26
|
+
scope?: string[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
profile?: {
|
|
30
|
+
id: string;
|
|
31
|
+
email: string;
|
|
32
|
+
firstName?: string;
|
|
33
|
+
lastName?: string;
|
|
34
|
+
phoneNumber?: string;
|
|
35
|
+
icon?: string;
|
|
36
|
+
};
|
|
37
|
+
createdBy?: string;
|
|
38
|
+
bySuperAdmin?: boolean;
|
|
39
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import { emailSchema, AccountProfile } from './_base';
|
|
4
|
+
|
|
5
|
+
export const upsertMultiUserParamsSchema = z.object({
|
|
6
|
+
email: emailSchema,
|
|
7
|
+
password: z.string().min(8, { message: 'Password has to be at least 8 characters' }),
|
|
8
|
+
data: z.record(z.any()).optional(),
|
|
9
|
+
}).strict();
|
|
10
|
+
|
|
11
|
+
export type UpsertMultiUserParams = z.infer<typeof upsertMultiUserParamsSchema>;
|
|
12
|
+
|
|
13
|
+
export type UpsertMultiUserResult = AccountProfile;
|
package/src/types.ts
CHANGED
|
@@ -1,62 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Token } from '@or-sdk/base';
|
|
2
2
|
|
|
3
|
-
export type {
|
|
4
|
-
|
|
5
|
-
export type UsersConfig = {
|
|
6
|
-
/**
|
|
7
|
-
* token
|
|
8
|
-
*/
|
|
9
|
-
token: Token;
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Url of OneReach service discovery api
|
|
13
|
-
*/
|
|
14
|
-
discoveryUrl?: string;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Account ID for cross-account requests (super admin only)
|
|
18
|
-
*/
|
|
19
|
-
accountId?: string;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Url of OneReach Users api
|
|
23
|
-
*/
|
|
24
|
-
usersUrl: string;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Url of OneReach SDK api
|
|
28
|
-
*/
|
|
29
|
-
sdkUrl?: string;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export type ListUsersParams = OrderOptions & PaginationOptions & {
|
|
33
|
-
query: {[key: string]: any;};
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export type UserItem = {
|
|
37
|
-
id: string;
|
|
38
|
-
email: string;
|
|
39
|
-
username: string;
|
|
40
|
-
data: {
|
|
41
|
-
firstName: string;
|
|
42
|
-
lastName: string;
|
|
43
|
-
contactPhone: string;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export type User = {
|
|
48
|
-
dateCreated: number;
|
|
49
|
-
accountId: string;
|
|
50
|
-
email: string;
|
|
51
|
-
role: string;
|
|
52
|
-
data: {
|
|
53
|
-
firstName: string;
|
|
54
|
-
updatedBy: string;
|
|
55
|
-
};
|
|
56
|
-
dateModified: number;
|
|
57
|
-
username: string;
|
|
58
|
-
id: string;
|
|
59
|
-
};
|
|
3
|
+
export type { Token };
|
|
60
4
|
|
|
61
5
|
export type TokenData = {
|
|
62
6
|
allow: boolean;
|
|
@@ -76,68 +20,31 @@ export type Profile = {
|
|
|
76
20
|
username: string;
|
|
77
21
|
};
|
|
78
22
|
|
|
79
|
-
export type
|
|
80
|
-
|
|
81
|
-
export type AccountProfile = {id: string; email: string; username: string;};
|
|
82
|
-
|
|
83
|
-
export type ListProfilesParams = {email?: string; username?: string; id?: string;};
|
|
23
|
+
export type AttachResult = { emailSent?: boolean; userAttached?: boolean; };
|
|
84
24
|
|
|
85
|
-
export type
|
|
25
|
+
export type AttachParams = { email: string; userId?: string; password?: string; };
|
|
86
26
|
|
|
87
|
-
export type
|
|
27
|
+
export type ProfileUserItem = { id: string; accountId: string; username: string; role: string; accountName: string; };
|
|
88
28
|
|
|
89
|
-
export type
|
|
90
|
-
|
|
91
|
-
export type ProfileAccountItem = {id: string; accountName: string;};
|
|
92
|
-
|
|
93
|
-
export type UserAdvanced = {
|
|
94
|
-
id: string;
|
|
95
|
-
email: string;
|
|
96
|
-
dateCreated: Date;
|
|
97
|
-
disabled: boolean;
|
|
98
|
-
username: string;
|
|
99
|
-
role: string;
|
|
100
|
-
data: {
|
|
101
|
-
firstName?: string;
|
|
102
|
-
lastName?: string;
|
|
103
|
-
disableAt?: Date;
|
|
104
|
-
phoneNumber?: string;
|
|
105
|
-
permissions?: {
|
|
106
|
-
scope?: Array<string>;
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
profile?: {
|
|
110
|
-
id: string;
|
|
111
|
-
firstName?: string;
|
|
112
|
-
lastName?: string;
|
|
113
|
-
phoneNumber?: string;
|
|
114
|
-
email: string;
|
|
115
|
-
icon?: string;
|
|
116
|
-
};
|
|
117
|
-
createdBy?: string;
|
|
118
|
-
bySuperAdmin?: boolean;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
export type ListUsersAdvancedParams = {
|
|
122
|
-
limit?: number;
|
|
123
|
-
offset?: number;
|
|
124
|
-
};
|
|
29
|
+
export type ProfileAccountItem = { id: string; accountName: string; };
|
|
125
30
|
|
|
126
31
|
export type ListAccountsParams = {
|
|
127
32
|
limit?: number;
|
|
128
33
|
skip?: number;
|
|
129
|
-
query?: {[key: string]: unknown;};
|
|
34
|
+
query?: { [key: string]: unknown; };
|
|
130
35
|
projection?: string[];
|
|
131
36
|
};
|
|
132
37
|
|
|
133
|
-
export type
|
|
134
|
-
items:
|
|
38
|
+
export type ListAccountsResult = {
|
|
39
|
+
items: {
|
|
40
|
+
id: string;
|
|
41
|
+
accountName: string;
|
|
135
42
|
dateCreated: string;
|
|
136
43
|
dateModified: string;
|
|
137
44
|
disabled: boolean;
|
|
138
45
|
version: boolean;
|
|
139
|
-
data: {[key: string]: unknown;};
|
|
140
|
-
}
|
|
46
|
+
data: { [key: string]: unknown; };
|
|
47
|
+
}[];
|
|
141
48
|
total: number;
|
|
142
49
|
};
|
|
143
50
|
|
|
@@ -160,8 +67,3 @@ export type UpdateUserParam = {
|
|
|
160
67
|
role?: string;
|
|
161
68
|
multiUserId?: string;
|
|
162
69
|
};
|
|
163
|
-
|
|
164
|
-
export type CreateUserWithMultResponse = {
|
|
165
|
-
emailSent: boolean;
|
|
166
|
-
userCreated?: true;
|
|
167
|
-
};
|
|
@@ -2,7 +2,7 @@ import { defineConfig } from 'vitest/config';
|
|
|
2
2
|
|
|
3
3
|
export default defineConfig({
|
|
4
4
|
test: {
|
|
5
|
-
reporters: ['junit', '
|
|
5
|
+
reporters: ['junit', 'default'],
|
|
6
6
|
outputFile: 'test-results/junit.xml',
|
|
7
7
|
coverage: {
|
|
8
8
|
all: true,
|
|
@@ -19,6 +19,6 @@ export default defineConfig({
|
|
|
19
19
|
globals: true,
|
|
20
20
|
environment: 'node',
|
|
21
21
|
clearMocks: true,
|
|
22
|
-
watch:
|
|
22
|
+
watch: false,
|
|
23
23
|
},
|
|
24
24
|
});
|
package/dist/cjs/schemas.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
var _a;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.CreateUserWithMultData = exports.CurrentMultiUserProfile = exports.UserPermissionScope = exports.UserRole = void 0;
|
|
8
|
-
var isEmail_1 = __importDefault(require("validator/lib/isEmail"));
|
|
9
|
-
var isMobilePhone_1 = __importDefault(require("validator/lib/isMobilePhone"));
|
|
10
|
-
var zod_1 = require("zod");
|
|
11
|
-
var UserRole;
|
|
12
|
-
(function (UserRole) {
|
|
13
|
-
UserRole["GUEST"] = "GUEST";
|
|
14
|
-
UserRole["USER"] = "USER";
|
|
15
|
-
UserRole["ADMIN"] = "ADMIN";
|
|
16
|
-
UserRole["SUPER_ADMIN"] = "SUPER_ADMIN";
|
|
17
|
-
})(UserRole || (exports.UserRole = UserRole = {}));
|
|
18
|
-
var UserPermissionScope;
|
|
19
|
-
(function (UserPermissionScope) {
|
|
20
|
-
UserPermissionScope["READONLY"] = "READONLY";
|
|
21
|
-
})(UserPermissionScope || (exports.UserPermissionScope = UserPermissionScope = {}));
|
|
22
|
-
exports.CurrentMultiUserProfile = zod_1.z.object({
|
|
23
|
-
id: zod_1.z.string().uuid(),
|
|
24
|
-
username: zod_1.z.string().refine(isEmail_1.default, { message: 'Has to be an email' }),
|
|
25
|
-
data: zod_1.z.object({
|
|
26
|
-
profile: zod_1.z.object({
|
|
27
|
-
firstName: zod_1.z.string().optional(),
|
|
28
|
-
lastName: zod_1.z.string().optional(),
|
|
29
|
-
phoneNumber: zod_1.z.string().refine(isMobilePhone_1.default, { message: 'Has to be a phone number' })
|
|
30
|
-
.or(zod_1.z.literal(''))
|
|
31
|
-
.optional(),
|
|
32
|
-
icon: zod_1.z.string().url().optional(),
|
|
33
|
-
}).strict().optional(),
|
|
34
|
-
meta: zod_1.z.object((_a = {},
|
|
35
|
-
_a[zod_1.z.string()] = zod_1.z.any(),
|
|
36
|
-
_a)).optional(),
|
|
37
|
-
}).strict(),
|
|
38
|
-
}).strict();
|
|
39
|
-
exports.CreateUserWithMultData = zod_1.z.object({
|
|
40
|
-
role: zod_1.z.nativeEnum(UserRole),
|
|
41
|
-
email: zod_1.z.string().refine(isEmail_1.default, { message: 'Has to be an email' }),
|
|
42
|
-
disableAt: zod_1.z.string().datetime()
|
|
43
|
-
.refine(function (value) { return new Date(value) > new Date(); }, { message: 'Has to be in the future' })
|
|
44
|
-
.optional(),
|
|
45
|
-
creatorUsername: zod_1.z.string().refine(isEmail_1.default, { message: 'Has to be an email' }).optional(),
|
|
46
|
-
permissions: zod_1.z.object({
|
|
47
|
-
scope: zod_1.z.nativeEnum(UserPermissionScope).array().optional(),
|
|
48
|
-
}).optional(),
|
|
49
|
-
type: zod_1.z.string().optional(),
|
|
50
|
-
redirectUrl: zod_1.z.string().optional(),
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=schemas.js.map
|
package/dist/cjs/schemas.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":";;;;;;;AAAA,kEAA4C;AAC5C,8EAAwD;AACxD,2BAAwB;AAExB,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAiB,CAAA;IACjB,yBAAe,CAAA;IACf,2BAAiB,CAAA;IACjB,uCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AACD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,4CAAuB,CAAA;AACzB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAEY,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAErB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACvE,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;YAChB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,uBAAa,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;iBACnF,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBACjB,QAAQ,EAAE;YACb,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SAClC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACtB,IAAI,EAAE,OAAC,CAAC,MAAM;YAEZ,GAAC,OAAC,CAAC,MAAM,EAAE,IAAG,OAAC,CAAC,GAAG,EAAE;gBACrB,CAAC,QAAQ,EAAE;KACd,CAAC,CAAC,MAAM,EAAE;CACZ,CAAC,CAAC,MAAM,EAAE,CAAC;AAIC,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,OAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IAE5B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACpE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAA5B,CAA4B,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;SACvF,QAAQ,EAAE;IACb,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzF,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,OAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;KAC5D,CAAC,CAAC,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC"}
|