@clairejs/server 3.15.2 → 3.16.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/.mocharc.json +3 -0
- package/dist/common/AbstractController.js +3 -0
- package/dist/common/ControllerMetadata.js +1 -0
- package/dist/common/FileOperation.js +6 -0
- package/dist/common/ServerModelMetadata.js +1 -0
- package/dist/common/Transactionable.js +17 -0
- package/dist/common/auth/AbstractPrincipalResolver.js +2 -0
- package/dist/common/auth/IPrincipal.js +1 -0
- package/dist/common/constants.js +7 -0
- package/dist/common/decorator.d.ts +2 -2
- package/dist/common/decorator.js +6 -0
- package/dist/common/request/EndpointMetadata.js +1 -0
- package/dist/common/request/HttpData.js +1 -0
- package/dist/common/request/HttpEndpoint.js +1 -0
- package/dist/common/request/JobData.js +1 -0
- package/dist/common/request/MountedEndpointInfo.js +1 -0
- package/dist/common/request/RequestOptions.js +1 -0
- package/dist/common/request/SocketData.js +1 -0
- package/dist/common/request/types.d.ts +1 -1
- package/dist/common/request/types.js +1 -0
- package/dist/controllers/FileManageController.js +90 -0
- package/dist/controllers/FileUploadController.js +64 -0
- package/dist/controllers/dto/system.js +14 -0
- package/dist/controllers/dto/upload.js +205 -0
- package/dist/http/auth/AbstractHttpAuthorizer.js +2 -0
- package/dist/http/common/HttpRequest.js +72 -0
- package/dist/http/common/HttpResponse.js +62 -0
- package/dist/http/controller/AbstractHttpController.js +21 -0
- package/dist/http/controller/AbstractHttpMiddleware.js +2 -0
- package/dist/http/controller/AbstractHttpRequestHandler.js +69 -0
- package/dist/http/controller/CrudHttpController.js +302 -0
- package/dist/http/controller/DefaultHttpRequestHandler.js +143 -0
- package/dist/http/decorators.d.ts +1 -1
- package/dist/http/decorators.js +86 -0
- package/dist/http/file-upload/AbstractFileUploadHandler.js +2 -0
- package/dist/http/file-upload/FileUploadHandler.js +41 -0
- package/dist/http/file-upload/types.d.ts +1 -1
- package/dist/http/file-upload/types.js +1 -0
- package/dist/http/repository/AbstractRepository.js +26 -0
- package/dist/http/repository/DtoRepository.d.ts +3 -3
- package/dist/http/repository/DtoRepository.js +204 -0
- package/dist/http/repository/ICrudRepository.js +1 -0
- package/dist/http/repository/ModelRepository.js +696 -0
- package/dist/http/security/AbstractAccessCondition.js +2 -0
- package/dist/http/security/access-conditions/FilterModelFieldAccessCondition.js +30 -0
- package/dist/http/security/access-conditions/MaximumQueryLimit.js +31 -0
- package/dist/http/security/cors.js +1 -0
- package/dist/http/utils.js +32 -0
- package/dist/index.js +75 -1
- package/dist/job/AbstractJobController.js +9 -0
- package/dist/job/AbstractJobRepository.js +2 -0
- package/dist/job/AbstractJobScheduler.js +48 -0
- package/dist/job/AwsJobScheduler.js +405 -0
- package/dist/job/LocalJobScheduler.js +273 -0
- package/dist/job/decorators.js +57 -0
- package/dist/job/interfaces.js +10 -0
- package/dist/logging/FileLogMedium.js +44 -0
- package/dist/services/AbstractFileService.js +28 -0
- package/dist/services/AbstractMailService.js +2 -0
- package/dist/services/AbstractService.js +3 -0
- package/dist/services/AbstractSmsService.js +2 -0
- package/dist/services/implementations/LocalFileService.js +42 -0
- package/dist/services/implementations/LocalMailService.js +27 -0
- package/dist/services/implementations/LocalSmsService.js +17 -0
- package/dist/services/implementations/S3FileService.js +107 -0
- package/dist/services/implementations/SesMailService.js +64 -0
- package/dist/socket/AbstractServerSocket.js +44 -0
- package/dist/socket/AbstractServerSocketManager.d.ts +1 -1
- package/dist/socket/AbstractServerSocketManager.js +348 -0
- package/dist/socket/AbstractSocketConnectionHandler.js +2 -0
- package/dist/socket/AbstractSocketController.d.ts +3 -3
- package/dist/socket/AbstractSocketController.js +12 -0
- package/dist/socket/AwsSocketManager.d.ts +2 -2
- package/dist/socket/AwsSocketManager.js +160 -0
- package/dist/socket/IServerSocket.js +1 -0
- package/dist/socket/LocalSocketManager.js +292 -0
- package/dist/system/ClaireServer.js +78 -0
- package/dist/system/ExpressWrapper.js +122 -0
- package/dist/system/LambdaWrapper.js +151 -0
- package/dist/system/ServerGlobalStore.js +1 -0
- package/dist/system/lamba-request-mapper.js +49 -0
- package/dist/system/locale/LocaleEntry.js +13 -0
- package/dist/system/locale/LocaleTranslation.js +47 -0
- package/dist/system/locale/decorators.js +14 -0
- package/package.json +13 -20
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { SocketMethod } from "@clairejs/core";
|
|
2
|
+
import { CRON_REQUEST_METHOD, INTERVAL_REQUEST_METHOD } from "../job/interfaces";
|
|
3
|
+
const parseCookie = (cookieArray) => {
|
|
4
|
+
let result = {};
|
|
5
|
+
for (const cookie of cookieArray) {
|
|
6
|
+
const pairs = cookie.split("=");
|
|
7
|
+
if (pairs[0] && pairs[1]) {
|
|
8
|
+
result[pairs[0]] = pairs[1];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
export const lambdaRequestMapper = (event) => {
|
|
14
|
+
if (event.requestContext.eventType) {
|
|
15
|
+
//-- socket
|
|
16
|
+
const method = event.requestContext.eventType.toLowerCase();
|
|
17
|
+
const body = event.body && JSON.parse(event.body);
|
|
18
|
+
return {
|
|
19
|
+
method,
|
|
20
|
+
rawPath: event.requestContext.connectionId,
|
|
21
|
+
body: method === SocketMethod.CONNECT ? { queries: event.queryStringParameters } : body,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (event.requestContext.intervalScheduler) {
|
|
25
|
+
//-- interval scheduler
|
|
26
|
+
return {
|
|
27
|
+
method: INTERVAL_REQUEST_METHOD,
|
|
28
|
+
rawPath: "",
|
|
29
|
+
body: event.requestContext.intervalScheduler.time,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (event.requestContext.cronScheduler) {
|
|
33
|
+
//-- cron scheduler
|
|
34
|
+
return {
|
|
35
|
+
method: CRON_REQUEST_METHOD,
|
|
36
|
+
rawPath: "",
|
|
37
|
+
body: event.requestContext.cronScheduler.data,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//-- http
|
|
41
|
+
return {
|
|
42
|
+
clientIP: event.requestContext.http.sourceIp,
|
|
43
|
+
method: event.requestContext.http.method.toLowerCase(),
|
|
44
|
+
rawPath: `${event.rawPath}?${event.rawQueryString}`,
|
|
45
|
+
body: event.body && JSON.parse(event.body),
|
|
46
|
+
headers: event.headers,
|
|
47
|
+
cookies: parseCookie(event.cookies || []),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { AbstractModel, Model } from "@clairejs/core";
|
|
8
|
+
let LocaleEntry = class LocaleEntry extends AbstractModel {
|
|
9
|
+
};
|
|
10
|
+
LocaleEntry = __decorate([
|
|
11
|
+
Model()
|
|
12
|
+
], LocaleEntry);
|
|
13
|
+
export { LocaleEntry };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { AbstractModel, Column, Model, FK, Index } from "@clairejs/core";
|
|
11
|
+
import { LocaleEntry } from "./LocaleEntry";
|
|
12
|
+
let LocaleTranslation = class LocaleTranslation extends AbstractModel {
|
|
13
|
+
entryId;
|
|
14
|
+
localeCode;
|
|
15
|
+
translation;
|
|
16
|
+
};
|
|
17
|
+
__decorate([
|
|
18
|
+
Column({
|
|
19
|
+
description: "Id of the locale",
|
|
20
|
+
isRequired: true,
|
|
21
|
+
...FK({ model: LocaleEntry, cascade: "delete" }),
|
|
22
|
+
}),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], LocaleTranslation.prototype, "entryId", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
Column({
|
|
27
|
+
description: "Code of locale",
|
|
28
|
+
isRequired: true,
|
|
29
|
+
textLength: 3,
|
|
30
|
+
}),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], LocaleTranslation.prototype, "localeCode", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
Column({
|
|
35
|
+
description: "Translation of locale",
|
|
36
|
+
isRequired: true,
|
|
37
|
+
}),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], LocaleTranslation.prototype, "translation", void 0);
|
|
40
|
+
LocaleTranslation = __decorate([
|
|
41
|
+
Model(),
|
|
42
|
+
Index([
|
|
43
|
+
["entryId", 1],
|
|
44
|
+
["localeCode", 1],
|
|
45
|
+
], { unique: true })
|
|
46
|
+
], LocaleTranslation);
|
|
47
|
+
export { LocaleTranslation };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FK, DataType, initFieldMetadata } from "@clairejs/core";
|
|
2
|
+
import { LocaleEntry } from "./LocaleEntry";
|
|
3
|
+
export const LocaleOf = (
|
|
4
|
+
/**
|
|
5
|
+
* Name of the column to localize
|
|
6
|
+
*/
|
|
7
|
+
referenceColumn) => (prototype, propertyKey) => {
|
|
8
|
+
const field = initFieldMetadata(prototype, propertyKey);
|
|
9
|
+
field.multiLocaleColumn = referenceColumn;
|
|
10
|
+
field.fk = FK({ model: LocaleEntry, cascade: "nullify" }).fk;
|
|
11
|
+
field.dataType = DataType.NUMBER;
|
|
12
|
+
const refField = initFieldMetadata(prototype, referenceColumn);
|
|
13
|
+
refField.isMultiLocale = true;
|
|
14
|
+
};
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clairejs/server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0",
|
|
4
4
|
"description": "Claire server NodeJs framework written in Typescript.",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"scripts": {
|
|
8
|
-
"test-http": "mocha
|
|
9
|
-
"test-socket": "mocha
|
|
9
|
+
"test-http": "mocha ./test/e2e/e2e.test.ts",
|
|
10
|
+
"test-socket": "mocha ./test/socket/socket.test.ts",
|
|
10
11
|
"test": "npm run test-http && npm run test-socket",
|
|
11
|
-
"build": "rm -rf ./dist &&
|
|
12
|
+
"build": "rm -rf ./dist && tsc -p ./tsconfig-build.json",
|
|
12
13
|
"push": "npm run build && npm publish && git push"
|
|
13
14
|
},
|
|
14
15
|
"author": "immort",
|
|
@@ -33,8 +34,8 @@
|
|
|
33
34
|
"ws": "^7.5.5"
|
|
34
35
|
},
|
|
35
36
|
"peerDependencies": {
|
|
36
|
-
"@clairejs/core": "^3.
|
|
37
|
-
"@clairejs/orm": "^3.
|
|
37
|
+
"@clairejs/core": "^3.5.2",
|
|
38
|
+
"@clairejs/orm": "^3.9.0",
|
|
38
39
|
"ioredis": "^5.2.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
@@ -42,25 +43,17 @@
|
|
|
42
43
|
"@types/cors": "^2.8.12",
|
|
43
44
|
"@types/express": "^4.17.11",
|
|
44
45
|
"@types/express-fileupload": "^1.1.6",
|
|
45
|
-
"@types/mocha": "^
|
|
46
|
-
"@types/node": "^
|
|
46
|
+
"@types/mocha": "^10.0.1",
|
|
47
|
+
"@types/node": "^18.16.1",
|
|
47
48
|
"@types/node-schedule": "^2.1.0",
|
|
48
49
|
"@types/parseurl": "^1.3.1",
|
|
49
50
|
"@types/randomstring": "^1.1.8",
|
|
50
51
|
"@types/uuid": "^9.0.0",
|
|
51
|
-
"@types/validator": "^13.1.3",
|
|
52
|
-
"@types/webpack-env": "^1.16.0",
|
|
53
52
|
"@types/ws": "^7.4.0",
|
|
54
53
|
"axios": "^0.21.1",
|
|
55
|
-
"mocha": "^10.
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"tslib": "^2.1.0",
|
|
60
|
-
"typescript": "^4.4.4",
|
|
61
|
-
"uuid": "^9.0.0",
|
|
62
|
-
"webpack": "^5.73.0",
|
|
63
|
-
"webpack-cli": "^4.10.0",
|
|
64
|
-
"webpack-node-externals": "^2.5.1"
|
|
54
|
+
"mocha": "^10.2.0",
|
|
55
|
+
"ts-node": "^10.9.1",
|
|
56
|
+
"typescript": "^5.0.4",
|
|
57
|
+
"uuid": "^9.0.0"
|
|
65
58
|
}
|
|
66
59
|
}
|