Moved dto to separate package
This commit is contained in:
		
							
								
								
									
										25
									
								
								dto/.eslintrc.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								dto/.eslintrc.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
						parser: '@typescript-eslint/parser',
 | 
				
			||||||
 | 
						parserOptions: {
 | 
				
			||||||
 | 
							project: 'tsconfig.json',
 | 
				
			||||||
 | 
							tsconfigRootDir: __dirname,
 | 
				
			||||||
 | 
							sourceType: 'module',
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						plugins: ['@typescript-eslint/eslint-plugin'],
 | 
				
			||||||
 | 
						extends: [
 | 
				
			||||||
 | 
							'plugin:@typescript-eslint/recommended',
 | 
				
			||||||
 | 
							'plugin:prettier/recommended',
 | 
				
			||||||
 | 
						],
 | 
				
			||||||
 | 
						root: true,
 | 
				
			||||||
 | 
						env: {
 | 
				
			||||||
 | 
							node: true,
 | 
				
			||||||
 | 
							jest: true,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						ignorePatterns: ['.eslintrc.js'],
 | 
				
			||||||
 | 
						rules: {
 | 
				
			||||||
 | 
							'@typescript-eslint/interface-name-prefix': 'off',
 | 
				
			||||||
 | 
							'@typescript-eslint/explicit-function-return-type': 'off',
 | 
				
			||||||
 | 
							'@typescript-eslint/explicit-module-boundary-types': 'off',
 | 
				
			||||||
 | 
							'@typescript-eslint/no-explicit-any': 'off',
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
							
								
								
									
										7
									
								
								dto/.prettierrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								dto/.prettierrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"tabWidth": 4,
 | 
				
			||||||
 | 
						"useTabs": true,
 | 
				
			||||||
 | 
						"singleQuote": true,
 | 
				
			||||||
 | 
						"trailingComma": "none",
 | 
				
			||||||
 | 
						"endOfLine": "lf"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										14
									
								
								dto/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								dto/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "name": "dto",
 | 
				
			||||||
 | 
					    "private": true,
 | 
				
			||||||
 | 
					    "version": "1.0.0",
 | 
				
			||||||
 | 
					    "main": "src/index.ts",
 | 
				
			||||||
 | 
					    "dependencies": {
 | 
				
			||||||
 | 
					        "class-transformer": "^0.5.1",
 | 
				
			||||||
 | 
					        "class-validator": "^0.13.2"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "scripts": {
 | 
				
			||||||
 | 
					        "lint": "eslint \"src/**/*.ts\" && tsc --no-emit",
 | 
				
			||||||
 | 
					        "lint-fix": "eslint \"src/**/*.ts\" --fix"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,10 +0,0 @@
 | 
				
			|||||||
import { BaseRequest } from './base';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface AuthSignUpRequest extends BaseRequest {
 | 
					 | 
				
			||||||
	username: string;
 | 
					 | 
				
			||||||
	password: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface AuthLoginRequest extends AuthSignUpRequest {
 | 
					 | 
				
			||||||
	otp?: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,2 +0,0 @@
 | 
				
			|||||||
// eslint-disable-next-line @typescript-eslint/no-empty-interface
 | 
					 | 
				
			||||||
export interface BaseRequest {}
 | 
					 | 
				
			||||||
@@ -1,12 +0,0 @@
 | 
				
			|||||||
import { BaseRequest } from './base';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export type CreateFileRequest = CreateFolderRequest;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface CreateFolderRequest extends BaseRequest {
 | 
					 | 
				
			||||||
	parent: number;
 | 
					 | 
				
			||||||
	name: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface DeleteRequest extends BaseRequest {
 | 
					 | 
				
			||||||
	node: number;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,12 +0,0 @@
 | 
				
			|||||||
export interface BaseResponse {
 | 
					 | 
				
			||||||
	statusCode: number;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface SuccessResponse extends BaseResponse {
 | 
					 | 
				
			||||||
	statusCode: 200;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export interface ErrorResponse extends BaseResponse {
 | 
					 | 
				
			||||||
	statusCode: 400 | 401 | 403;
 | 
					 | 
				
			||||||
	message?: string;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										14
									
								
								dto/src/requests/auth.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								dto/src/requests/auth.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import { BaseRequest } from './base';
 | 
				
			||||||
 | 
					import { IsEmail, IsNotEmpty } from 'class-validator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class AuthSignUpRequest extends BaseRequest {
 | 
				
			||||||
 | 
						@IsEmail()
 | 
				
			||||||
 | 
						username: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
 | 
						password: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class AuthLoginRequest extends AuthSignUpRequest {
 | 
				
			||||||
 | 
						otp?: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								dto/src/requests/base.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dto/src/requests/base.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					export class BaseRequest {}
 | 
				
			||||||
							
								
								
									
										19
									
								
								dto/src/requests/fs.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								dto/src/requests/fs.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					import { BaseRequest } from './base';
 | 
				
			||||||
 | 
					import { IsInt, IsNotEmpty, Min } from 'class-validator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export type CreateFileRequest = CreateFolderRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class CreateFolderRequest extends BaseRequest {
 | 
				
			||||||
 | 
						@IsInt()
 | 
				
			||||||
 | 
						@Min(1)
 | 
				
			||||||
 | 
						parent: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
 | 
						name: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class DeleteRequest extends BaseRequest {
 | 
				
			||||||
 | 
						@IsInt()
 | 
				
			||||||
 | 
						@Min(1)
 | 
				
			||||||
 | 
						node: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
import { BaseResponse, SuccessResponse } from './base';
 | 
					import { BaseResponse, SuccessResponse } from './base';
 | 
				
			||||||
 | 
					import { IsBase32, IsJWT, IsNotEmpty } from 'class-validator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type TfaRequiredResponse = SuccessResponse;
 | 
					export type TfaRequiredResponse = SuccessResponse;
 | 
				
			||||||
export type RemoveTfaResponse = SuccessResponse;
 | 
					export type RemoveTfaResponse = SuccessResponse;
 | 
				
			||||||
@@ -7,13 +8,21 @@ export type TfaCompletedResponse = SuccessResponse;
 | 
				
			|||||||
export type SignupResponse = SuccessResponse;
 | 
					export type SignupResponse = SuccessResponse;
 | 
				
			||||||
export type RefreshResponse = LoginResponse;
 | 
					export type RefreshResponse = LoginResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface LoginResponse extends BaseResponse {
 | 
					export class LoginResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
 | 
						@IsJWT()
 | 
				
			||||||
	jwt: string;
 | 
						jwt: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface RequestTotpTfaResponse extends BaseResponse {
 | 
					export class RequestTotpTfaResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
	qrCode: string;
 | 
						qrCode: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
 | 
						@IsBase32()
 | 
				
			||||||
	secret: string;
 | 
						secret: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										12
									
								
								dto/src/responses/base.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								dto/src/responses/base.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					export class BaseResponse {
 | 
				
			||||||
 | 
						statusCode: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class SuccessResponse extends BaseResponse {
 | 
				
			||||||
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class ErrorResponse extends BaseResponse {
 | 
				
			||||||
 | 
						statusCode: 400 | 401 | 403;
 | 
				
			||||||
 | 
						message?: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,30 +1,49 @@
 | 
				
			|||||||
import { BaseResponse, SuccessResponse } from './base';
 | 
					import { BaseResponse, SuccessResponse } from './base';
 | 
				
			||||||
 | 
					import { IsBoolean, IsInt, IsNotEmpty, Min } from 'class-validator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type UploadFileResponse = SuccessResponse;
 | 
					export type UploadFileResponse = SuccessResponse;
 | 
				
			||||||
export type DeleteResponse = SuccessResponse;
 | 
					export type DeleteResponse = SuccessResponse;
 | 
				
			||||||
export type CreateFileResponse = CreateFolderResponse;
 | 
					export type CreateFileResponse = CreateFolderResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface GetRootResponse extends BaseResponse {
 | 
					export class GetRootResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsInt()
 | 
				
			||||||
 | 
						@Min(1)
 | 
				
			||||||
	rootId: number;
 | 
						rootId: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface GetNodeResponse extends BaseResponse {
 | 
					export class GetNodeResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsInt()
 | 
				
			||||||
 | 
						@Min(1)
 | 
				
			||||||
	id: number;
 | 
						id: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
	name: string;
 | 
						name: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsBoolean()
 | 
				
			||||||
	isFile: boolean;
 | 
						isFile: boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	parent: number | null;
 | 
						parent: number | null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	children?: number[];
 | 
						children?: number[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	size?: number;
 | 
						size?: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface GetPathResponse extends BaseResponse {
 | 
					export class GetPathResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsNotEmpty()
 | 
				
			||||||
	path: string;
 | 
						path: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface CreateFolderResponse extends BaseResponse {
 | 
					export class CreateFolderResponse extends BaseResponse {
 | 
				
			||||||
	statusCode: 200;
 | 
						statusCode: 200;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsInt()
 | 
				
			||||||
 | 
						@Min(1)
 | 
				
			||||||
	id: number;
 | 
						id: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								dto/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								dto/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"compilerOptions": {
 | 
				
			||||||
 | 
							"module": "commonjs",
 | 
				
			||||||
 | 
							"declaration": false,
 | 
				
			||||||
 | 
							"removeComments": true,
 | 
				
			||||||
 | 
							"emitDecoratorMetadata": true,
 | 
				
			||||||
 | 
							"experimentalDecorators": true,
 | 
				
			||||||
 | 
							"allowSyntheticDefaultImports": true,
 | 
				
			||||||
 | 
							"target": "es2017",
 | 
				
			||||||
 | 
							"sourceMap": true,
 | 
				
			||||||
 | 
							"outDir": "./dist",
 | 
				
			||||||
 | 
							"baseUrl": "./src",
 | 
				
			||||||
 | 
							"incremental": true,
 | 
				
			||||||
 | 
							"skipLibCheck": true
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						"exclude": ["node_modules", "dist"]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								dto/yarn.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								dto/yarn.lock
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
 | 
				
			||||||
 | 
					# yarn lockfile v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class-transformer@^0.5.1:
 | 
				
			||||||
 | 
					  version "0.5.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336"
 | 
				
			||||||
 | 
					  integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class-validator@^0.13.2:
 | 
				
			||||||
 | 
					  version "0.13.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.13.2.tgz#64b031e9f3f81a1e1dcd04a5d604734608b24143"
 | 
				
			||||||
 | 
					  integrity sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    libphonenumber-js "^1.9.43"
 | 
				
			||||||
 | 
					    validator "^13.7.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					libphonenumber-js@^1.9.43:
 | 
				
			||||||
 | 
					  version "1.10.13"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.13.tgz#0b5833c7fdbf671140530d83531c6753f7e0ea3c"
 | 
				
			||||||
 | 
					  integrity sha512-b74iyWmwb4GprAUPjPkJ11GTC7KX4Pd3onpJfKxYyY8y9Rbb4ERY47LvCMEDM09WD3thiLDMXtkfDK/AX+zT7Q==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					validator@^13.7.0:
 | 
				
			||||||
 | 
					  version "13.7.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857"
 | 
				
			||||||
 | 
					  integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==
 | 
				
			||||||
		Reference in New Issue
	
	Block a user