@hedhog/admin 0.51.45 → 0.51.47

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.
Files changed (48) hide show
  1. package/dist/auth/auth.controller.d.ts +1 -19
  2. package/dist/auth/auth.controller.d.ts.map +1 -1
  3. package/dist/auth/auth.controller.js +0 -44
  4. package/dist/auth/auth.controller.js.map +1 -1
  5. package/dist/auth/auth.service.d.ts +9 -24
  6. package/dist/auth/auth.service.d.ts.map +1 -1
  7. package/dist/auth/auth.service.js +17 -101
  8. package/dist/auth/auth.service.js.map +1 -1
  9. package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +11 -11
  10. package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +11 -11
  11. package/dist/dashboard/dashboard-user/dashboard-user.controller.d.ts +3 -3
  12. package/dist/dashboard/dashboard-user/dashboard-user.service.d.ts +3 -3
  13. package/dist/menu/menu.controller.d.ts +3 -3
  14. package/dist/menu/menu.service.d.ts +3 -3
  15. package/frontend/dashboard/components/create-panel.tsx.ejs +63 -63
  16. package/frontend/dashboard/components/dashboard.screen.tsx.ejs +116 -116
  17. package/frontend/dashboard/components/update-panel.tsx.ejs +80 -80
  18. package/frontend/dashboard/locales/en/dashboard.dashboard.json +11 -11
  19. package/frontend/dashboard/locales/pt/dashboard.dashboard.json +11 -11
  20. package/frontend/dashboard/react-query/handlers.ts.ejs +28 -28
  21. package/frontend/dashboard/react-query/requests.ts.ejs +56 -56
  22. package/frontend/dashboard-component/components/create-panel.tsx.ejs +130 -130
  23. package/frontend/dashboard-component/components/update-panel.tsx.ejs +164 -164
  24. package/frontend/dashboard-component/locales/en/dashboard.dashboard-component.json +11 -11
  25. package/frontend/dashboard-component/locales/pt/dashboard.dashboard-component.json +11 -11
  26. package/frontend/dashboard-component/react-query/handlers.ts.ejs +28 -28
  27. package/frontend/dashboard-component/react-query/requests.ts.ejs +61 -61
  28. package/frontend/dashboard-item/components/create-panel.tsx.ejs +108 -108
  29. package/frontend/dashboard-item/components/update-panel.tsx.ejs +141 -141
  30. package/frontend/dashboard-item/locales/en/dashboard.dashboard-item.json +11 -11
  31. package/frontend/dashboard-item/locales/pt/dashboard.dashboard-item.json +11 -11
  32. package/frontend/dashboard-item/react-query/handlers.ts.ejs +28 -28
  33. package/frontend/dashboard-item/react-query/requests.ts.ejs +58 -58
  34. package/frontend/dashboard-user/components/create-panel.tsx.ejs +108 -108
  35. package/frontend/dashboard-user/components/update-panel.tsx.ejs +137 -137
  36. package/frontend/dashboard-user/locales/en/dashboard.dashboard-user.json +11 -11
  37. package/frontend/dashboard-user/locales/pt/dashboard.dashboard-user.json +11 -11
  38. package/frontend/dashboard-user/react-query/handlers.ts.ejs +28 -28
  39. package/frontend/dashboard-user/react-query/requests.ts.ejs +58 -58
  40. package/package.json +1 -1
  41. package/src/auth/auth.controller.ts +1 -26
  42. package/src/auth/auth.service.ts +14 -118
  43. package/src/dashboard/dashboard-component/dashboard-component.controller.ts +55 -55
  44. package/src/dashboard/dashboard-component/dto/create.dto.ts +36 -36
  45. package/src/dashboard/dashboard-component/dto/update.dto.ts +4 -4
  46. package/src/dashboard/dashboard-item/dto/update.dto.ts +4 -4
  47. package/src/dashboard/dashboard-user/dto/update.dto.ts +4 -4
  48. package/src/dashboard/index.ts +1 -1
