@clairejs/server 3.4.0 → 3.5.2
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/.prettierrc +8 -8
- package/README.md +654 -643
- package/dist/common/FileOperation.d.ts +5 -5
- package/dist/common/ServerModelMetadata.d.ts +10 -10
- package/dist/common/auth/AbstractPrincipalResolver.d.ts +4 -4
- package/dist/common/auth/IPrincipal.d.ts +4 -4
- package/dist/common/constants.d.ts +1 -1
- package/dist/common/request/EndpointMetadata.d.ts +40 -40
- package/dist/common/request/HttpData.d.ts +1 -1
- package/dist/common/request/HttpEndpoint.d.ts +8 -8
- package/dist/common/request/JobData.d.ts +1 -1
- package/dist/common/request/MountedEndpointInfo.d.ts +6 -6
- package/dist/common/request/RequestOptions.d.ts +6 -6
- package/dist/common/request/SocketData.d.ts +1 -1
- package/dist/common/request/types.d.ts +1 -1
- package/dist/database/QueryOperator.d.ts +15 -15
- package/dist/database/adapter/AbstractDatabaseAdapter.d.ts +20 -20
- package/dist/database/adapter/AbstractQuery.d.ts +53 -53
- package/dist/database/adapter/DefaultSqlDatabaseAdapter.d.ts +17 -17
- package/dist/database/adapter/IQuery.d.ts +77 -77
- package/dist/database/adapter/IQueryProvider.d.ts +9 -9
- package/dist/database/adapter/aggregators.d.ts +21 -21
- package/dist/database/adapter/providers.d.ts +8 -8
- package/dist/database/decorators.d.ts +2 -2
- package/dist/database/migrator/AbstractDatabaseMigrator.d.ts +4 -4
- package/dist/database/migrator/DefaultSqlDatabaseMigrator.d.ts +27 -27
- package/dist/database/transaction/ITransaction.d.ts +10 -10
- package/dist/database/transaction/ITransactionFactory.d.ts +4 -4
- package/dist/database/transaction/ITransactionProvider.d.ts +4 -4
- package/dist/database/transaction/TransactionLink.d.ts +14 -14
- package/dist/database/transaction/TransactionObjectMetadata.d.ts +4 -4
- package/dist/database/transaction/TransactionState.d.ts +5 -5
- package/dist/database/util/transaction-provider.d.ts +1 -1
- package/dist/http/auth/AbstractHttpAuthorizationProvider.d.ts +9 -9
- package/dist/http/auth/AbstractRbacAuthProvider.d.ts +18 -18
- package/dist/http/auth/RedisRbacAuthProvider.d.ts +23 -23
- package/dist/http/auth/SocketRbacAuthProvider.d.ts +25 -25
- package/dist/http/auth/rbac.d.ts +34 -34
- package/dist/http/common/HttpRequest.d.ts +37 -37
- package/dist/http/common/HttpResponse.d.ts +25 -25
- package/dist/http/controller/AbstractHttpController.d.ts +10 -10
- package/dist/http/controller/AbstractHttpMiddleware.d.ts +5 -5
- package/dist/http/controller/AbstractHttpRequestHandler.d.ts +16 -16
- package/dist/http/controller/ControllerMetadata.d.ts +6 -6
- package/dist/http/controller/CrudHttpController.d.ts +56 -56
- package/dist/http/controller/DefaultHttpRequestHandler.d.ts +19 -19
- package/dist/http/decorators.d.ts +32 -32
- package/dist/http/file-upload/AbstractFileUploadHandler.d.ts +6 -6
- package/dist/http/file-upload/FileUploadHandler.d.ts +10 -10
- package/dist/http/file-upload/types.d.ts +3 -3
- package/dist/http/repository/AbstractRepository.d.ts +10 -10
- package/dist/http/repository/DtoRepository.d.ts +60 -60
- package/dist/http/repository/ICrudRepository.d.ts +29 -29
- package/dist/http/repository/ModelRepository.d.ts +39 -39
- package/dist/http/security/AbstractAccessCondition.d.ts +7 -7
- package/dist/http/security/access-conditions/DtoFieldValidation.d.ts +4 -4
- package/dist/http/security/access-conditions/FilterModelFieldAccessCondition.d.ts +4 -4
- package/dist/http/security/access-conditions/MaximumQueryLimit.d.ts +8 -8
- package/dist/index.d.ts +70 -69
- package/dist/index.js +1 -1
- package/dist/job/AbstractJobController.d.ts +4 -4
- package/dist/job/AbstractJobExecutor.d.ts +10 -4
- package/dist/job/AbstractJobScheduler.d.ts +8 -9
- package/dist/job/AwsJobExecutor.d.ts +8 -5
- package/dist/job/AwsJobScheduler.d.ts +5 -0
- package/dist/job/LocalJobExecutor.d.ts +8 -5
- package/dist/job/LocalJobScheduler.d.ts +21 -14
- package/dist/job/decorators.d.ts +4 -3
- package/dist/job/interfaces.d.ts +16 -16
- package/dist/logging/FileLogMedium.d.ts +13 -13
- package/dist/service/AbstractCacheService.d.ts +22 -22
- package/dist/service/AbstractFileService.d.ts +8 -8
- package/dist/service/AbstractService.d.ts +8 -8
- package/dist/socket/AbstractServerSocket.d.ts +19 -19
- package/dist/socket/AbstractServerSocketManager.d.ts +44 -42
- package/dist/socket/AbstractSocketConnectionHandler.d.ts +6 -6
- package/dist/socket/AbstractSocketController.d.ts +14 -14
- package/dist/socket/AwsSocketManager.d.ts +31 -34
- package/dist/socket/IServerSocket.d.ts +16 -16
- package/dist/socket/LocalSocketManager.d.ts +48 -42
- package/dist/system/ClaireServer.d.ts +13 -13
- package/dist/system/ExpressWrapper.d.ts +17 -17
- package/dist/system/LambdaWrapper.d.ts +19 -19
- package/dist/system/ServerGlobalStore.d.ts +5 -5
- package/dist/system/errors.d.ts +14 -14
- package/dist/system/lamba-request-mapper.d.ts +12 -12
- package/package.json +61 -61
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export declare enum NoSqlProvider {
|
|
2
|
-
MONGODB = "mongodb",
|
|
3
|
-
DYNAMODB = "dynamodb"
|
|
4
|
-
}
|
|
5
|
-
export declare enum SqlProvider {
|
|
6
|
-
MYSQL = "mysql",
|
|
7
|
-
POSTGRES = "postgres"
|
|
8
|
-
}
|
|
1
|
+
export declare enum NoSqlProvider {
|
|
2
|
+
MONGODB = "mongodb",
|
|
3
|
+
DYNAMODB = "dynamodb"
|
|
4
|
+
}
|
|
5
|
+
export declare enum SqlProvider {
|
|
6
|
+
MYSQL = "mysql",
|
|
7
|
+
POSTGRES = "postgres"
|
|
8
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { TransactionLink } from "./transaction/TransactionLink";
|
|
2
|
-
export declare const Transactional: (link: TransactionLink) => (prototype: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
1
|
+
import { TransactionLink } from "./transaction/TransactionLink";
|
|
2
|
+
export declare const Transactional: (link: TransactionLink) => (prototype: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare abstract class AbstractDatabaseMigrator {
|
|
2
|
-
abstract migrate(migrationDirectory: string): Promise<void>;
|
|
3
|
-
abstract rollback(migrationDirectory: string): Promise<void>;
|
|
4
|
-
}
|
|
1
|
+
export declare abstract class AbstractDatabaseMigrator {
|
|
2
|
+
abstract migrate(migrationDirectory: string): Promise<void>;
|
|
3
|
+
abstract rollback(migrationDirectory: string): Promise<void>;
|
|
4
|
+
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
-
import { SqlProvider } from "../adapter/providers";
|
|
3
|
-
import { AbstractDatabaseMigrator } from "./AbstractDatabaseMigrator";
|
|
4
|
-
export declare class DefaultSqlDatabaseMigrator extends AbstractDatabaseMigrator {
|
|
5
|
-
readonly cliPath: string;
|
|
6
|
-
readonly sqlProvider: SqlProvider;
|
|
7
|
-
readonly connectionString: string;
|
|
8
|
-
readonly logger: AbstractLogger;
|
|
9
|
-
private static readonly COMMENT_BLOCK_REGEX_PATTERN;
|
|
10
|
-
private static readonly MIGRATION_TEMPLATE;
|
|
11
|
-
private readonly databaseURL;
|
|
12
|
-
private readonly modelMetadata;
|
|
13
|
-
constructor(cliPath: string, sqlProvider: SqlProvider, connectionString: string, logger: AbstractLogger);
|
|
14
|
-
private getUniqueConstraintGroups;
|
|
15
|
-
private generateFieldPropertiesQuery;
|
|
16
|
-
private getUniqueConstraintUpDown;
|
|
17
|
-
private getSqlCascadeAction;
|
|
18
|
-
private getForeignKeyConstraintUpDown;
|
|
19
|
-
private getAddColumnUpDown;
|
|
20
|
-
private generateCreateTableQuery;
|
|
21
|
-
private isBooleanDiff;
|
|
22
|
-
private runProcess;
|
|
23
|
-
rollback(migrationDirectory: string): Promise<void>;
|
|
24
|
-
migrate(migrationDirectory: string): Promise<void>;
|
|
25
|
-
private remove;
|
|
26
|
-
private getLeanModelMetadata;
|
|
27
|
-
}
|
|
1
|
+
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
+
import { SqlProvider } from "../adapter/providers";
|
|
3
|
+
import { AbstractDatabaseMigrator } from "./AbstractDatabaseMigrator";
|
|
4
|
+
export declare class DefaultSqlDatabaseMigrator extends AbstractDatabaseMigrator {
|
|
5
|
+
readonly cliPath: string;
|
|
6
|
+
readonly sqlProvider: SqlProvider;
|
|
7
|
+
readonly connectionString: string;
|
|
8
|
+
readonly logger: AbstractLogger;
|
|
9
|
+
private static readonly COMMENT_BLOCK_REGEX_PATTERN;
|
|
10
|
+
private static readonly MIGRATION_TEMPLATE;
|
|
11
|
+
private readonly databaseURL;
|
|
12
|
+
private readonly modelMetadata;
|
|
13
|
+
constructor(cliPath: string, sqlProvider: SqlProvider, connectionString: string, logger: AbstractLogger);
|
|
14
|
+
private getUniqueConstraintGroups;
|
|
15
|
+
private generateFieldPropertiesQuery;
|
|
16
|
+
private getUniqueConstraintUpDown;
|
|
17
|
+
private getSqlCascadeAction;
|
|
18
|
+
private getForeignKeyConstraintUpDown;
|
|
19
|
+
private getAddColumnUpDown;
|
|
20
|
+
private generateCreateTableQuery;
|
|
21
|
+
private isBooleanDiff;
|
|
22
|
+
private runProcess;
|
|
23
|
+
rollback(migrationDirectory: string): Promise<void>;
|
|
24
|
+
migrate(migrationDirectory: string): Promise<void>;
|
|
25
|
+
private remove;
|
|
26
|
+
private getLeanModelMetadata;
|
|
27
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AbstractModel } from "@clairejs/core";
|
|
2
|
-
import { IQuery } from "../adapter/IQuery";
|
|
3
|
-
import { IQueryProvider } from "../adapter/IQueryProvider";
|
|
4
|
-
import { TransactionState } from "./TransactionState";
|
|
5
|
-
export interface ITransaction extends IQueryProvider {
|
|
6
|
-
getState(): TransactionState;
|
|
7
|
-
use<T extends AbstractModel>(model: new (...args: any[]) => T): IQuery<T>;
|
|
8
|
-
commit(): Promise<void>;
|
|
9
|
-
rollback(): Promise<void>;
|
|
10
|
-
}
|
|
1
|
+
import { AbstractModel } from "@clairejs/core";
|
|
2
|
+
import { IQuery } from "../adapter/IQuery";
|
|
3
|
+
import { IQueryProvider } from "../adapter/IQueryProvider";
|
|
4
|
+
import { TransactionState } from "./TransactionState";
|
|
5
|
+
export interface ITransaction extends IQueryProvider {
|
|
6
|
+
getState(): TransactionState;
|
|
7
|
+
use<T extends AbstractModel>(model: new (...args: any[]) => T): IQuery<T>;
|
|
8
|
+
commit(): Promise<void>;
|
|
9
|
+
rollback(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ITransaction } from "./ITransaction";
|
|
2
|
-
export interface ITransactionFactory {
|
|
3
|
-
createTransaction(): Promise<ITransaction>;
|
|
4
|
-
}
|
|
1
|
+
import { ITransaction } from "./ITransaction";
|
|
2
|
+
export interface ITransactionFactory {
|
|
3
|
+
createTransaction(): Promise<ITransaction>;
|
|
4
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ITransaction } from "./ITransaction";
|
|
2
|
-
export interface ITransactionProvider {
|
|
3
|
-
getCurrentTransaction(): Promise<ITransaction>;
|
|
4
|
-
}
|
|
1
|
+
import { ITransaction } from "./ITransaction";
|
|
2
|
+
export interface ITransactionProvider {
|
|
3
|
+
getCurrentTransaction(): Promise<ITransaction>;
|
|
4
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export declare enum TransactionLink {
|
|
2
|
-
/**
|
|
3
|
-
* Create new transaction when executing the handler function.
|
|
4
|
-
*/
|
|
5
|
-
CREATE_NEW = "create_new",
|
|
6
|
-
/**
|
|
7
|
-
* Inherit the transaction from the caller function and create if not exist.
|
|
8
|
-
*/
|
|
9
|
-
INHERIT_OR_CREATE = "inherit_or_create",
|
|
10
|
-
/**
|
|
11
|
-
* Inherit the transaction from the caller function and throw error if not existed.
|
|
12
|
-
*/
|
|
13
|
-
INHERIT_OR_THROW = "inherit_or_throw"
|
|
14
|
-
}
|
|
1
|
+
export declare enum TransactionLink {
|
|
2
|
+
/**
|
|
3
|
+
* Create new transaction when executing the handler function.
|
|
4
|
+
*/
|
|
5
|
+
CREATE_NEW = "create_new",
|
|
6
|
+
/**
|
|
7
|
+
* Inherit the transaction from the caller function and create if not exist.
|
|
8
|
+
*/
|
|
9
|
+
INHERIT_OR_CREATE = "inherit_or_create",
|
|
10
|
+
/**
|
|
11
|
+
* Inherit the transaction from the caller function and throw error if not existed.
|
|
12
|
+
*/
|
|
13
|
+
INHERIT_OR_THROW = "inherit_or_throw"
|
|
14
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ObjectMetadata } from "@clairejs/core";
|
|
2
|
-
export interface TransactionObjectMetadata extends ObjectMetadata {
|
|
3
|
-
transactional?: boolean;
|
|
4
|
-
}
|
|
1
|
+
import { ObjectMetadata } from "@clairejs/core";
|
|
2
|
+
export interface TransactionObjectMetadata extends ObjectMetadata {
|
|
3
|
+
transactional?: boolean;
|
|
4
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare enum TransactionState {
|
|
2
|
-
EXECUTING = "executing",
|
|
3
|
-
COMMITTED = "commited",
|
|
4
|
-
ROLLED_BACK = "rolled_back"
|
|
5
|
-
}
|
|
1
|
+
export declare enum TransactionState {
|
|
2
|
+
EXECUTING = "executing",
|
|
3
|
+
COMMITTED = "commited",
|
|
4
|
+
ROLLED_BACK = "rolled_back"
|
|
5
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
2
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
3
|
-
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
5
|
-
export declare abstract class AbstractHttpAuthorizationProvider<T extends IPrincipal = IPrincipal> {
|
|
6
|
-
abstract getPrincipalResolver(): AbstractPrincipalResolver<T>;
|
|
7
|
-
abstract resolvePrincipal(req: HttpRequest): Promise<T | undefined>;
|
|
8
|
-
abstract authorize(principal: T | undefined, req: HttpRequest, endpoint: MountedEndpointInfo): Promise<void>;
|
|
9
|
-
}
|
|
1
|
+
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
2
|
+
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
3
|
+
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
+
import { HttpRequest } from "../common/HttpRequest";
|
|
5
|
+
export declare abstract class AbstractHttpAuthorizationProvider<T extends IPrincipal = IPrincipal> {
|
|
6
|
+
abstract getPrincipalResolver(): AbstractPrincipalResolver<T>;
|
|
7
|
+
abstract resolvePrincipal(req: HttpRequest): Promise<T | undefined>;
|
|
8
|
+
abstract authorize(principal: T | undefined, req: HttpRequest, endpoint: MountedEndpointInfo): Promise<void>;
|
|
9
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
3
|
-
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
-
import { RbacCache } from "./rbac";
|
|
5
|
-
import { AbstractHttpAuthorizationProvider } from "./AbstractHttpAuthorizationProvider";
|
|
6
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
7
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
8
|
-
export declare abstract class AbstractRbacAuthProvider<T extends IPrincipal> extends AbstractHttpAuthorizationProvider<T> {
|
|
9
|
-
readonly authDataResolver: (req: HttpRequest) => string;
|
|
10
|
-
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
11
|
-
readonly logger: AbstractLogger;
|
|
12
|
-
constructor(authDataResolver: (req: HttpRequest) => string, principalResolver: AbstractPrincipalResolver<T>, logger: AbstractLogger);
|
|
13
|
-
getPrincipalResolver(): AbstractPrincipalResolver<T>;
|
|
14
|
-
abstract getRbacCache(): Promise<RbacCache | undefined>;
|
|
15
|
-
abstract getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
16
|
-
resolvePrincipal(req: HttpRequest): Promise<T | undefined>;
|
|
17
|
-
authorize(principal: T | undefined, request: HttpRequest, endpoint: MountedEndpointInfo): Promise<void>;
|
|
18
|
-
}
|
|
1
|
+
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
+
import { HttpRequest } from "../common/HttpRequest";
|
|
3
|
+
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
+
import { RbacCache } from "./rbac";
|
|
5
|
+
import { AbstractHttpAuthorizationProvider } from "./AbstractHttpAuthorizationProvider";
|
|
6
|
+
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
7
|
+
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
8
|
+
export declare abstract class AbstractRbacAuthProvider<T extends IPrincipal> extends AbstractHttpAuthorizationProvider<T> {
|
|
9
|
+
readonly authDataResolver: (req: HttpRequest) => string;
|
|
10
|
+
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
11
|
+
readonly logger: AbstractLogger;
|
|
12
|
+
constructor(authDataResolver: (req: HttpRequest) => string, principalResolver: AbstractPrincipalResolver<T>, logger: AbstractLogger);
|
|
13
|
+
getPrincipalResolver(): AbstractPrincipalResolver<T>;
|
|
14
|
+
abstract getRbacCache(): Promise<RbacCache | undefined>;
|
|
15
|
+
abstract getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
16
|
+
resolvePrincipal(req: HttpRequest): Promise<T | undefined>;
|
|
17
|
+
authorize(principal: T | undefined, request: HttpRequest, endpoint: MountedEndpointInfo): Promise<void>;
|
|
18
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
3
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
4
|
-
import { AbstractCacheService } from "../../service/AbstractCacheService";
|
|
5
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
6
|
-
import { AbstractRbacAuthProvider } from "./AbstractRbacAuthProvider";
|
|
7
|
-
import { RbacCache } from "./rbac";
|
|
8
|
-
export declare class RedisRbacAuthProvider<T extends IPrincipal> extends AbstractRbacAuthProvider<T> {
|
|
9
|
-
readonly serviceId: string;
|
|
10
|
-
readonly rbacChannel: string;
|
|
11
|
-
readonly principalChannel: string;
|
|
12
|
-
readonly authDataResolver: (req: HttpRequest) => any;
|
|
13
|
-
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
14
|
-
readonly cacheService: AbstractCacheService;
|
|
15
|
-
readonly logger: AbstractLogger;
|
|
16
|
-
readonly redisDataRetentionDurationMs: number;
|
|
17
|
-
private lastRbacFetchTimestamp;
|
|
18
|
-
private principalCache;
|
|
19
|
-
private rbacCache?;
|
|
20
|
-
constructor(serviceId: string, rbacChannel: string, principalChannel: string, authDataResolver: (req: HttpRequest) => any, principalResolver: AbstractPrincipalResolver<T>, cacheService: AbstractCacheService, logger: AbstractLogger, redisDataRetentionDurationMs?: number);
|
|
21
|
-
getRbacCache(): Promise<RbacCache | undefined>;
|
|
22
|
-
getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
23
|
-
}
|
|
1
|
+
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
+
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
3
|
+
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
4
|
+
import { AbstractCacheService } from "../../service/AbstractCacheService";
|
|
5
|
+
import { HttpRequest } from "../common/HttpRequest";
|
|
6
|
+
import { AbstractRbacAuthProvider } from "./AbstractRbacAuthProvider";
|
|
7
|
+
import { RbacCache } from "./rbac";
|
|
8
|
+
export declare class RedisRbacAuthProvider<T extends IPrincipal> extends AbstractRbacAuthProvider<T> {
|
|
9
|
+
readonly serviceId: string;
|
|
10
|
+
readonly rbacChannel: string;
|
|
11
|
+
readonly principalChannel: string;
|
|
12
|
+
readonly authDataResolver: (req: HttpRequest) => any;
|
|
13
|
+
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
14
|
+
readonly cacheService: AbstractCacheService;
|
|
15
|
+
readonly logger: AbstractLogger;
|
|
16
|
+
readonly redisDataRetentionDurationMs: number;
|
|
17
|
+
private lastRbacFetchTimestamp;
|
|
18
|
+
private principalCache;
|
|
19
|
+
private rbacCache?;
|
|
20
|
+
constructor(serviceId: string, rbacChannel: string, principalChannel: string, authDataResolver: (req: HttpRequest) => any, principalResolver: AbstractPrincipalResolver<T>, cacheService: AbstractCacheService, logger: AbstractLogger, redisDataRetentionDurationMs?: number);
|
|
21
|
+
getRbacCache(): Promise<RbacCache | undefined>;
|
|
22
|
+
getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
23
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { AbstractLogger, IInit, IClientSocket } from "@clairejs/core";
|
|
2
|
-
import { AbstractRbacAuthProvider } from "./AbstractRbacAuthProvider";
|
|
3
|
-
import { RbacCache } from "./rbac";
|
|
4
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
5
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
6
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
7
|
-
export declare class SocketRbacAuthProvider<T extends IPrincipal> extends AbstractRbacAuthProvider<T> implements IInit {
|
|
8
|
-
readonly rbacCacheChannel: string;
|
|
9
|
-
readonly principalCacheChannel: string;
|
|
10
|
-
readonly authDataResolver: (req: HttpRequest) => any;
|
|
11
|
-
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
12
|
-
readonly logger: AbstractLogger;
|
|
13
|
-
readonly socketProvider: () => Promise<IClientSocket>;
|
|
14
|
-
socket?: IClientSocket;
|
|
15
|
-
rbacCache?: RbacCache;
|
|
16
|
-
idResolvers: {
|
|
17
|
-
principalId: number;
|
|
18
|
-
resolvers: ((roleIds: number[]) => void)[];
|
|
19
|
-
}[];
|
|
20
|
-
constructor(rbacCacheChannel: string, principalCacheChannel: string, authDataResolver: (req: HttpRequest) => any, principalResolver: AbstractPrincipalResolver<T>, logger: AbstractLogger, socketProvider: () => Promise<IClientSocket>);
|
|
21
|
-
exit(): void;
|
|
22
|
-
init(): Promise<void>;
|
|
23
|
-
getRbacCache(): Promise<RbacCache | undefined>;
|
|
24
|
-
getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
25
|
-
}
|
|
1
|
+
import { AbstractLogger, IInit, IClientSocket } from "@clairejs/core";
|
|
2
|
+
import { AbstractRbacAuthProvider } from "./AbstractRbacAuthProvider";
|
|
3
|
+
import { RbacCache } from "./rbac";
|
|
4
|
+
import { HttpRequest } from "../common/HttpRequest";
|
|
5
|
+
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
6
|
+
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
7
|
+
export declare class SocketRbacAuthProvider<T extends IPrincipal> extends AbstractRbacAuthProvider<T> implements IInit {
|
|
8
|
+
readonly rbacCacheChannel: string;
|
|
9
|
+
readonly principalCacheChannel: string;
|
|
10
|
+
readonly authDataResolver: (req: HttpRequest) => any;
|
|
11
|
+
readonly principalResolver: AbstractPrincipalResolver<T>;
|
|
12
|
+
readonly logger: AbstractLogger;
|
|
13
|
+
readonly socketProvider: () => Promise<IClientSocket>;
|
|
14
|
+
socket?: IClientSocket;
|
|
15
|
+
rbacCache?: RbacCache;
|
|
16
|
+
idResolvers: {
|
|
17
|
+
principalId: number;
|
|
18
|
+
resolvers: ((roleIds: number[]) => void)[];
|
|
19
|
+
}[];
|
|
20
|
+
constructor(rbacCacheChannel: string, principalCacheChannel: string, authDataResolver: (req: HttpRequest) => any, principalResolver: AbstractPrincipalResolver<T>, logger: AbstractLogger, socketProvider: () => Promise<IClientSocket>);
|
|
21
|
+
exit(): void;
|
|
22
|
+
init(): Promise<void>;
|
|
23
|
+
getRbacCache(): Promise<RbacCache | undefined>;
|
|
24
|
+
getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
25
|
+
}
|
package/dist/http/auth/rbac.d.ts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
export interface RbacRolePolicy {
|
|
2
|
-
roleId: number;
|
|
3
|
-
policyId: number;
|
|
4
|
-
}
|
|
5
|
-
export interface RbacRole {
|
|
6
|
-
roleId: number;
|
|
7
|
-
isSuperRole: boolean;
|
|
8
|
-
isAnonymousRole: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface RbacPolicyPermissionCondition {
|
|
11
|
-
policyPermissionId: number;
|
|
12
|
-
conditionName: string;
|
|
13
|
-
conditionValue: string;
|
|
14
|
-
}
|
|
15
|
-
export interface RbacPolicyPermission {
|
|
16
|
-
id: number;
|
|
17
|
-
policyId: number;
|
|
18
|
-
permission: string;
|
|
19
|
-
}
|
|
20
|
-
export interface RbacPolicy {
|
|
21
|
-
policyId: number;
|
|
22
|
-
isUserDefined: boolean;
|
|
23
|
-
}
|
|
24
|
-
export interface PrincipalRole {
|
|
25
|
-
principalId: number;
|
|
26
|
-
roleIds: number[];
|
|
27
|
-
}
|
|
28
|
-
export interface RbacCache {
|
|
29
|
-
roles?: RbacRole[];
|
|
30
|
-
policies?: RbacPolicy[];
|
|
31
|
-
rolePolicies?: RbacRolePolicy[];
|
|
32
|
-
policyPermissions?: RbacPolicyPermission[];
|
|
33
|
-
policyPermissionConditions?: RbacPolicyPermissionCondition[];
|
|
34
|
-
}
|
|
1
|
+
export interface RbacRolePolicy {
|
|
2
|
+
roleId: number;
|
|
3
|
+
policyId: number;
|
|
4
|
+
}
|
|
5
|
+
export interface RbacRole {
|
|
6
|
+
roleId: number;
|
|
7
|
+
isSuperRole: boolean;
|
|
8
|
+
isAnonymousRole: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface RbacPolicyPermissionCondition {
|
|
11
|
+
policyPermissionId: number;
|
|
12
|
+
conditionName: string;
|
|
13
|
+
conditionValue: string;
|
|
14
|
+
}
|
|
15
|
+
export interface RbacPolicyPermission {
|
|
16
|
+
id: number;
|
|
17
|
+
policyId: number;
|
|
18
|
+
permission: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RbacPolicy {
|
|
21
|
+
policyId: number;
|
|
22
|
+
isUserDefined: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface PrincipalRole {
|
|
25
|
+
principalId: number;
|
|
26
|
+
roleIds: number[];
|
|
27
|
+
}
|
|
28
|
+
export interface RbacCache {
|
|
29
|
+
roles?: RbacRole[];
|
|
30
|
+
policies?: RbacPolicy[];
|
|
31
|
+
rolePolicies?: RbacRolePolicy[];
|
|
32
|
+
policyPermissions?: RbacPolicyPermission[];
|
|
33
|
+
policyPermissionConditions?: RbacPolicyPermissionCondition[];
|
|
34
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { HttpMethod, SocketMethod } from "@clairejs/core";
|
|
2
|
-
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
3
|
-
import { IServerSocket } from "../../socket/IServerSocket";
|
|
4
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
5
|
-
export declare class HttpRequest {
|
|
6
|
-
private valueHolder;
|
|
7
|
-
private method;
|
|
8
|
-
private pathName;
|
|
9
|
-
private headers;
|
|
10
|
-
private params;
|
|
11
|
-
private query;
|
|
12
|
-
private body;
|
|
13
|
-
private hash;
|
|
14
|
-
private authInfo?;
|
|
15
|
-
constructor(options: {
|
|
16
|
-
method: HttpMethod | SocketMethod;
|
|
17
|
-
pathName: string;
|
|
18
|
-
headers?: any;
|
|
19
|
-
hash?: string;
|
|
20
|
-
query?: any;
|
|
21
|
-
params?: any;
|
|
22
|
-
body?: any;
|
|
23
|
-
socket?: IServerSocket;
|
|
24
|
-
}, endpointMetadata?: EndpointMetadata);
|
|
25
|
-
private jsonParsing;
|
|
26
|
-
getAuthInfo(): IPrincipal | undefined;
|
|
27
|
-
setAuthInfo(authInfo?: IPrincipal): void;
|
|
28
|
-
getHeaders(): any;
|
|
29
|
-
getMethod(): HttpMethod | SocketMethod;
|
|
30
|
-
getHash(): string;
|
|
31
|
-
getPathName(): string;
|
|
32
|
-
getValue<T extends any>(key: string): T;
|
|
33
|
-
setValue<T extends any>(key: string, value: T): void;
|
|
34
|
-
getParams<T extends any>(): T;
|
|
35
|
-
getQuery<T extends any>(): T;
|
|
36
|
-
getBody<T extends any>(): T;
|
|
37
|
-
}
|
|
1
|
+
import { HttpMethod, SocketMethod } from "@clairejs/core";
|
|
2
|
+
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
3
|
+
import { IServerSocket } from "../../socket/IServerSocket";
|
|
4
|
+
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
5
|
+
export declare class HttpRequest {
|
|
6
|
+
private valueHolder;
|
|
7
|
+
private method;
|
|
8
|
+
private pathName;
|
|
9
|
+
private headers;
|
|
10
|
+
private params;
|
|
11
|
+
private query;
|
|
12
|
+
private body;
|
|
13
|
+
private hash;
|
|
14
|
+
private authInfo?;
|
|
15
|
+
constructor(options: {
|
|
16
|
+
method: HttpMethod | SocketMethod;
|
|
17
|
+
pathName: string;
|
|
18
|
+
headers?: any;
|
|
19
|
+
hash?: string;
|
|
20
|
+
query?: any;
|
|
21
|
+
params?: any;
|
|
22
|
+
body?: any;
|
|
23
|
+
socket?: IServerSocket;
|
|
24
|
+
}, endpointMetadata?: EndpointMetadata);
|
|
25
|
+
private jsonParsing;
|
|
26
|
+
getAuthInfo(): IPrincipal | undefined;
|
|
27
|
+
setAuthInfo(authInfo?: IPrincipal): void;
|
|
28
|
+
getHeaders(): any;
|
|
29
|
+
getMethod(): HttpMethod | SocketMethod;
|
|
30
|
+
getHash(): string;
|
|
31
|
+
getPathName(): string;
|
|
32
|
+
getValue<T extends any>(key: string): T;
|
|
33
|
+
setValue<T extends any>(key: string, value: T): void;
|
|
34
|
+
getParams<T extends any>(): T;
|
|
35
|
+
getQuery<T extends any>(): T;
|
|
36
|
+
getBody<T extends any>(): T;
|
|
37
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
declare type Dict = {
|
|
3
|
-
[key: string]: string;
|
|
4
|
-
};
|
|
5
|
-
export declare class HttpResponse<T> {
|
|
6
|
-
value?: T;
|
|
7
|
-
code: number;
|
|
8
|
-
headers: Dict;
|
|
9
|
-
cookies: Dict;
|
|
10
|
-
}
|
|
11
|
-
export declare class ResponseBuilder<T> {
|
|
12
|
-
response: HttpResponse<T>;
|
|
13
|
-
protected constructor();
|
|
14
|
-
status(code: number): this;
|
|
15
|
-
header(name: string, value: string): this;
|
|
16
|
-
cookie(name: string, value: string): this;
|
|
17
|
-
get(): HttpResponse<T>;
|
|
18
|
-
static json<T>(jsonValue?: T): ResponseBuilder<T>;
|
|
19
|
-
static html(htmlValue?: string): ResponseBuilder<unknown>;
|
|
20
|
-
static binary(buffer?: Buffer): ResponseBuilder<unknown>;
|
|
21
|
-
static success(): HttpResponse<unknown>;
|
|
22
|
-
static notFound(data?: any): HttpResponse<unknown>;
|
|
23
|
-
static accessDenied(data?: any): HttpResponse<unknown>;
|
|
24
|
-
}
|
|
25
|
-
export {};
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
declare type Dict = {
|
|
3
|
+
[key: string]: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class HttpResponse<T> {
|
|
6
|
+
value?: T;
|
|
7
|
+
code: number;
|
|
8
|
+
headers: Dict;
|
|
9
|
+
cookies: Dict;
|
|
10
|
+
}
|
|
11
|
+
export declare class ResponseBuilder<T> {
|
|
12
|
+
response: HttpResponse<T>;
|
|
13
|
+
protected constructor();
|
|
14
|
+
status(code: number): this;
|
|
15
|
+
header(name: string, value: string): this;
|
|
16
|
+
cookie(name: string, value: string): this;
|
|
17
|
+
get(): HttpResponse<T>;
|
|
18
|
+
static json<T>(jsonValue?: T): ResponseBuilder<T>;
|
|
19
|
+
static html(htmlValue?: string): ResponseBuilder<unknown>;
|
|
20
|
+
static binary(buffer?: Buffer): ResponseBuilder<unknown>;
|
|
21
|
+
static success(): HttpResponse<unknown>;
|
|
22
|
+
static notFound(data?: any): HttpResponse<unknown>;
|
|
23
|
+
static accessDenied(data?: any): HttpResponse<unknown>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
2
|
-
import { ITransactionProvider } from "../../database/transaction/ITransactionProvider";
|
|
3
|
-
import { ITransactionFactory } from "../../database/transaction/ITransactionFactory";
|
|
4
|
-
export declare abstract class AbstractHttpController implements ITransactionProvider, ITransactionFactory {
|
|
5
|
-
protected readonly databaseAdapter: ITransactionFactory;
|
|
6
|
-
constructor(databaseAdapter: ITransactionFactory);
|
|
7
|
-
createTransaction(): Promise<import("../..").ITransaction>;
|
|
8
|
-
getCurrentTransaction(): Promise<import("../..").ITransaction>;
|
|
9
|
-
getEndpointMetadata(): Readonly<EndpointMetadata>[];
|
|
10
|
-
}
|
|
1
|
+
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
2
|
+
import { ITransactionProvider } from "../../database/transaction/ITransactionProvider";
|
|
3
|
+
import { ITransactionFactory } from "../../database/transaction/ITransactionFactory";
|
|
4
|
+
export declare abstract class AbstractHttpController implements ITransactionProvider, ITransactionFactory {
|
|
5
|
+
protected readonly databaseAdapter: ITransactionFactory;
|
|
6
|
+
constructor(databaseAdapter: ITransactionFactory);
|
|
7
|
+
createTransaction(): Promise<import("../..").ITransaction>;
|
|
8
|
+
getCurrentTransaction(): Promise<import("../..").ITransaction>;
|
|
9
|
+
getEndpointMetadata(): Readonly<EndpointMetadata>[];
|
|
10
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
2
|
-
import { HttpResponse } from "../common/HttpResponse";
|
|
3
|
-
export declare abstract class AbstractHttpMiddleware {
|
|
4
|
-
abstract intercept(request: HttpRequest): Promise<HttpResponse<any> | undefined>;
|
|
5
|
-
}
|
|
1
|
+
import { HttpRequest } from "../common/HttpRequest";
|
|
2
|
+
import { HttpResponse } from "../common/HttpResponse";
|
|
3
|
+
export declare abstract class AbstractHttpMiddleware {
|
|
4
|
+
abstract intercept(request: HttpRequest): Promise<HttpResponse<any> | undefined>;
|
|
5
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
-
import { HttpData } from "../../common/request/HttpData";
|
|
3
|
-
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
-
import { HttpResponse } from "../common/HttpResponse";
|
|
5
|
-
import { AbstractHttpMiddleware } from "./AbstractHttpMiddleware";
|
|
6
|
-
import { ControllerMetadata } from "./ControllerMetadata";
|
|
7
|
-
export declare abstract class AbstractHttpRequestHandler {
|
|
8
|
-
readonly mountPoint: string;
|
|
9
|
-
readonly logger: AbstractLogger;
|
|
10
|
-
private mountedEndpointInfo?;
|
|
11
|
-
constructor(mountPoint: string, logger: AbstractLogger);
|
|
12
|
-
protected resolverMountPoint(controllerMetadata: ControllerMetadata, mappingUrls: string[]): string;
|
|
13
|
-
getMountedEndpointInfo(): Promise<MountedEndpointInfo[]>;
|
|
14
|
-
abstract getMiddleware(): AbstractHttpMiddleware[];
|
|
15
|
-
abstract handle(httpData: HttpData): Promise<HttpResponse<any>>;
|
|
16
|
-
}
|
|
1
|
+
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
+
import { HttpData } from "../../common/request/HttpData";
|
|
3
|
+
import { MountedEndpointInfo } from "../../common/request/MountedEndpointInfo";
|
|
4
|
+
import { HttpResponse } from "../common/HttpResponse";
|
|
5
|
+
import { AbstractHttpMiddleware } from "./AbstractHttpMiddleware";
|
|
6
|
+
import { ControllerMetadata } from "./ControllerMetadata";
|
|
7
|
+
export declare abstract class AbstractHttpRequestHandler {
|
|
8
|
+
readonly mountPoint: string;
|
|
9
|
+
readonly logger: AbstractLogger;
|
|
10
|
+
private mountedEndpointInfo?;
|
|
11
|
+
constructor(mountPoint: string, logger: AbstractLogger);
|
|
12
|
+
protected resolverMountPoint(controllerMetadata: ControllerMetadata, mappingUrls: string[]): string;
|
|
13
|
+
getMountedEndpointInfo(): Promise<MountedEndpointInfo[]>;
|
|
14
|
+
abstract getMiddleware(): AbstractHttpMiddleware[];
|
|
15
|
+
abstract handle(httpData: HttpData): Promise<HttpResponse<any>>;
|
|
16
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ObjectMetadata } from "@clairejs/core";
|
|
2
|
-
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
3
|
-
export interface ControllerMetadata extends ObjectMetadata {
|
|
4
|
-
fields: EndpointMetadata[];
|
|
5
|
-
permissionGroup?: string;
|
|
6
|
-
}
|
|
1
|
+
import { ObjectMetadata } from "@clairejs/core";
|
|
2
|
+
import { EndpointMetadata } from "../../common/request/EndpointMetadata";
|
|
3
|
+
export interface ControllerMetadata extends ObjectMetadata {
|
|
4
|
+
fields: EndpointMetadata[];
|
|
5
|
+
permissionGroup?: string;
|
|
6
|
+
}
|