create-arkos 2.0.0-next.16 → 2.0.0-next.18
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/README.md +182 -57
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/project-config-inquirer.js +12 -4
- package/dist/utils/project-config-inquirer.js.map +1 -1
- package/dist/utils/template-compiler.js +8 -11
- package/dist/utils/template-compiler.js.map +1 -1
- package/package.json +8 -8
- package/templates/basic/README.md.hbs +2 -4
- package/templates/basic/arkos.config.ts.hbs +2 -2
- package/templates/basic/jsconfig.json.hbs +2 -2
- package/templates/basic/package.json.hbs +11 -9
- package/templates/basic/prisma/schema/__tests__/user-role.prisma.hbs.test.ts +1 -1
- package/templates/basic/prisma/schema/auth-permission.prisma.hbs +3 -9
- package/templates/basic/prisma/schema/auth-role.prisma.hbs +2 -2
- package/templates/basic/prisma/schema/user-permission.prisma.hbs +18 -0
- package/templates/basic/prisma/schema/user.prisma.hbs +3 -1
- package/templates/basic/src/app.ts.hbs +2 -4
- package/templates/basic/src/modules/auth/auth.policy.ts.hbs +1 -1
- package/templates/basic/src/modules/auth/auth.router.ts.hbs +72 -7
- package/templates/basic/src/modules/auth-permission/auth-permission.router.ts.hbs +39 -15
- package/templates/basic/src/modules/auth-permission/dtos/create-auth-permission.dto.ts.hbs +6 -9
- package/templates/basic/src/modules/auth-permission/dtos/update-auth-permission.dto.ts.hbs +18 -3
- package/templates/basic/src/modules/auth-role/auth-role.router.ts.hbs +38 -14
- package/templates/basic/src/modules/auth-role/dtos/create-auth-role.dto.ts.hbs +2 -7
- package/templates/basic/src/modules/auth-role/dtos/update-auth-role.dto.ts.hbs +2 -5
- package/templates/basic/src/modules/file-upload/file-upload.router.ts.hbs +28 -15
- package/templates/basic/src/modules/user/user.router.ts.hbs +91 -15
- package/templates/basic/src/router.ts.hbs +3 -6
- package/templates/basic/tsconfig.json.hbs +2 -2
- package/templates/basic/src/loadables.ts.hbs +0 -29
- package/templates/basic/src/modules/auth/auth.route-hook.ts.hbs +0 -66
- package/templates/basic/src/modules/auth-permission/auth-permission.route-hook.ts.hbs +0 -35
- package/templates/basic/src/modules/auth-role/auth-role.route-hook.ts.hbs +0 -35
- package/templates/basic/src/modules/file-upload/file-upload.route-hook.ts.hbs +0 -23
- package/templates/basic/src/modules/user/user.route-hook.ts.hbs +0 -88
- /package/templates/basic/src/modules/auth-permission/dtos/{query-auth-role.dto.ts.hbs → query-auth-permission.dto.ts.hbs} +0 -0
|
@@ -1,19 +1,95 @@
|
|
|
1
|
-
import { ArkosRouter
|
|
2
|
-
{{#if authentication}}
|
|
3
|
-
import userPolicy from
|
|
4
|
-
|
|
5
|
-
export const hook{{#if typescript}}: RouteHook{{/if}} = {
|
|
6
|
-
createOne: { authentication: userPolicy.Create },
|
|
7
|
-
findMany: { authentication: userPolicy.View },
|
|
8
|
-
findOne: { authentication: userPolicy.View },
|
|
9
|
-
updateOne: { authentication: userPolicy.Update },
|
|
10
|
-
deleteOne: { authentication: userPolicy.Delete },
|
|
11
|
-
};
|
|
1
|
+
import { ArkosRouter, ArkosRouteHook } from 'arkos';
|
|
2
|
+
{{#if (neq authentication.type "none")}}
|
|
3
|
+
import userPolicy from '@/src/modules/user/user.policy';
|
|
12
4
|
{{/if}}
|
|
5
|
+
{{#if validation.type}}
|
|
6
|
+
import CreateUserDto from '@/src/modules/user/dtos/create-user.dto';
|
|
7
|
+
import UpdateUserDto from '@/src/modules/user/dtos/update-user.dto';
|
|
8
|
+
{{/if}}
|
|
9
|
+
|
|
10
|
+
const userRouteHook = ArkosRouteHook("user");
|
|
11
|
+
|
|
12
|
+
userRouteHook.createOne({
|
|
13
|
+
{{#if validation.type}}validation: { body: CreateUserDto },{{/if}}
|
|
14
|
+
{{#if (neq authentication.type "none")}}authentication: userPolicy.Create,{{/if}}
|
|
15
|
+
prismaArgs: {
|
|
16
|
+
omit: { password: true },
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
userRouteHook.findOne({
|
|
21
|
+
{{#if (neq authentication.type "none")}}authentication: userPolicy.View,{{/if}}
|
|
22
|
+
prismaArgs: {
|
|
23
|
+
omit: { password: true },
|
|
24
|
+
{{#if (eq authentication.type "dynamic")}}
|
|
25
|
+
include: {
|
|
26
|
+
{{#if authentication.multipleRoles}}
|
|
27
|
+
roles: {
|
|
28
|
+
include: {
|
|
29
|
+
role: {
|
|
30
|
+
include: {
|
|
31
|
+
permissions: true,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{{else}}
|
|
37
|
+
role: {
|
|
38
|
+
include: {
|
|
39
|
+
role: {
|
|
40
|
+
include: {
|
|
41
|
+
permissions: true,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{{/if}}
|
|
47
|
+
},
|
|
48
|
+
{{/if}}
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
userRouteHook.findMany({
|
|
53
|
+
{{#if (neq authentication.type "none")}}authentication: userPolicy.View,{{/if}}
|
|
54
|
+
prismaArgs: {
|
|
55
|
+
omit: { password: true },
|
|
56
|
+
{{#if (eq authentication.type "dynamic")}}
|
|
57
|
+
include: {
|
|
58
|
+
{{#if authentication.multipleRoles}}
|
|
59
|
+
roles: {
|
|
60
|
+
include: {
|
|
61
|
+
role: true,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{{else}}
|
|
65
|
+
role: {
|
|
66
|
+
include: {
|
|
67
|
+
role: true,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{{/if}}
|
|
71
|
+
},
|
|
72
|
+
{{/if}}
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
userRouteHook.updateOne({
|
|
77
|
+
{{#if validation.type}}validation: { body: UpdateUserDto },{{/if}}
|
|
78
|
+
{{#if (neq authentication.type "none")}}authentication: userPolicy.Update,{{/if}}
|
|
79
|
+
prismaArgs: {
|
|
80
|
+
omit: { password: true },
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
userRouteHook.deleteOne({
|
|
85
|
+
{{#if (neq authentication.type "none")}}authentication: userPolicy.Delete,{{/if}}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const userRouter = ArkosRouter({
|
|
89
|
+
prefix: "/users",
|
|
90
|
+
openapi: { tags: ["Users"] },
|
|
91
|
+
});
|
|
13
92
|
|
|
14
|
-
|
|
15
|
-
prefix: "/users",
|
|
16
|
-
openapi: { tags: ["Users"] }
|
|
17
|
-
});
|
|
93
|
+
userRouter.load(userRouteHook);
|
|
18
94
|
|
|
19
95
|
export default userRouter;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ArkosRouter } from "arkos";
|
|
2
|
-
import arkosConfig from "@/arkos.config";
|
|
3
2
|
import fileUploadRouter from "@/src/modules/file-upload/file-upload.router";
|
|
4
|
-
{{#if authentication.type}}
|
|
3
|
+
{{#if (neq authentication.type "none")}}
|
|
5
4
|
import authRouter from "@/src/modules/auth/auth.router";
|
|
6
5
|
import userRouter from "@/src/modules/user/user.router";
|
|
7
6
|
{{/if}}
|
|
@@ -10,12 +9,10 @@ import authRoleRouter from "@/src/modules/auth-role/auth-role.router";
|
|
|
10
9
|
import authPermissionRouter from "@/src/modules/auth-permission/auth-permission.router";
|
|
11
10
|
{{/if}}
|
|
12
11
|
|
|
13
|
-
const router = ArkosRouter(
|
|
14
|
-
prefix: arkosConfig.globalPrefix || "/api",
|
|
15
|
-
})
|
|
12
|
+
const router = ArkosRouter();
|
|
16
13
|
|
|
17
14
|
router.use(fileUploadRouter);
|
|
18
|
-
{{#if authentication.type}}
|
|
15
|
+
{{#if (neq authentication.type "none")}}
|
|
19
16
|
router.use(userRouter);
|
|
20
17
|
router.use(authRouter);
|
|
21
18
|
{{/if}}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{{#if typescript}}
|
|
2
|
-
import { ArkosLoadable } from "arkos";
|
|
3
|
-
{{/if}}
|
|
4
|
-
import fileUploadRouteHook from "@/src/modules/file-upload/file-upload.route-hook";
|
|
5
|
-
{{#if authentication.type}}
|
|
6
|
-
import userRouteHook from "@/src/modules/user/user.route-hook";
|
|
7
|
-
import authRouteHook from "@/src/modules/auth/auth.route-hook";
|
|
8
|
-
{{/if}}
|
|
9
|
-
{{#if (eq authentication.type "dynamic")}}
|
|
10
|
-
import authRoleRouteHook from "@/src/modules/auth-role/auth-role.route-hook";
|
|
11
|
-
import authPermissionRouteHook from "@/src/modules/auth-permission/auth-permission.route-hook";
|
|
12
|
-
{{/if}}
|
|
13
|
-
|
|
14
|
-
{{#if typescript}}
|
|
15
|
-
{{else}}
|
|
16
|
-
/** @type import("arkos").ArkosLoadable */
|
|
17
|
-
{{/if}}
|
|
18
|
-
const loadables{{#if typescript}}: ArkosLoadable[]{{/if}} = [
|
|
19
|
-
fileUploadRouteHook,
|
|
20
|
-
{{#if authentication.type}}
|
|
21
|
-
userRouteHook,
|
|
22
|
-
authRouteHook,
|
|
23
|
-
{{/if}}
|
|
24
|
-
{{#if (eq authentication.type "dynamic")}}
|
|
25
|
-
authRoleRouteHook,
|
|
26
|
-
authPermissionRouteHook,
|
|
27
|
-
{{/if}}
|
|
28
|
-
]
|
|
29
|
-
export default loadables;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { ArkosRouteHook } from 'arkos';
|
|
2
|
-
{{#if validation.type}}
|
|
3
|
-
import LoginDto from '@/src/modules/auth/dtos/login.dto';
|
|
4
|
-
import SignupDto from '@/src/modules/auth/dtos/signup.dto';
|
|
5
|
-
import UpdateMeDto from '@/src/modules/auth/dtos/update-me.dto';
|
|
6
|
-
import UpdatePasswordDto from '@/src/modules/auth/dtos/update-password.dto';
|
|
7
|
-
{{/if}}
|
|
8
|
-
|
|
9
|
-
const authRouteHook = ArkosRouteHook("auth");
|
|
10
|
-
|
|
11
|
-
authRouteHook.login({
|
|
12
|
-
{{#if validation.type}}validation: { body: LoginDto },{{/if}}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
authRouteHook.signup({
|
|
16
|
-
{{#if validation.type}}validation: { body: SignupDto },{{/if}}
|
|
17
|
-
prismaArgs: {
|
|
18
|
-
omit: { password: true },
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
authRouteHook.getMe({
|
|
23
|
-
prismaArgs: {
|
|
24
|
-
omit: { password: true },
|
|
25
|
-
{{#if (eq authentication.type "dynamic")}}
|
|
26
|
-
include: {
|
|
27
|
-
{{#if authentication.multipleRoles}}
|
|
28
|
-
roles: {
|
|
29
|
-
include: {
|
|
30
|
-
role: {
|
|
31
|
-
include: {
|
|
32
|
-
permissions: true,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
{{else}}
|
|
38
|
-
role: {
|
|
39
|
-
include: {
|
|
40
|
-
role: {
|
|
41
|
-
include: {
|
|
42
|
-
permissions: true,
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
{{/if}}
|
|
48
|
-
},
|
|
49
|
-
{{/if}}
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
authRouteHook.updateMe({
|
|
54
|
-
{{#if validation.type}}validation: { body: UpdateMeDto },{{/if}}
|
|
55
|
-
prismaArgs: {
|
|
56
|
-
omit: { password: true },
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
authRouteHook.updatePassword({
|
|
61
|
-
{{#if validation.type}}validation: { body: UpdatePasswordDto },{{/if}}
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
authRouteHook.logout({});
|
|
65
|
-
|
|
66
|
-
export default authRouteHook;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ArkosRouteHook } from 'arkos';
|
|
2
|
-
{{#if authentication}}
|
|
3
|
-
import authPermissionPolicy from '@/src/modules/auth-permission/auth-permission.policy';
|
|
4
|
-
{{/if}}
|
|
5
|
-
{{#if validation.type}}
|
|
6
|
-
import CreateAuthPermissionDto from '@/src/modules/auth-permission/dtos/create-auth-permission.dto';
|
|
7
|
-
import UpdateAuthPermissionDto from '@/src/modules/auth-permission/dtos/update-auth-permission.dto';
|
|
8
|
-
import QueryAuthPermissionDto from '@/src/modules/auth-permission/dtos/query-auth-permission.dto';
|
|
9
|
-
{{/if}}
|
|
10
|
-
const authPermissionRouteHook = ArkosRouteHook("auth-permission");
|
|
11
|
-
|
|
12
|
-
authPermissionRouteHook.createOne({
|
|
13
|
-
{{#if validation.type}}validation: { body: CreateAuthPermissionDto },{{/if}}
|
|
14
|
-
{{#if authentication}}authentication: authPermissionPolicy.Create,{{/if}}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
authPermissionRouteHook.findOne({
|
|
18
|
-
{{#if authentication}}authentication: authPermissionPolicy.View,{{/if}}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
authPermissionRouteHook.findMany({
|
|
22
|
-
{{#if validation.type}}validation: { query: QueryAuthPermissionDto },{{/if}}
|
|
23
|
-
{{#if authentication}}authentication: authPermissionPolicy.View,{{/if}}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
authPermissionRouteHook.updateOne({
|
|
27
|
-
{{#if validation.type}}validation: { body: UpdateAuthPermissionDto },{{/if}}
|
|
28
|
-
{{#if authentication}}authentication: authPermissionPolicy.Update,{{/if}}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
authPermissionRouteHook.deleteOne({
|
|
32
|
-
{{#if authentication}}authentication: authPermissionPolicy.Delete,{{/if}}
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
export default authPermissionRouteHook;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ArkosRouteHook } from 'arkos';
|
|
2
|
-
{{#if authentication}}
|
|
3
|
-
import authRolePolicy from '@/src/modules/auth-role/auth-role.policy';
|
|
4
|
-
{{/if}}
|
|
5
|
-
{{#if validation.type}}
|
|
6
|
-
import CreateAuthRoleDto from '@/src/modules/auth-role/dtos/create-auth-role.dto';
|
|
7
|
-
import UpdateAuthRoleDto from '@/src/modules/auth-role/dtos/update-auth-role.dto';
|
|
8
|
-
import QueryAuthRoleDto from '@/src/modules/auth-role/dtos/query-auth-role.dto';
|
|
9
|
-
{{/if}}
|
|
10
|
-
const authRoleRouteHook = ArkosRouteHook("auth-role");
|
|
11
|
-
|
|
12
|
-
authRoleRouteHook.createOne({
|
|
13
|
-
{{#if validation.type}}validation: { body: CreateAuthRoleDto },{{/if}}
|
|
14
|
-
{{#if authentication}}authentication: authRolePolicy.Create,{{/if}}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
authRoleRouteHook.findOne({
|
|
18
|
-
{{#if authentication}}authentication: authRolePolicy.View,{{/if}}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
authRoleRouteHook.findMany({
|
|
22
|
-
{{#if validation.type}}validation: { query: QueryAuthRoleDto },{{/if}}
|
|
23
|
-
{{#if authentication}}authentication: authRolePolicy.View,{{/if}}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
authRoleRouteHook.updateOne({
|
|
27
|
-
{{#if validation.type}}validation: { body: UpdateAuthRoleDto },{{/if}}
|
|
28
|
-
{{#if authentication}}authentication: authRolePolicy.Update,{{/if}}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
authRoleRouteHook.deleteOne({
|
|
32
|
-
{{#if authentication}}authentication: authRolePolicy.Delete,{{/if}}
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
export default authRoleRouteHook;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ArkosRouteHook } from 'arkos';
|
|
2
|
-
{{#if authentication}}
|
|
3
|
-
import fileUploadPolicy from '@/src/modules/file-upload/file-upload.policy';
|
|
4
|
-
{{/if}}
|
|
5
|
-
const fileUploadRouteHook = ArkosRouteHook("file-upload");
|
|
6
|
-
|
|
7
|
-
fileUploadRouteHook.findFile({
|
|
8
|
-
{{#if authentication}}authentication: fileUploadPolicy.View,{{/if}}
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
fileUploadRouteHook.uploadFile({
|
|
12
|
-
{{#if authentication}}authentication: fileUploadPolicy.Create,{{/if}}
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
fileUploadRouteHook.updateFile({
|
|
16
|
-
{{#if authentication}}authentication: fileUploadPolicy.Update,{{/if}}
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
fileUploadRouteHook.deleteFile({
|
|
20
|
-
{{#if authentication}}authentication: fileUploadPolicy.Delete,{{/if}}
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
export default fileUploadRouteHook;
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { ArkosRouteHook } from 'arkos';
|
|
2
|
-
{{#if authentication}}
|
|
3
|
-
import userPolicy from '@/src/modules/user/user.policy';
|
|
4
|
-
{{/if}}
|
|
5
|
-
{{#if validation.type}}
|
|
6
|
-
import CreateUserDto from '@/src/modules/user/dtos/create-user.dto';
|
|
7
|
-
import UpdateUserDto from '@/src/modules/user/dtos/update-user.dto';
|
|
8
|
-
{{/if}}
|
|
9
|
-
|
|
10
|
-
const userRouteHook = ArkosRouteHook("user");
|
|
11
|
-
|
|
12
|
-
userRouteHook.createOne({
|
|
13
|
-
{{#if validation.type}}validation: { body: CreateUserDto },{{/if}}
|
|
14
|
-
{{#if authentication}}authentication: userPolicy.Create,{{/if}}
|
|
15
|
-
prismaArgs: {
|
|
16
|
-
omit: { password: true },
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
userRouteHook.findOne({
|
|
21
|
-
{{#if authentication}}authentication: userPolicy.View,{{/if}}
|
|
22
|
-
prismaArgs: {
|
|
23
|
-
omit: { password: true },
|
|
24
|
-
{{#if (eq authentication.type "dynamic")}}
|
|
25
|
-
include: {
|
|
26
|
-
{{#if authentication.multipleRoles}}
|
|
27
|
-
roles: {
|
|
28
|
-
include: {
|
|
29
|
-
role: {
|
|
30
|
-
include: {
|
|
31
|
-
permissions: true,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
{{else}}
|
|
37
|
-
role: {
|
|
38
|
-
include: {
|
|
39
|
-
role: {
|
|
40
|
-
include: {
|
|
41
|
-
permissions: true,
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
{{/if}}
|
|
47
|
-
},
|
|
48
|
-
{{/if}}
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
userRouteHook.findMany({
|
|
53
|
-
{{#if authentication}}authentication: userPolicy.View,{{/if}}
|
|
54
|
-
prismaArgs: {
|
|
55
|
-
omit: { password: true },
|
|
56
|
-
{{#if (eq authentication.type "dynamic")}}
|
|
57
|
-
include: {
|
|
58
|
-
{{#if authentication.multipleRoles}}
|
|
59
|
-
roles: {
|
|
60
|
-
include: {
|
|
61
|
-
role: true,
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{{else}}
|
|
65
|
-
role: {
|
|
66
|
-
include: {
|
|
67
|
-
role: true,
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
{{/if}}
|
|
71
|
-
},
|
|
72
|
-
{{/if}}
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
userRouteHook.updateOne({
|
|
77
|
-
{{#if validation.type}}validation: { body: UpdateUserDto },{{/if}}
|
|
78
|
-
{{#if authentication}}authentication: userPolicy.Update,{{/if}}
|
|
79
|
-
prismaArgs: {
|
|
80
|
-
omit: { password: true },
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
userRouteHook.deleteOne({
|
|
85
|
-
{{#if authentication}}authentication: userPolicy.Delete,{{/if}}
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
export default userRouteHook;
|