@@ -1,28 +1,28 @@
1
- import { useDefaultMutation } from "@/hooks/use-default-mutation";
2
- import { useQuery } from "@tanstack/react-query";
3
- import { requests } from "./requests";
4
-
5
- const scope = "dashboard-user";
6
-
7
- export function useDashboardUserCreate() {
8
- const { dashboardUserCreate } = requests();
9
- return useDefaultMutation(scope, "create", dashboardUserCreate);
10
- }
11
-
12
- export function useDashboardUserDelete() {
13
- const { dashboardUserDelete } = requests();
14
- return useDefaultMutation(scope, "delete", dashboardUserDelete);
15
- }
16
-
17
- export function useDashboardUserUpdate() {
18
- const { dashboardUserUpdate } = requests();
19
- return useDefaultMutation(scope, "update", dashboardUserUpdate);
20
- }
21
-
22
- export function useDashboardUserGet(id: number) {
23
- const { dashboardUserGet } = requests();
24
- return useQuery({
25
- queryKey: [scope, "get"],
26
- queryFn: () => dashboardUserGet(id),
27
- });
28
- }
1
+ import { useDefaultMutation } from "@/hooks/use-default-mutation";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { requests } from "./requests";
4
+
5
+ const scope = "dashboard-user";
6
+
7
+ export function useDashboardUserCreate() {
8
+ const { dashboardUserCreate } = requests();
9
+ return useDefaultMutation(scope, "create", dashboardUserCreate);
10
+ }
11
+
12
+ export function useDashboardUserDelete() {
13
+ const { dashboardUserDelete } = requests();
14
+ return useDefaultMutation(scope, "delete", dashboardUserDelete);
15
+ }
16
+
17
+ export function useDashboardUserUpdate() {
18
+ const { dashboardUserUpdate } = requests();
19
+ return useDefaultMutation(scope, "update", dashboardUserUpdate);
20
+ }
21
+
22
+ export function useDashboardUserGet(id: number) {
23
+ const { dashboardUserGet } = requests();
24
+ return useQuery({
25
+ queryKey: [scope, "get"],
26
+ queryFn: () => dashboardUserGet(id),
27
+ });
28
+ }
@@ -1,58 +1,58 @@
1
- import { useApp } from "@/hooks/use-app";
2
- import { Delete, PaginationParams, PaginationResult } from "@/types";
3
- import { DashboardUser } from "@/types/models";
4
- import { HttpMethod } from "@/types/http-method";
5
-
6
- export function requests() {
7
- const { request } = useApp();
8
-
9
- const dashboardUserList = async (params: PaginationParams) => {
10
- return request<PaginationResult<DashboardUser>>({
11
- url: "/dashboard-user",
12
- params,
13
- }).then((res) => res.data);
14
- };
15
-
16
- const dashboardUserGet = async (id: number) => {
17
- return request<DashboardUser>({
18
- url: `/dashboard-user/${id}`,
19
- }).then((res) => res.data);
20
- };
21
-
22
- const dashboardUserCreate = async (params: { data: DashboardUser }) => {
23
- const { data } = params;
24
- return request<DashboardUser>({
25
- url: "/dashboard-user",
26
- method: HttpMethod.POST,
27
- data: data,
28
- }).then((res) => res.data);
29
- };
30
-
31
- const dashboardUserDelete = async (ids: number[]) => {
32
- return request<Delete>({
33
- url: "/dashboard-user",
34
- data: { ids },
35
- method: HttpMethod.DELETE,
36
- }).then((res) => res.data);
37
- };
38
-
39
- const dashboardUserUpdate = async (params: {
40
- id: number;
41
- data: DashboardUser;
42
- }) => {
43
- const { id, data } = params;
44
- return request<DashboardUser>({
45
- url: `/dashboard-user/${id}`,
46
- method: HttpMethod.PATCH,
47
- data: data,
48
- }).then((res) => res.data);
49
- };
50
-
51
- return {
52
- dashboardUserCreate,
53
- dashboardUserUpdate,
54
- dashboardUserDelete,
55
- dashboardUserList,
56
- dashboardUserGet,
57
- };
58
- }
1
+ import { useApp } from "@/hooks/use-app";
2
+ import { Delete, PaginationParams, PaginationResult } from "@/types";
3
+ import { DashboardUser } from "@/types/models";
4
+ import { HttpMethod } from "@/types/http-method";
5
+
6
+ export function requests() {
7
+ const { request } = useApp();
8
+
9
+ const dashboardUserList = async (params: PaginationParams) => {
10
+ return request<PaginationResult<DashboardUser>>({
11
+ url: "/dashboard-user",
12
+ params,
13
+ }).then((res) => res.data);
14
+ };
15
+
16
+ const dashboardUserGet = async (id: number) => {
17
+ return request<DashboardUser>({
18
+ url: `/dashboard-user/${id}`,
19
+ }).then((res) => res.data);
20
+ };
21
+
22
+ const dashboardUserCreate = async (params: { data: DashboardUser }) => {
23
+ const { data } = params;
24
+ return request<DashboardUser>({
25
+ url: "/dashboard-user",
26
+ method: HttpMethod.POST,
27
+ data: data,
28
+ }).then((res) => res.data);
29
+ };
30
+
31
+ const dashboardUserDelete = async (ids: number[]) => {
32
+ return request<Delete>({
33
+ url: "/dashboard-user",
34
+ data: { ids },
35
+ method: HttpMethod.DELETE,
36
+ }).then((res) => res.data);
37
+ };
38
+
39
+ const dashboardUserUpdate = async (params: {
40
+ id: number;
41
+ data: DashboardUser;
42
+ }) => {
43
+ const { id, data } = params;
44
+ return request<DashboardUser>({
45
+ url: `/dashboard-user/${id}`,
46
+ method: HttpMethod.PATCH,
47
+ data: data,
48
+ }).then((res) => res.data);
49
+ };
50
+
51
+ return {
52
+ dashboardUserCreate,
53
+ dashboardUserUpdate,
54
+ dashboardUserDelete,
55
+ dashboardUserList,
56
+ dashboardUserGet,
57
+ };
58
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hedhog/admin",
3
- "version": "0.51.45",
3
+ "version": "0.51.47",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -9,7 +9,6 @@ import {
9
9
  Inject,
10
10
  Post,
11
11
  Query,
12
- Res,
13
12
  } from '@nestjs/common';
14
13
  import { AuthService } from './auth.service';
15
14
  import { ChangeDTO } from './dto/change.dto';
@@ -27,7 +26,7 @@ export class AuthController {
27
26
  constructor(
28
27
  @Inject(forwardRef(() => AuthService))
29
28
  private readonly service: AuthService,
30
- ) { }
29
+ ) {}
31
30
 
32
31
  @Public()
33
32
  @Get('create-user')
@@ -151,28 +150,4 @@ export class AuthController {
151
150
  async verifyMfa(@Body() { token, email }: { token: string; email: string }) {
152
151
  return this.service.verifyMfa(email, token, false);
153
152
  }
154
-
155
- @Public()
156
- @Get('google/login')
157
- async loginGoogle(@Res() res) {
158
- return this.service.loginGoogle(res);
159
- }
160
-
161
- @Public()
162
- @Get('google/callback')
163
- async callbackGoogle(@Query() { code }: { code: string }) {
164
- return this.service.callbackGoogle(code);
165
- }
166
-
167
- @Public()
168
- @Get('facebook/login')
169
- async loginFacebook(@Res() res) {
170
- return this.service.loginFacebook(res);
171
- }
172
-
173
- @Public()
174
- @Get('facebook/callback')
175
- async callbackFacebook(@Query() { code }: { code: string }) {
176
- return this.service.callbackFacebook(code);
177
- }
178
153
  }
@@ -1,6 +1,5 @@
1
1
  import { MailService as MailManagerService } from '@hedhog/mail-manager';
2
2
  import { PrismaService } from '@hedhog/prisma';
3
- import { HttpService } from '@nestjs/axios';
4
3
  import {
5
4
  BadRequestException,
6
5
  ConflictException,
@@ -13,8 +12,8 @@ import {
13
12
  import { ConfigService } from '@nestjs/config';
14
13
  import { JwtService } from '@nestjs/jwt';
15
14
  import { compare, genSalt, hash } from 'bcrypt';
15
+ import { randomBytes } from 'crypto';
16
16
  import * as qrcode from 'qrcode';
17
- import { lastValueFrom } from 'rxjs';
18
17
  import * as speakeasy from 'speakeasy';
19
18
  import { SettingService } from '../setting/setting.service';
20
19
  import { ChangeDTO } from './dto/change.dto';
@@ -32,7 +31,6 @@ export class AuthService implements OnModuleInit {
32
31
  public settings: Record<string, any> = {};
33
32
 
34
33
  constructor(
35
- private readonly httpService: HttpService,
36
34
  private readonly configService: ConfigService,
37
35
  @Inject(forwardRef(() => PrismaService))
38
36
  private readonly prisma: PrismaService,
@@ -42,7 +40,7 @@ export class AuthService implements OnModuleInit {
42
40
  private readonly mail: MailManagerService,
43
41
  @Inject(forwardRef(() => SettingService))
44
42
  private readonly setting: SettingService,
45
- ) { }
43
+ ) {}
46
44
 
47
45
  async onModuleInit() {
48
46
  this.settings = await this.setting.getSettingValues([
@@ -222,6 +220,10 @@ export class AuthService implements OnModuleInit {
222
220
  return Math.floor(Math.random() * (max - min + 1)) + min;
223
221
  }
224
222
 
223
+ generateRandomPassword(length = 12) {
224
+ return randomBytes(length).toString('base64').slice(0, length);
225
+ }
226
+
225
227
  async loginWithEmailAndPassword(
226
228
  locale: string,
227
229
  email: string,
@@ -230,6 +232,10 @@ export class AuthService implements OnModuleInit {
230
232
  const user = await this.prisma.user.findFirst({
231
233
  where: {
232
234
  email,
235
+ password: {
236
+ not: null,
237
+ notIn: [''],
238
+ },
233
239
  },
234
240
  });
235
241
 
@@ -242,6 +248,10 @@ export class AuthService implements OnModuleInit {
242
248
  throw new BadRequestException('Acesso negado');
243
249
  }
244
250
 
251
+ return this.userMfaSteps(user, locale);
252
+ }
253
+
254
+ async userMfaSteps(user, locale = 'pt') {
245
255
  if (!user.multifactor_id) {
246
256
  return this.getToken(user);
247
257
  } else {
@@ -783,118 +793,4 @@ export class AuthService implements OnModuleInit {
783
793
 
784
794
  return { ...newToken, codes };
785
795
  }
786
-
787
- async loginGoogle(res: any) {
788
- const redirectURI = new URL('/callback/google', this.settings['url']).toString();
789
- const params = new URLSearchParams({
790
- client_id: this.settings['google_client_id'],
791
- redirect_uri: redirectURI,
792
- response_type: 'code',
793
- scope: Array.isArray(this.settings['google_scopes'])
794
- ? this.settings['google_scopes'].join(' ')
795
- : String(this.settings['google_scopes']),
796
- });
797
- console.log('loginGoogle', params)
798
- return res.redirect(`https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`);
799
- }
800
-
801
- async callbackGoogle(code: string) {
802
- const tokenUrl = 'https://oauth2.googleapis.com/token';
803
- const profileUrl = 'https://www.googleapis.com/oauth2/v2/userinfo';
804
- const tokenResponse = await this.fetchOAuthToken({
805
- code,
806
- url: tokenUrl,
807
- clientId: this.settings['google_client_id'],
808
- clientSecret: this.settings['google_client_secret'],
809
- redirectUri: `${this.settings['url']}/callback/google`,
810
- });
811
- const profile = await this.fetchOAuthProfile(tokenResponse.access_token, profileUrl);
812
- const user = await this.findOrCreateUser(profile);
813
- return this.getToken(user);
814
- }
815
-
816
- async loginFacebook(res: any) {
817
- const redirectURI = new URL('/callback/facebook', this.settings['url']).toString();
818
- const params = new URLSearchParams({
819
- client_id: this.settings['facebook_client_id'],
820
- redirect_uri: redirectURI,
821
- response_type: 'code',
822
- scope: Array.isArray(this.settings['facebook_scopes'])
823
- ? this.settings['facebook_scopes'].join(',')
824
- : String(this.settings['facebook_scopes'] ?? 'email'),
825
- auth_type: 'rerequest',
826
- });
827
- console.log('loginFacebook', params);
828
- return res.redirect(`https://www.facebook.com/v17.0/dialog/oauth?${params.toString()}`);
829
- }
830
-
831
- async callbackFacebook(code: string) {
832
- const tokenUrl = 'https://graph.facebook.com/v17.0/oauth/access_token';
833
- const profileUrl = 'https://graph.facebook.com/me?fields=id,name,email';
834
- const tokenResponse = await this.fetchOAuthToken({
835
- code,
836
- url: tokenUrl,
837
- clientId: this.settings['facebook_client_id'],
838
- clientSecret: this.settings['facebook_client_secret'],
839
- redirectUri: `${this.settings['url']}/callback/facebook`,
840
- });
841
- const profile = await this.fetchOAuthProfile(tokenResponse.access_token, profileUrl);
842
- const user = await this.findOrCreateUser(profile);
843
- return this.getToken(user);
844
- }
845
-
846
- private async fetchOAuthToken({
847
- code,
848
- url,
849
- clientId,
850
- clientSecret,
851
- redirectUri,
852
- }: {
853
- code: string;
854
- url: string;
855
- clientId: string;
856
- clientSecret: string;
857
- redirectUri: string;
858
- }) {
859
- const body = new URLSearchParams({
860
- client_id: clientId,
861
- client_secret: clientSecret,
862
- redirect_uri: redirectUri,
863
- grant_type: 'authorization_code',
864
- code,
865
- }).toString();
866
-
867
- const response = await lastValueFrom(
868
- this.httpService.post(url, body, {
869
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
870
- }),
871
- );
872
- return response.data;
873
- }
874
-
875
- private async fetchOAuthProfile(accessToken: string, url: string) {
876
- const response = await lastValueFrom(
877
- this.httpService.get(url, {
878
- headers: { Authorization: `Bearer ${accessToken}` },
879
- }),
880
- );
881
- return response.data;
882
- }
883
-
884
- private async findOrCreateUser(profile: any) {
885
- let user = await this.prisma.user.findFirst({
886
- where: { email: profile.email },
887
- });
888
- if (!user) {
889
- user = await this.prisma.user.create({
890
- data: {
891
- email: profile.email,
892
- name: profile.name,
893
- password: '',
894
- code: profile.id,
895
- },
896
- });
897
- }
898
- return user;
899
- }
900
796
  }
@@ -1,55 +1,55 @@
1
- import { Pagination } from '@hedhog/pagination';
2
- import { Locale } from '@hedhog/locale';
3
- import {
4
- Body,
5
- Controller,
6
- Delete,
7
- Get,
8
- Inject,
9
- Param,
10
- ParseIntPipe,
11
- Patch,
12
- Post,
13
- forwardRef
14
- } from '@nestjs/common';
15
- import { CreateDTO } from './dto/create.dto';
16
- import { UpdateDTO } from './dto/update.dto';
17
- import { DashboardComponentService } from './dashboard-component.service';
18
- import { Role, DeleteDTO } from '@hedhog/core';
19
-
20
- @Role()
21
- @Controller('dashboard-component')
22
- export class DashboardComponentController {
23
- constructor(
24
- @Inject(forwardRef(() => DashboardComponentService))
25
- private readonly dashboardComponentService: DashboardComponentService
26
- ) {}
27
-
28
- @Get()
29
- async list(@Locale() locale, @Pagination() paginationParams) {
30
- return this.dashboardComponentService.list(locale, paginationParams);
31
- }
32
-
33
- @Get(':id')
34
- async get(@Param('id', ParseIntPipe) id: number) {
35
- return this.dashboardComponentService.get(id);
36
- }
37
-
38
- @Post()
39
- async create(@Body() data: CreateDTO) {
40
- return this.dashboardComponentService.create(data);
41
- }
42
-
43
- @Patch(':id')
44
- async update(@Param('id', ParseIntPipe) id: number, @Body() data: UpdateDTO) {
45
- return this.dashboardComponentService.update({
46
- id,
47
- data
48
- });
49
- }
50
-
51
- @Delete()
52
- async delete(@Body() data: DeleteDTO) {
53
- return this.dashboardComponentService.delete(data);
54
- }
55
- }
1
+ import { Pagination } from '@hedhog/pagination';
2
+ import { Locale } from '@hedhog/locale';
3
+ import {
4
+ Body,
5
+ Controller,
6
+ Delete,
7
+ Get,
8
+ Inject,
9
+ Param,
10
+ ParseIntPipe,
11
+ Patch,
12
+ Post,
13
+ forwardRef
14
+ } from '@nestjs/common';
15
+ import { CreateDTO } from './dto/create.dto';
16
+ import { UpdateDTO } from './dto/update.dto';
17
+ import { DashboardComponentService } from './dashboard-component.service';
18
+ import { Role, DeleteDTO } from '@hedhog/core';
19
+
20
+ @Role()
21
+ @Controller('dashboard-component')
22
+ export class DashboardComponentController {
23
+ constructor(
24
+ @Inject(forwardRef(() => DashboardComponentService))
25
+ private readonly dashboardComponentService: DashboardComponentService
26
+ ) {}
27
+
28
+ @Get()
29
+ async list(@Locale() locale, @Pagination() paginationParams) {
30
+ return this.dashboardComponentService.list(locale, paginationParams);
31
+ }
32
+
33
+ @Get(':id')
34
+ async get(@Param('id', ParseIntPipe) id: number) {
35
+ return this.dashboardComponentService.get(id);
36
+ }
37
+
38
+ @Post()
39
+ async create(@Body() data: CreateDTO) {
40
+ return this.dashboardComponentService.create(data);
41
+ }
42
+
43
+ @Patch(':id')
44
+ async update(@Param('id', ParseIntPipe) id: number, @Body() data: UpdateDTO) {
45
+ return this.dashboardComponentService.update({
46
+ id,
47
+ data
48
+ });
49
+ }
50
+
51
+ @Delete()
52
+ async delete(@Body() data: DeleteDTO) {
53
+ return this.dashboardComponentService.delete(data);
54
+ }
55
+ }
@@ -1,36 +1,36 @@
1
- import { IsString, IsNumber, IsBoolean, IsOptional } from 'class-validator';
2
- import { WithLocaleDTO } from '@hedhog/locale';
3
-
4
- export class CreateDTO extends WithLocaleDTO {
5
- @IsString()
6
- slug: string;
7
-
8
- @IsString()
9
- path: string;
10
-
11
- @IsOptional()
12
- @IsNumber()
13
- min_width?: number;
14
-
15
- @IsOptional()
16
- @IsNumber()
17
- max_width?: number;
18
-
19
- @IsOptional()
20
- @IsNumber()
21
- min_height?: number;
22
-
23
- @IsOptional()
24
- @IsNumber()
25
- max_height?: number;
26
-
27
- @IsNumber()
28
- width: number;
29
-
30
- @IsNumber()
31
- height: number;
32
-
33
- @IsOptional()
34
- @IsBoolean()
35
- is_resizable?: boolean;
36
- }
1
+ import { IsString, IsNumber, IsBoolean, IsOptional } from 'class-validator';
2
+ import { WithLocaleDTO } from '@hedhog/locale';
3
+
4
+ export class CreateDTO extends WithLocaleDTO {
5
+ @IsString()
6
+ slug: string;
7
+
8
+ @IsString()
9
+ path: string;
10
+
11
+ @IsOptional()
12
+ @IsNumber()
13
+ min_width?: number;
14
+
15
+ @IsOptional()
16
+ @IsNumber()
17
+ max_width?: number;
18
+
19
+ @IsOptional()
20
+ @IsNumber()
21
+ min_height?: number;
22
+
23
+ @IsOptional()
24
+ @IsNumber()
25
+ max_height?: number;
26
+
27
+ @IsNumber()
28
+ width: number;
29
+
30
+ @IsNumber()
31
+ height: number;
32
+
33
+ @IsOptional()
34
+ @IsBoolean()
35
+ is_resizable?: boolean;
36
+ }
@@ -1,4 +1,4 @@
1
- import { PartialType } from '@nestjs/mapped-types';
2
- import { CreateDTO } from './create.dto';
3
-
4
- export class UpdateDTO extends PartialType(CreateDTO) {}
1
+ import { PartialType } from '@nestjs/mapped-types';
2
+ import { CreateDTO } from './create.dto';
3
+
4
+ export class UpdateDTO extends PartialType(CreateDTO) {}
@@ -1,4 +1,4 @@
1
- import { PartialType } from '@nestjs/mapped-types';
2
- import { CreateDTO } from './create.dto';
3
-
4
- export class UpdateDTO extends PartialType(CreateDTO) {}
1
+ import { PartialType } from '@nestjs/mapped-types';
2
+ import { CreateDTO } from './create.dto';
3
+
4
+ export class UpdateDTO extends PartialType(CreateDTO) {}
@@ -1,4 +1,4 @@
1
- import { PartialType } from '@nestjs/mapped-types';
2
- import { CreateDTO } from './create.dto';
3
-
4
- export class UpdateDTO extends PartialType(CreateDTO) {}
1
+ import { PartialType } from '@nestjs/mapped-types';
2
+ import { CreateDTO } from './create.dto';
3
+
4
+ export class UpdateDTO extends PartialType(CreateDTO) {}
@@ -1 +1 @@
1
- export * from './dashboard.module';
1
+ export * from './dashboard.module';