@clairejs/server 3.12.13 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +8 -8
- package/README.md +830 -824
- package/dist/common/AbstractController.d.ts +3 -3
- package/dist/common/ControllerMetadata.d.ts +6 -6
- package/dist/common/FileOperation.d.ts +5 -5
- package/dist/common/ServerModelMetadata.d.ts +10 -10
- package/dist/common/Transactionable.d.ts +7 -7
- package/dist/common/auth/AbstractPrincipalResolver.d.ts +5 -4
- package/dist/common/auth/IPrincipal.d.ts +3 -4
- package/dist/common/constants.d.ts +1 -1
- package/dist/common/decorator.d.ts +5 -5
- 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 +8 -8
- package/dist/common/request/SocketData.d.ts +1 -1
- package/dist/common/request/types.d.ts +1 -1
- package/dist/controllers/FileManageController.d.ts +14 -14
- package/dist/controllers/FileUploadController.d.ts +13 -13
- package/dist/controllers/dto/permissions.d.ts +20 -20
- package/dist/controllers/dto/system.d.ts +12 -12
- package/dist/controllers/dto/upload.d.ts +40 -40
- package/dist/controllers/models/SystemSetting.d.ts +5 -5
- package/dist/http/auth/AbstractHttpAuthorizer.d.ts +6 -9
- package/dist/http/common/HttpRequest.d.ts +40 -40
- package/dist/http/common/HttpResponse.d.ts +34 -34
- package/dist/http/controller/AbstractHttpController.d.ts +8 -8
- package/dist/http/controller/AbstractHttpMiddleware.d.ts +10 -10
- package/dist/http/controller/AbstractHttpRequestHandler.d.ts +18 -18
- package/dist/http/controller/CrudHttpController.d.ts +41 -41
- package/dist/http/controller/DefaultHttpRequestHandler.d.ts +22 -21
- package/dist/http/decorators.d.ts +33 -33
- package/dist/http/file-upload/AbstractFileUploadHandler.d.ts +7 -7
- package/dist/http/file-upload/FileUploadHandler.d.ts +11 -11
- package/dist/http/file-upload/types.d.ts +1 -1
- package/dist/http/repository/AbstractRepository.d.ts +10 -10
- package/dist/http/repository/DtoRepository.d.ts +58 -58
- package/dist/http/repository/ICrudRepository.d.ts +27 -27
- package/dist/http/repository/ModelRepository.d.ts +37 -37
- 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/http/security/cors.d.ts +6 -6
- package/dist/index.d.ts +70 -74
- package/dist/index.js +1 -1
- package/dist/job/AbstractJobController.d.ts +5 -5
- package/dist/job/AbstractJobRepository.d.ts +17 -17
- package/dist/job/AbstractJobScheduler.d.ts +38 -38
- package/dist/job/AwsJobScheduler.d.ts +48 -48
- package/dist/job/LocalJobScheduler.d.ts +88 -88
- package/dist/job/decorators.d.ts +5 -5
- package/dist/job/interfaces.d.ts +50 -50
- package/dist/logging/FileLogMedium.d.ts +13 -13
- package/dist/services/AbstractCacheService.d.ts +22 -22
- package/dist/services/AbstractFileService.d.ts +15 -15
- package/dist/services/AbstractMailService.d.ts +31 -31
- package/dist/services/AbstractService.d.ts +3 -3
- package/dist/services/AbstractSmsService.d.ts +12 -12
- package/dist/services/LocalFileService.d.ts +21 -21
- package/dist/services/ProxyFileService.d.ts +20 -20
- package/dist/services/RedisCacheService.d.ts +25 -25
- package/dist/services/S3FileService.d.ts +36 -36
- package/dist/services/SystemService.d.ts +15 -15
- package/dist/socket/AbstractServerSocket.d.ts +18 -18
- package/dist/socket/AbstractServerSocketManager.d.ts +47 -46
- package/dist/socket/AbstractSocketConnectionHandler.d.ts +6 -6
- package/dist/socket/AbstractSocketController.d.ts +14 -14
- package/dist/socket/AwsSocketManager.d.ts +30 -30
- package/dist/socket/IServerSocket.d.ts +16 -16
- package/dist/socket/LocalSocketManager.d.ts +48 -47
- package/dist/system/ClaireServer.d.ts +13 -13
- package/dist/system/ExpressWrapper.d.ts +19 -19
- package/dist/system/LambdaWrapper.d.ts +25 -25
- package/dist/system/ServerGlobalStore.d.ts +5 -5
- package/dist/system/errors.d.ts +13 -14
- package/dist/system/lamba-request-mapper.d.ts +2 -2
- package/dist/system/locale/LocaleEntry.d.ts +3 -3
- package/dist/system/locale/LocaleTranslation.d.ts +6 -6
- package/dist/system/locale/decorators.d.ts +2 -2
- package/package.json +67 -67
- package/dist/http/auth/AbstractRbacHttpAuthorizer.d.ts +0 -18
- package/dist/http/auth/RedisRbacHttpAuthorizer.d.ts +0 -24
- package/dist/http/auth/SocketRbacHttpAuthorizer.d.ts +0 -25
- package/dist/http/auth/rbac.d.ts +0 -34
|
@@ -1,47 +1,48 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { AbstractLogger, IInit } from "@clairejs/core";
|
|
3
|
-
import WebSocket from "ws";
|
|
4
|
-
import { Server } from "http";
|
|
5
|
-
import { AbstractServerSocketManager, ChannelInfo, ServerSocketInfo } from "./AbstractServerSocketManager";
|
|
6
|
-
import { AbstractServerSocket } from "./AbstractServerSocket";
|
|
7
|
-
import { AbstractHttpAuthorizer } from "../http/auth/AbstractHttpAuthorizer";
|
|
8
|
-
import { IServerSocket } from "./IServerSocket";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
protected readonly
|
|
12
|
-
protected readonly
|
|
13
|
-
protected readonly
|
|
14
|
-
protected readonly
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
private
|
|
34
|
-
|
|
35
|
-
protected
|
|
36
|
-
protected
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AbstractLogger, IInit } from "@clairejs/core";
|
|
3
|
+
import WebSocket from "ws";
|
|
4
|
+
import { Server } from "http";
|
|
5
|
+
import { AbstractServerSocketManager, ChannelInfo, ServerSocketInfo } from "./AbstractServerSocketManager";
|
|
6
|
+
import { AbstractServerSocket } from "./AbstractServerSocket";
|
|
7
|
+
import { AbstractHttpAuthorizer } from "../http/auth/AbstractHttpAuthorizer";
|
|
8
|
+
import { IServerSocket } from "./IServerSocket";
|
|
9
|
+
import { AbstractPrincipalResolver } from "../common/auth/AbstractPrincipalResolver";
|
|
10
|
+
export declare class LocalSocketManager extends AbstractServerSocketManager implements IInit {
|
|
11
|
+
protected readonly authenticationRequired: boolean;
|
|
12
|
+
protected readonly redisServerUrl: string;
|
|
13
|
+
protected readonly logger: AbstractLogger;
|
|
14
|
+
protected readonly principalResolver: AbstractPrincipalResolver;
|
|
15
|
+
protected readonly httpAuthorizer: AbstractHttpAuthorizer;
|
|
16
|
+
/**
|
|
17
|
+
* Use to subscribe to the socket-self channels
|
|
18
|
+
*/
|
|
19
|
+
private readonly subClient;
|
|
20
|
+
/**
|
|
21
|
+
* Use to subscribe to channels
|
|
22
|
+
*/
|
|
23
|
+
private readonly channelSubClient;
|
|
24
|
+
/**
|
|
25
|
+
* Use to publish data
|
|
26
|
+
*/
|
|
27
|
+
private readonly sendClient;
|
|
28
|
+
private allSockets;
|
|
29
|
+
private subscribedChannels;
|
|
30
|
+
constructor(authenticationRequired: boolean, redisServerUrl: string, logger: AbstractLogger, principalResolver: AbstractPrincipalResolver, httpAuthorizer: AbstractHttpAuthorizer);
|
|
31
|
+
init(): Promise<void>;
|
|
32
|
+
exit(): void;
|
|
33
|
+
private channelMessageListenner;
|
|
34
|
+
private socketMessageListener;
|
|
35
|
+
protected getUniqueDataChannelName(channel: string): string;
|
|
36
|
+
protected getSocketChannelKeyPrefix(): string;
|
|
37
|
+
protected getSocketChannelKey(socketId: string): string;
|
|
38
|
+
broadcastToChannel(channel: string, data: any): Promise<void>;
|
|
39
|
+
addSocketToChannel(socketId: string, channelInfos: ChannelInfo[]): Promise<AbstractServerSocket | undefined>;
|
|
40
|
+
removeSocketFromChannel(socketId: string, channels: string[], persist?: boolean): Promise<void>;
|
|
41
|
+
addSocket(socketInfo: ServerSocketInfo, { socket }: {
|
|
42
|
+
socket: WebSocket;
|
|
43
|
+
}): Promise<AbstractServerSocket>;
|
|
44
|
+
removeSocket(socketId: string, physicRemove?: boolean): Promise<void>;
|
|
45
|
+
getById(socketId: string): Promise<AbstractServerSocket | undefined>;
|
|
46
|
+
getSocketsByChannel(channel: string): Promise<IServerSocket[]>;
|
|
47
|
+
configure(httpServer?: Server): void;
|
|
48
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { AbstractLogger, ClaireApp } from "@clairejs/core";
|
|
2
|
-
import { AbstractHttpRequestHandler } from "../http/controller/AbstractHttpRequestHandler";
|
|
3
|
-
import { AbstractServerSocketManager } from "../socket/AbstractServerSocketManager";
|
|
4
|
-
export declare class ClaireServer extends ClaireApp {
|
|
5
|
-
readonly logger: AbstractLogger;
|
|
6
|
-
readonly httpRequestHandler: AbstractHttpRequestHandler | undefined;
|
|
7
|
-
readonly socketManager: AbstractServerSocketManager | undefined;
|
|
8
|
-
private booted;
|
|
9
|
-
constructor(logger: AbstractLogger, httpRequestHandler: AbstractHttpRequestHandler | undefined, socketManager: AbstractServerSocketManager | undefined);
|
|
10
|
-
init(): Promise<void>;
|
|
11
|
-
exit(): void;
|
|
12
|
-
private stop;
|
|
13
|
-
}
|
|
1
|
+
import { AbstractLogger, ClaireApp } from "@clairejs/core";
|
|
2
|
+
import { AbstractHttpRequestHandler } from "../http/controller/AbstractHttpRequestHandler";
|
|
3
|
+
import { AbstractServerSocketManager } from "../socket/AbstractServerSocketManager";
|
|
4
|
+
export declare class ClaireServer extends ClaireApp {
|
|
5
|
+
readonly logger: AbstractLogger;
|
|
6
|
+
readonly httpRequestHandler: AbstractHttpRequestHandler | undefined;
|
|
7
|
+
readonly socketManager: AbstractServerSocketManager | undefined;
|
|
8
|
+
private booted;
|
|
9
|
+
constructor(logger: AbstractLogger, httpRequestHandler: AbstractHttpRequestHandler | undefined, socketManager: AbstractServerSocketManager | undefined);
|
|
10
|
+
init(): Promise<void>;
|
|
11
|
+
exit(): void;
|
|
12
|
+
private stop;
|
|
13
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { ClaireServer } from "./ClaireServer";
|
|
2
|
-
interface ExpressWrapperConfig {
|
|
3
|
-
requestSetting?: {
|
|
4
|
-
maxBodySizeKB?: number;
|
|
5
|
-
};
|
|
6
|
-
}
|
|
7
|
-
export declare class ExpressWrapper {
|
|
8
|
-
private readonly injector;
|
|
9
|
-
private readonly socketManager?;
|
|
10
|
-
private readonly logger;
|
|
11
|
-
private readonly server;
|
|
12
|
-
private readonly config?;
|
|
13
|
-
private readonly httpRequestHandler?;
|
|
14
|
-
private httpServer?;
|
|
15
|
-
constructor(server: ClaireServer, config?: ExpressWrapperConfig);
|
|
16
|
-
close(): void;
|
|
17
|
-
listen(listenPort: number): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
1
|
+
import { ClaireServer } from "./ClaireServer";
|
|
2
|
+
interface ExpressWrapperConfig {
|
|
3
|
+
requestSetting?: {
|
|
4
|
+
maxBodySizeKB?: number;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export declare class ExpressWrapper {
|
|
8
|
+
private readonly injector;
|
|
9
|
+
private readonly socketManager?;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
private readonly server;
|
|
12
|
+
private readonly config?;
|
|
13
|
+
private readonly httpRequestHandler?;
|
|
14
|
+
private httpServer?;
|
|
15
|
+
constructor(server: ClaireServer, config?: ExpressWrapperConfig);
|
|
16
|
+
close(): void;
|
|
17
|
+
listen(listenPort: number): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { RequestOptions } from "../common/request/RequestOptions";
|
|
2
|
-
import { ClaireServer } from "./ClaireServer";
|
|
3
|
-
interface LambdaResponse {
|
|
4
|
-
statusCode: number;
|
|
5
|
-
body: string;
|
|
6
|
-
headers: object;
|
|
7
|
-
cookies: string[];
|
|
8
|
-
}
|
|
9
|
-
export interface LambdaWrapperConfig {
|
|
10
|
-
}
|
|
11
|
-
export declare class LambdaWrapper {
|
|
12
|
-
readonly serverFactory: () => Promise<ClaireServer>;
|
|
13
|
-
readonly requestMapper: (event: any) => RequestOptions | undefined;
|
|
14
|
-
readonly config?: LambdaWrapperConfig | undefined;
|
|
15
|
-
private readonly injector;
|
|
16
|
-
private readonly logger;
|
|
17
|
-
private readonly httpRequestHandler?;
|
|
18
|
-
private readonly socketManager?;
|
|
19
|
-
private readonly jobScheduler?;
|
|
20
|
-
private _server?;
|
|
21
|
-
constructor(serverFactory: () => Promise<ClaireServer>, requestMapper: (event: any) => RequestOptions | undefined, config?: LambdaWrapperConfig | undefined);
|
|
22
|
-
private bootServer;
|
|
23
|
-
handler(event: any): Promise<LambdaResponse>;
|
|
24
|
-
}
|
|
25
|
-
export {};
|
|
1
|
+
import { RequestOptions } from "../common/request/RequestOptions";
|
|
2
|
+
import { ClaireServer } from "./ClaireServer";
|
|
3
|
+
interface LambdaResponse {
|
|
4
|
+
statusCode: number;
|
|
5
|
+
body: string;
|
|
6
|
+
headers: object;
|
|
7
|
+
cookies: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface LambdaWrapperConfig {
|
|
10
|
+
}
|
|
11
|
+
export declare class LambdaWrapper {
|
|
12
|
+
readonly serverFactory: () => Promise<ClaireServer>;
|
|
13
|
+
readonly requestMapper: (event: any) => RequestOptions | undefined;
|
|
14
|
+
readonly config?: LambdaWrapperConfig | undefined;
|
|
15
|
+
private readonly injector;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private readonly httpRequestHandler?;
|
|
18
|
+
private readonly socketManager?;
|
|
19
|
+
private readonly jobScheduler?;
|
|
20
|
+
private _server?;
|
|
21
|
+
constructor(serverFactory: () => Promise<ClaireServer>, requestMapper: (event: any) => RequestOptions | undefined, config?: LambdaWrapperConfig | undefined);
|
|
22
|
+
private bootServer;
|
|
23
|
+
handler(event: any): Promise<LambdaResponse>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CoreGlobalStore } from "@clairejs/core";
|
|
2
|
-
import { MountedEndpointInfo } from "../common/request/MountedEndpointInfo";
|
|
3
|
-
export interface ServerGlobalStore extends CoreGlobalStore {
|
|
4
|
-
mountedEndpointInfo?: MountedEndpointInfo[];
|
|
5
|
-
}
|
|
1
|
+
import { CoreGlobalStore } from "@clairejs/core";
|
|
2
|
+
import { MountedEndpointInfo } from "../common/request/MountedEndpointInfo";
|
|
3
|
+
export interface ServerGlobalStore extends CoreGlobalStore {
|
|
4
|
+
mountedEndpointInfo?: MountedEndpointInfo[];
|
|
5
|
+
}
|
package/dist/system/errors.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
export declare const Errors: {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
};
|
|
1
|
+
export declare const Errors: {
|
|
2
|
+
SYSTEM_ERROR: string;
|
|
3
|
+
HTTP_REQUEST_ERROR: string;
|
|
4
|
+
SESSION_EXPIRED: string;
|
|
5
|
+
ACCESS_DENIED: string;
|
|
6
|
+
AUTHENTICATION_ERROR: string;
|
|
7
|
+
NOT_FOUND: string;
|
|
8
|
+
VALIDATION_ERROR: string;
|
|
9
|
+
BAD_STATE: string;
|
|
10
|
+
QUERY_ERROR: string;
|
|
11
|
+
REQUEST_RATE_LIMIT: string;
|
|
12
|
+
CANNOT_LOCK: string;
|
|
13
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { RequestOptions } from "../common/request/RequestOptions";
|
|
2
|
-
export declare const lambdaRequestMapper: (event: any) => RequestOptions;
|
|
1
|
+
import { RequestOptions } from "../common/request/RequestOptions";
|
|
2
|
+
export declare const lambdaRequestMapper: (event: any) => RequestOptions;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { AbstractModel } from "@clairejs/core";
|
|
2
|
-
export declare class LocaleEntry extends AbstractModel {
|
|
3
|
-
}
|
|
1
|
+
import { AbstractModel } from "@clairejs/core";
|
|
2
|
+
export declare class LocaleEntry extends AbstractModel {
|
|
3
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AbstractModel } from "@clairejs/core";
|
|
2
|
-
export declare class LocaleTranslation extends AbstractModel {
|
|
3
|
-
entryId:
|
|
4
|
-
localeCode: string;
|
|
5
|
-
translation: string;
|
|
6
|
-
}
|
|
1
|
+
import { AbstractModel } from "@clairejs/core";
|
|
2
|
+
export declare class LocaleTranslation extends AbstractModel {
|
|
3
|
+
entryId: string;
|
|
4
|
+
localeCode: string;
|
|
5
|
+
translation: string;
|
|
6
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AbstractModel } from "@clairejs/core";
|
|
2
|
-
export declare const LocaleOf: <T>(referenceColumn: keyof T) => <K extends string>(prototype: T & AbstractModel & { [k in K]?: Record<string, string> | undefined; }, propertyKey: K) => void;
|
|
1
|
+
import { AbstractModel } from "@clairejs/core";
|
|
2
|
+
export declare const LocaleOf: <T>(referenceColumn: keyof T) => <K extends string>(prototype: T & AbstractModel & { [k in K]?: Record<string, string> | undefined; }, propertyKey: K) => void;
|
package/package.json
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@clairejs/server",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "Claire server NodeJs framework written in Typescript.",
|
|
5
|
-
"types": "dist/index.d.ts",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"test-http": "mocha -r ts-node/register ./test/e2e/e2e.test.ts",
|
|
9
|
-
"test-socket": "mocha -r ts-node/register ./test/socket/socket.test.ts",
|
|
10
|
-
"test": "npm run test-http && npm run test-socket",
|
|
11
|
-
"build": "rm -rf ./dist && webpack --mode production",
|
|
12
|
-
"push": "npm run build && npm publish && git push"
|
|
13
|
-
},
|
|
14
|
-
"author": "immort",
|
|
15
|
-
"license": "ISC",
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"aws-sdk": "^2.841.0",
|
|
18
|
-
"cookie-parser": "^1.4.6",
|
|
19
|
-
"cors": "^2.8.5",
|
|
20
|
-
"express": "^4.17.1",
|
|
21
|
-
"express-fileupload": "^1.2.1",
|
|
22
|
-
"ioredis": "^5.2.0",
|
|
23
|
-
"mysql2": "^2.2.5",
|
|
24
|
-
"node-cron": "^3.0.1",
|
|
25
|
-
"node-schedule": "^2.1.0",
|
|
26
|
-
"parseurl": "^1.3.3",
|
|
27
|
-
"path-to-regexp": "^6.2.0",
|
|
28
|
-
"pg": "^8.5.1",
|
|
29
|
-
"pg-hstore": "^2.3.4",
|
|
30
|
-
"query-string": "^6.14.0",
|
|
31
|
-
"randomstring": "^1.2.2",
|
|
32
|
-
"redlock": "^5.0.0-beta.2",
|
|
33
|
-
"reflect-metadata": "^0.1.13",
|
|
34
|
-
"ws": "^7.5.5"
|
|
35
|
-
},
|
|
36
|
-
"peerDependencies": {
|
|
37
|
-
"@clairejs/client": "^3.
|
|
38
|
-
"@clairejs/core": "^3.
|
|
39
|
-
"@clairejs/orm": "^3.
|
|
40
|
-
},
|
|
41
|
-
"devDependencies": {
|
|
42
|
-
"@types/cookie-parser": "^1.4.3",
|
|
43
|
-
"@types/cors": "^2.8.12",
|
|
44
|
-
"@types/express": "^4.17.11",
|
|
45
|
-
"@types/express-fileupload": "^1.1.6",
|
|
46
|
-
"@types/mocha": "^8.2.2",
|
|
47
|
-
"@types/node": "^14.14.25",
|
|
48
|
-
"@types/node-schedule": "^2.1.0",
|
|
49
|
-
"@types/parseurl": "^1.3.1",
|
|
50
|
-
"@types/randomstring": "^1.1.8",
|
|
51
|
-
"@types/uuid": "^9.0.0",
|
|
52
|
-
"@types/validator": "^13.1.3",
|
|
53
|
-
"@types/webpack-env": "^1.16.0",
|
|
54
|
-
"@types/ws": "^7.4.0",
|
|
55
|
-
"axios": "^0.21.1",
|
|
56
|
-
"mocha": "^10.0.0",
|
|
57
|
-
"terser-webpack-plugin": "^4.2.3",
|
|
58
|
-
"ts-loader": "^8.4.0",
|
|
59
|
-
"ts-node": "^10.8.1",
|
|
60
|
-
"tslib": "^2.1.0",
|
|
61
|
-
"typescript": "^4.4.4",
|
|
62
|
-
"uuid": "^9.0.0",
|
|
63
|
-
"webpack": "^5.73.0",
|
|
64
|
-
"webpack-cli": "^4.10.0",
|
|
65
|
-
"webpack-node-externals": "^2.5.1"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@clairejs/server",
|
|
3
|
+
"version": "3.13.0",
|
|
4
|
+
"description": "Claire server NodeJs framework written in Typescript.",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test-http": "mocha -r ts-node/register ./test/e2e/e2e.test.ts",
|
|
9
|
+
"test-socket": "mocha -r ts-node/register ./test/socket/socket.test.ts",
|
|
10
|
+
"test": "npm run test-http && npm run test-socket",
|
|
11
|
+
"build": "rm -rf ./dist && webpack --mode production",
|
|
12
|
+
"push": "npm run build && npm publish && git push"
|
|
13
|
+
},
|
|
14
|
+
"author": "immort",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"aws-sdk": "^2.841.0",
|
|
18
|
+
"cookie-parser": "^1.4.6",
|
|
19
|
+
"cors": "^2.8.5",
|
|
20
|
+
"express": "^4.17.1",
|
|
21
|
+
"express-fileupload": "^1.2.1",
|
|
22
|
+
"ioredis": "^5.2.0",
|
|
23
|
+
"mysql2": "^2.2.5",
|
|
24
|
+
"node-cron": "^3.0.1",
|
|
25
|
+
"node-schedule": "^2.1.0",
|
|
26
|
+
"parseurl": "^1.3.3",
|
|
27
|
+
"path-to-regexp": "^6.2.0",
|
|
28
|
+
"pg": "^8.5.1",
|
|
29
|
+
"pg-hstore": "^2.3.4",
|
|
30
|
+
"query-string": "^6.14.0",
|
|
31
|
+
"randomstring": "^1.2.2",
|
|
32
|
+
"redlock": "^5.0.0-beta.2",
|
|
33
|
+
"reflect-metadata": "^0.1.13",
|
|
34
|
+
"ws": "^7.5.5"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@clairejs/client": "^3.2.12",
|
|
38
|
+
"@clairejs/core": "^3.3.1",
|
|
39
|
+
"@clairejs/orm": "^3.3.4"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/cookie-parser": "^1.4.3",
|
|
43
|
+
"@types/cors": "^2.8.12",
|
|
44
|
+
"@types/express": "^4.17.11",
|
|
45
|
+
"@types/express-fileupload": "^1.1.6",
|
|
46
|
+
"@types/mocha": "^8.2.2",
|
|
47
|
+
"@types/node": "^14.14.25",
|
|
48
|
+
"@types/node-schedule": "^2.1.0",
|
|
49
|
+
"@types/parseurl": "^1.3.1",
|
|
50
|
+
"@types/randomstring": "^1.1.8",
|
|
51
|
+
"@types/uuid": "^9.0.0",
|
|
52
|
+
"@types/validator": "^13.1.3",
|
|
53
|
+
"@types/webpack-env": "^1.16.0",
|
|
54
|
+
"@types/ws": "^7.4.0",
|
|
55
|
+
"axios": "^0.21.1",
|
|
56
|
+
"mocha": "^10.0.0",
|
|
57
|
+
"terser-webpack-plugin": "^4.2.3",
|
|
58
|
+
"ts-loader": "^8.4.0",
|
|
59
|
+
"ts-node": "^10.8.1",
|
|
60
|
+
"tslib": "^2.1.0",
|
|
61
|
+
"typescript": "^4.4.4",
|
|
62
|
+
"uuid": "^9.0.0",
|
|
63
|
+
"webpack": "^5.73.0",
|
|
64
|
+
"webpack-cli": "^4.10.0",
|
|
65
|
+
"webpack-node-externals": "^2.5.1"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -1,18 +0,0 @@
|
|
|
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 { AbstractHttpAuthorizer } from "./AbstractHttpAuthorizer";
|
|
6
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
7
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
8
|
-
export declare abstract class AbstractRbacHttpAuthorizer<T extends IPrincipal> extends AbstractHttpAuthorizer<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,24 +0,0 @@
|
|
|
1
|
-
import { AbstractLogger } from "@clairejs/core";
|
|
2
|
-
import { AbstractPrincipalResolver } from "../../common/auth/AbstractPrincipalResolver";
|
|
3
|
-
import { IPrincipal } from "../../common/auth/IPrincipal";
|
|
4
|
-
import { AbstractCacheService } from "../../services/AbstractCacheService";
|
|
5
|
-
import { HttpRequest } from "../common/HttpRequest";
|
|
6
|
-
import { AbstractRbacHttpAuthorizer } from "./AbstractRbacHttpAuthorizer";
|
|
7
|
-
import { RbacCache } from "./rbac";
|
|
8
|
-
export declare class RedisRbacHttpAuthorizer<T extends IPrincipal> extends AbstractRbacHttpAuthorizer<T> {
|
|
9
|
-
readonly serviceIdResolver: () => Promise<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
|
-
private serviceId;
|
|
21
|
-
constructor(serviceIdResolver: () => Promise<string>, rbacChannel: string, principalChannel: string, authDataResolver: (req: HttpRequest) => any, principalResolver: AbstractPrincipalResolver<T>, cacheService: AbstractCacheService, logger: AbstractLogger, redisDataRetentionDurationMs?: number);
|
|
22
|
-
getRbacCache(): Promise<RbacCache | undefined>;
|
|
23
|
-
getRolesOfPrincipal(principal: T): Promise<number[]>;
|
|
24
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { AbstractLogger, IInit, IClientSocket } from "@clairejs/core";
|
|
2
|
-
import { AbstractRbacHttpAuthorizer } from "./AbstractRbacHttpAuthorizer";
|
|
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 SocketRbacHttpAuthorizer<T extends IPrincipal> extends AbstractRbacHttpAuthorizer<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
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
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
|
-
}
|