@grandlinex/kernel 0.32.0 → 0.32.10
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/CHANGELOG.md +4 -0
- package/dist/cjs/Kernel.d.ts +4 -1
- package/dist/cjs/Kernel.js +4 -0
- package/dist/cjs/actions/ApiAuthTestAction.d.ts +2 -6
- package/dist/cjs/actions/ApiAuthTestAction.js +26 -7
- package/dist/cjs/actions/ApiVersionAction.d.ts +3 -7
- package/dist/cjs/actions/ApiVersionAction.js +36 -9
- package/dist/cjs/actions/GetTokenAction.d.ts +3 -3
- package/dist/cjs/actions/GetTokenAction.js +48 -5
- package/dist/cjs/classes/BaseAction.d.ts +2 -4
- package/dist/cjs/classes/BaseAction.js +21 -3
- package/dist/cjs/classes/BaseAuthProvider.js +3 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/lib/express.d.ts +8 -0
- package/dist/cjs/lib/index.d.ts +4 -3
- package/dist/mjs/Kernel.d.ts +4 -1
- package/dist/mjs/Kernel.js +4 -0
- package/dist/mjs/actions/ApiAuthTestAction.d.ts +2 -6
- package/dist/mjs/actions/ApiAuthTestAction.js +27 -7
- package/dist/mjs/actions/ApiVersionAction.d.ts +3 -7
- package/dist/mjs/actions/ApiVersionAction.js +38 -10
- package/dist/mjs/actions/GetTokenAction.d.ts +3 -3
- package/dist/mjs/actions/GetTokenAction.js +50 -6
- package/dist/mjs/classes/BaseAction.d.ts +2 -4
- package/dist/mjs/classes/BaseAction.js +21 -3
- package/dist/mjs/classes/BaseAuthProvider.js +3 -1
- package/dist/mjs/index.d.ts +1 -0
- package/dist/mjs/index.js +1 -0
- package/dist/mjs/lib/express.d.ts +8 -0
- package/dist/mjs/lib/index.d.ts +4 -3
- package/package.json +20 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
## [v0.32.10] - 2023-10-06
|
|
5
|
+
### Changed
|
|
6
|
+
- Breaking Change: BaseApiAction now use XActionEvent
|
|
7
|
+
|
|
4
8
|
## [v0.31.1] - 2023-07-07
|
|
5
9
|
### Added
|
|
6
10
|
- @/token pass the token body to jwt generator function
|
package/dist/cjs/Kernel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CoreKernel, CoreLogger } from '@grandlinex/core';
|
|
2
2
|
import { ICClient, IKernel } from './lib/index.js';
|
|
3
3
|
import { XRequest } from './lib/express.js';
|
|
4
4
|
/**
|
|
@@ -6,6 +6,7 @@ import { XRequest } from './lib/express.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
8
8
|
private expressPort;
|
|
9
|
+
private readonly apiVersion;
|
|
9
10
|
/**
|
|
10
11
|
* Default Constructor
|
|
11
12
|
* @param options App Name
|
|
@@ -13,6 +14,7 @@ export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
|
13
14
|
constructor(options: {
|
|
14
15
|
appName: string;
|
|
15
16
|
appCode: string;
|
|
17
|
+
apiVersion?: number;
|
|
16
18
|
pathOverride?: string;
|
|
17
19
|
portOverride?: number;
|
|
18
20
|
envFilePath?: string;
|
|
@@ -21,6 +23,7 @@ export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
|
21
23
|
});
|
|
22
24
|
getAppServerPort(): number;
|
|
23
25
|
setAppServerPort(port: number): void;
|
|
26
|
+
getApiVersion(): number;
|
|
24
27
|
responseCodeFunction(data: {
|
|
25
28
|
code: number;
|
|
26
29
|
req: XRequest;
|
package/dist/cjs/Kernel.js
CHANGED
|
@@ -16,6 +16,7 @@ class Kernel extends core_1.CoreKernel {
|
|
|
16
16
|
*/
|
|
17
17
|
constructor(options) {
|
|
18
18
|
super({ ...options });
|
|
19
|
+
this.apiVersion = options.apiVersion ?? 1;
|
|
19
20
|
this.setBaseModule(new KernelModule_js_1.default(this));
|
|
20
21
|
if (options.portOverride) {
|
|
21
22
|
this.debug(`use custiom api port @ ${options.portOverride}`);
|
|
@@ -35,6 +36,9 @@ class Kernel extends core_1.CoreKernel {
|
|
|
35
36
|
setAppServerPort(port) {
|
|
36
37
|
this.expressPort = port;
|
|
37
38
|
}
|
|
39
|
+
getApiVersion() {
|
|
40
|
+
return this.apiVersion;
|
|
41
|
+
}
|
|
38
42
|
responseCodeFunction(data) {
|
|
39
43
|
const { code } = data;
|
|
40
44
|
if (code < 200 || code >= 300) {
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
2
|
import { BaseApiAction, JwtToken } from '../classes/index.js';
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
* @name ApiAuthTestAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
8
4
|
export default class ApiAuthTestAction extends BaseApiAction {
|
|
9
5
|
constructor(module: IBaseKernelModule<any, any, any, any>);
|
|
10
|
-
handler(
|
|
6
|
+
handler({ data, res }: XActionEvent<JwtToken>): Promise<void>;
|
|
11
7
|
}
|
|
@@ -1,18 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const swagger_mate_1 = require("@grandlinex/swagger-mate");
|
|
3
13
|
const index_js_1 = require("../classes/index.js");
|
|
4
|
-
|
|
5
|
-
* @name ApiAuthTestAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
class ApiAuthTestAction extends index_js_1.BaseApiAction {
|
|
14
|
+
let ApiAuthTestAction = class ApiAuthTestAction extends index_js_1.BaseApiAction {
|
|
9
15
|
constructor(module) {
|
|
10
16
|
super('GET', '/test/auth', module);
|
|
11
17
|
this.handler = this.handler.bind(this);
|
|
12
18
|
}
|
|
13
|
-
async handler(
|
|
19
|
+
async handler({ data, res }) {
|
|
14
20
|
this.debug(data.userid);
|
|
15
21
|
res.status(200).send("It work's");
|
|
16
22
|
}
|
|
17
|
-
}
|
|
23
|
+
};
|
|
24
|
+
ApiAuthTestAction = __decorate([
|
|
25
|
+
(0, swagger_mate_1.SPath)({
|
|
26
|
+
'/test/auth': {
|
|
27
|
+
get: {
|
|
28
|
+
operationId: 'testAuth',
|
|
29
|
+
summary: 'Test user auth',
|
|
30
|
+
tags: ['kernel'],
|
|
31
|
+
responses: swagger_mate_1.SPathUtil.defaultResponse('200', '403'),
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
}),
|
|
35
|
+
__metadata("design:paramtypes", [Object])
|
|
36
|
+
], ApiAuthTestAction);
|
|
18
37
|
exports.default = ApiAuthTestAction;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
|
-
import { BaseApiAction
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
* @name ApiVersionAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
2
|
+
import { BaseApiAction } from '../classes/index.js';
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
8
4
|
export default class ApiVersionAction extends BaseApiAction {
|
|
9
5
|
constructor(module: IBaseKernelModule);
|
|
10
|
-
handler(
|
|
6
|
+
handler({ res, extension }: XActionEvent): Promise<void>;
|
|
11
7
|
}
|
|
@@ -1,19 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const swagger_mate_1 = require("@grandlinex/swagger-mate");
|
|
3
13
|
const index_js_1 = require("../classes/index.js");
|
|
4
|
-
|
|
5
|
-
* @name ApiVersionAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
class ApiVersionAction extends index_js_1.BaseApiAction {
|
|
14
|
+
let ApiVersionAction = class ApiVersionAction extends index_js_1.BaseApiAction {
|
|
9
15
|
constructor(module) {
|
|
10
16
|
super('GET', '/version', module);
|
|
11
17
|
this.handler = this.handler.bind(this);
|
|
12
18
|
this.setMode(index_js_1.ActionMode.DMZ);
|
|
13
19
|
}
|
|
14
|
-
async handler(
|
|
15
|
-
|
|
16
|
-
res.status(200).send({ api:
|
|
20
|
+
async handler({ res, extension }) {
|
|
21
|
+
extension.done();
|
|
22
|
+
res.status(200).send({ api: this.getKernel().getApiVersion() });
|
|
17
23
|
}
|
|
18
|
-
}
|
|
24
|
+
};
|
|
25
|
+
ApiVersionAction = __decorate([
|
|
26
|
+
(0, swagger_mate_1.SPath)({
|
|
27
|
+
'/version': {
|
|
28
|
+
get: {
|
|
29
|
+
operationId: 'getVersion',
|
|
30
|
+
summary: 'Get API version',
|
|
31
|
+
tags: ['kernel'],
|
|
32
|
+
responses: swagger_mate_1.SPathUtil.jsonResponse('200', {
|
|
33
|
+
type: 'object',
|
|
34
|
+
properties: {
|
|
35
|
+
api: {
|
|
36
|
+
type: 'number',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
required: ['api'],
|
|
40
|
+
}, false, '403'),
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
}),
|
|
44
|
+
__metadata("design:paramtypes", [Object])
|
|
45
|
+
], ApiVersionAction);
|
|
19
46
|
exports.default = ApiVersionAction;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
|
-
import { BaseApiAction,
|
|
3
|
-
import {
|
|
2
|
+
import { BaseApiAction, JwtToken } from '../classes/index.js';
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
4
4
|
export default class GetTokenAction extends BaseApiAction {
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @param module Parent Module
|
|
8
8
|
*/
|
|
9
9
|
constructor(module: IBaseKernelModule<any, any, any, any>);
|
|
10
|
-
handler(req
|
|
10
|
+
handler({ req, res, extension, }: XActionEvent<JwtToken>): Promise<void>;
|
|
11
11
|
}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const swagger_mate_1 = require("@grandlinex/swagger-mate");
|
|
3
13
|
const index_js_1 = require("../classes/index.js");
|
|
4
|
-
class GetTokenAction extends index_js_1.BaseApiAction {
|
|
14
|
+
let GetTokenAction = class GetTokenAction extends index_js_1.BaseApiAction {
|
|
5
15
|
/**
|
|
6
16
|
*
|
|
7
17
|
* @param module Parent Module
|
|
@@ -11,7 +21,7 @@ class GetTokenAction extends index_js_1.BaseApiAction {
|
|
|
11
21
|
this.handler = this.handler.bind(this);
|
|
12
22
|
this.setMode(index_js_1.ActionMode.DMZ);
|
|
13
23
|
}
|
|
14
|
-
async handler(req, res,
|
|
24
|
+
async handler({ req, res, extension, }) {
|
|
15
25
|
const cc = this.getKernel().getCryptoClient();
|
|
16
26
|
if (!req.body.token) {
|
|
17
27
|
res.status(400).send('no token');
|
|
@@ -22,18 +32,51 @@ class GetTokenAction extends index_js_1.BaseApiAction {
|
|
|
22
32
|
return;
|
|
23
33
|
}
|
|
24
34
|
const { username, token } = req.body;
|
|
25
|
-
const valid = await
|
|
35
|
+
const valid = await extension.timing.startFunc('validation', () => cc.apiTokenValidation(username, token, 'api'));
|
|
26
36
|
if (valid.valid && valid.userId) {
|
|
27
37
|
const jwt = await cc.jwtGenerateAccessToken({
|
|
28
38
|
userid: valid.userId,
|
|
29
39
|
username,
|
|
30
40
|
}, req.body);
|
|
31
|
-
|
|
41
|
+
extension.done();
|
|
32
42
|
res.status(200).send({ token: jwt });
|
|
33
43
|
}
|
|
34
44
|
else {
|
|
35
45
|
res.status(403).send('no no no ...');
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
|
-
}
|
|
48
|
+
};
|
|
49
|
+
GetTokenAction = __decorate([
|
|
50
|
+
(0, swagger_mate_1.SPath)({
|
|
51
|
+
'/token': {
|
|
52
|
+
post: {
|
|
53
|
+
operationId: 'getToken',
|
|
54
|
+
summary: 'Get API token',
|
|
55
|
+
tags: ['kernel'],
|
|
56
|
+
requestBody: swagger_mate_1.SPathUtil.jsonBody({
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
username: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
},
|
|
62
|
+
token: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
required: ['username', 'token'],
|
|
67
|
+
}),
|
|
68
|
+
responses: swagger_mate_1.SPathUtil.jsonResponse('200', {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
token: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
required: ['token'],
|
|
76
|
+
}, false, '403'),
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
__metadata("design:paramtypes", [Object])
|
|
81
|
+
], GetTokenAction);
|
|
39
82
|
exports.default = GetTokenAction;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { CoreAction, IDataBase } from '@grandlinex/core';
|
|
2
2
|
import { IBaseAction, IBaseCache, IBaseClient, IBaseKernelModule, IBasePresenter, IKernel } from '../lib/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import { IExtensionInterface } from './timing/index.js';
|
|
5
|
-
import { XNextFc, XRequest, XResponse } from '../lib/express.js';
|
|
3
|
+
import { XActionEvent, XRequest, XResponse } from '../lib/express.js';
|
|
6
4
|
export declare enum ActionMode {
|
|
7
5
|
'DEFAULT' = 0,
|
|
8
6
|
'DMZ' = 1,
|
|
@@ -12,7 +10,7 @@ export default abstract class BaseAction<K extends IKernel = IKernel, T extends
|
|
|
12
10
|
mode: ActionMode;
|
|
13
11
|
forceDebug: boolean;
|
|
14
12
|
constructor(chanel: string, module: IBaseKernelModule<K, T, P, C, E>);
|
|
15
|
-
abstract handler(
|
|
13
|
+
abstract handler(event: XActionEvent): Promise<void>;
|
|
16
14
|
secureHandler(req: XRequest, res: XResponse, next: () => void): Promise<void>;
|
|
17
15
|
setMode(mode: ActionMode): void;
|
|
18
16
|
abstract register(): void;
|
|
@@ -32,16 +32,34 @@ class BaseAction extends core_1.CoreAction {
|
|
|
32
32
|
}
|
|
33
33
|
if (this.mode === ActionMode.DMZ) {
|
|
34
34
|
auth.stop();
|
|
35
|
-
await this.handler(
|
|
35
|
+
await this.handler({
|
|
36
|
+
res,
|
|
37
|
+
req,
|
|
38
|
+
next,
|
|
39
|
+
data: null,
|
|
40
|
+
extension,
|
|
41
|
+
});
|
|
36
42
|
return;
|
|
37
43
|
}
|
|
38
44
|
const dat = await cc.bearerTokenValidation(req);
|
|
39
45
|
auth.stop();
|
|
40
46
|
if (dat && typeof dat !== 'number') {
|
|
41
|
-
await this.handler(
|
|
47
|
+
await this.handler({
|
|
48
|
+
res,
|
|
49
|
+
req,
|
|
50
|
+
next,
|
|
51
|
+
data: dat,
|
|
52
|
+
extension,
|
|
53
|
+
});
|
|
42
54
|
}
|
|
43
55
|
else if (this.mode === ActionMode.DMZ_WITH_USER) {
|
|
44
|
-
await this.handler(
|
|
56
|
+
await this.handler({
|
|
57
|
+
res,
|
|
58
|
+
req,
|
|
59
|
+
next,
|
|
60
|
+
data: null,
|
|
61
|
+
extension,
|
|
62
|
+
});
|
|
45
63
|
}
|
|
46
64
|
else if (dat) {
|
|
47
65
|
res.sendStatus(dat);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
class BaseAuthProvider {
|
|
4
|
-
async jwtAddData(token,
|
|
4
|
+
async jwtAddData(token,
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
|
+
extend) {
|
|
5
7
|
return token;
|
|
6
8
|
}
|
|
7
9
|
}
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -33,4 +33,5 @@ __exportStar(require("./modules/crypto/index.js"), exports);
|
|
|
33
33
|
__exportStar(require("./lib/index.js"), exports);
|
|
34
34
|
__exportStar(require("./lib/express.js"), exports);
|
|
35
35
|
__exportStar(require("@grandlinex/core"), exports);
|
|
36
|
+
__exportStar(require("@grandlinex/swagger-mate"), exports);
|
|
36
37
|
exports.default = Kernel_js_1.default;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
+
import { IExtensionInterface, JwtToken } from '../classes/index.js';
|
|
2
3
|
export type XRequest = express.Request & {
|
|
3
4
|
rawBody?: string | null;
|
|
4
5
|
};
|
|
5
6
|
export type XResponse = express.Response;
|
|
6
7
|
export type XNextFc = express.NextFunction;
|
|
8
|
+
export type XActionEvent<G = JwtToken | null> = {
|
|
9
|
+
req: XRequest;
|
|
10
|
+
res: XResponse;
|
|
11
|
+
next: XNextFc;
|
|
12
|
+
data: G;
|
|
13
|
+
extension: IExtensionInterface;
|
|
14
|
+
};
|
package/dist/cjs/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ICoreAction, ICoreBridge, ICoreCache, ICoreCClient, ICoreClient, ICoreElement, ICoreKernel, ICoreKernelModule, ICorePresenter, ICoreService, IDataBase } from '@grandlinex/core';
|
|
2
2
|
import express from 'express';
|
|
3
3
|
import * as jwt from 'jsonwebtoken';
|
|
4
|
-
import { IAuthProvider,
|
|
5
|
-
import {
|
|
4
|
+
import { IAuthProvider, JwtExtend, JwtToken } from '../classes/index.js';
|
|
5
|
+
import { XActionEvent, XRequest } from './express.js';
|
|
6
6
|
export type ActionTypes = 'POST' | 'GET' | 'USE' | 'PATCH' | 'DELETE';
|
|
7
7
|
export interface ICClient<T extends JwtExtend = JwtExtend> extends ICoreCClient {
|
|
8
8
|
setAuthProvider(provider: IAuthProvider<T>): boolean;
|
|
@@ -18,6 +18,7 @@ export interface ICClient<T extends JwtExtend = JwtExtend> extends ICoreCClient
|
|
|
18
18
|
}
|
|
19
19
|
export interface IKernel<T extends JwtExtend = JwtExtend> extends ICoreKernel<ICClient<T>> {
|
|
20
20
|
getAppServerPort(): number;
|
|
21
|
+
getApiVersion(): number;
|
|
21
22
|
setAppServerPort(port: number): void;
|
|
22
23
|
responseCodeFunction(data: {
|
|
23
24
|
code: number;
|
|
@@ -32,5 +33,5 @@ export type IBaseBrige = ICoreBridge;
|
|
|
32
33
|
export type IBaseCache<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> = ICoreCache<K, T, P, C, E>;
|
|
33
34
|
export type IBaseElement<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> = ICoreElement<K, T, P, C, E>;
|
|
34
35
|
export interface IBaseAction<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> extends ICoreAction<K, T, P, C, E> {
|
|
35
|
-
handler(
|
|
36
|
+
handler(event: XActionEvent): Promise<void>;
|
|
36
37
|
}
|
package/dist/mjs/Kernel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CoreKernel, CoreLogger } from '@grandlinex/core';
|
|
2
2
|
import { ICClient, IKernel } from './lib/index.js';
|
|
3
3
|
import { XRequest } from './lib/express.js';
|
|
4
4
|
/**
|
|
@@ -6,6 +6,7 @@ import { XRequest } from './lib/express.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
8
8
|
private expressPort;
|
|
9
|
+
private readonly apiVersion;
|
|
9
10
|
/**
|
|
10
11
|
* Default Constructor
|
|
11
12
|
* @param options App Name
|
|
@@ -13,6 +14,7 @@ export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
|
13
14
|
constructor(options: {
|
|
14
15
|
appName: string;
|
|
15
16
|
appCode: string;
|
|
17
|
+
apiVersion?: number;
|
|
16
18
|
pathOverride?: string;
|
|
17
19
|
portOverride?: number;
|
|
18
20
|
envFilePath?: string;
|
|
@@ -21,6 +23,7 @@ export default class Kernel extends CoreKernel<ICClient> implements IKernel {
|
|
|
21
23
|
});
|
|
22
24
|
getAppServerPort(): number;
|
|
23
25
|
setAppServerPort(port: number): void;
|
|
26
|
+
getApiVersion(): number;
|
|
24
27
|
responseCodeFunction(data: {
|
|
25
28
|
code: number;
|
|
26
29
|
req: XRequest;
|
package/dist/mjs/Kernel.js
CHANGED
|
@@ -11,6 +11,7 @@ export default class Kernel extends CoreKernel {
|
|
|
11
11
|
*/
|
|
12
12
|
constructor(options) {
|
|
13
13
|
super({ ...options });
|
|
14
|
+
this.apiVersion = options.apiVersion ?? 1;
|
|
14
15
|
this.setBaseModule(new KernelModule(this));
|
|
15
16
|
if (options.portOverride) {
|
|
16
17
|
this.debug(`use custiom api port @ ${options.portOverride}`);
|
|
@@ -30,6 +31,9 @@ export default class Kernel extends CoreKernel {
|
|
|
30
31
|
setAppServerPort(port) {
|
|
31
32
|
this.expressPort = port;
|
|
32
33
|
}
|
|
34
|
+
getApiVersion() {
|
|
35
|
+
return this.apiVersion;
|
|
36
|
+
}
|
|
33
37
|
responseCodeFunction(data) {
|
|
34
38
|
const { code } = data;
|
|
35
39
|
if (code < 200 || code >= 300) {
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
2
|
import { BaseApiAction, JwtToken } from '../classes/index.js';
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
* @name ApiAuthTestAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
8
4
|
export default class ApiAuthTestAction extends BaseApiAction {
|
|
9
5
|
constructor(module: IBaseKernelModule<any, any, any, any>);
|
|
10
|
-
handler(
|
|
6
|
+
handler({ data, res }: XActionEvent<JwtToken>): Promise<void>;
|
|
11
7
|
}
|
|
@@ -1,15 +1,35 @@
|
|
|
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 { SPath, SPathUtil } from '@grandlinex/swagger-mate';
|
|
1
11
|
import { BaseApiAction } from '../classes/index.js';
|
|
2
|
-
|
|
3
|
-
* @name ApiAuthTestAction
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
export default class ApiAuthTestAction extends BaseApiAction {
|
|
12
|
+
let ApiAuthTestAction = class ApiAuthTestAction extends BaseApiAction {
|
|
7
13
|
constructor(module) {
|
|
8
14
|
super('GET', '/test/auth', module);
|
|
9
15
|
this.handler = this.handler.bind(this);
|
|
10
16
|
}
|
|
11
|
-
async handler(
|
|
17
|
+
async handler({ data, res }) {
|
|
12
18
|
this.debug(data.userid);
|
|
13
19
|
res.status(200).send("It work's");
|
|
14
20
|
}
|
|
15
|
-
}
|
|
21
|
+
};
|
|
22
|
+
ApiAuthTestAction = __decorate([
|
|
23
|
+
SPath({
|
|
24
|
+
'/test/auth': {
|
|
25
|
+
get: {
|
|
26
|
+
operationId: 'testAuth',
|
|
27
|
+
summary: 'Test user auth',
|
|
28
|
+
tags: ['kernel'],
|
|
29
|
+
responses: SPathUtil.defaultResponse('200', '403'),
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
}),
|
|
33
|
+
__metadata("design:paramtypes", [Object])
|
|
34
|
+
], ApiAuthTestAction);
|
|
35
|
+
export default ApiAuthTestAction;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
|
-
import { BaseApiAction
|
|
3
|
-
import {
|
|
4
|
-
/**
|
|
5
|
-
* @name ApiVersionAction
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
2
|
+
import { BaseApiAction } from '../classes/index.js';
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
8
4
|
export default class ApiVersionAction extends BaseApiAction {
|
|
9
5
|
constructor(module: IBaseKernelModule);
|
|
10
|
-
handler(
|
|
6
|
+
handler({ res, extension }: XActionEvent): Promise<void>;
|
|
11
7
|
}
|
|
@@ -1,16 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 { SPath, SPathUtil } from '@grandlinex/swagger-mate';
|
|
11
|
+
import { ActionMode, BaseApiAction } from '../classes/index.js';
|
|
12
|
+
let ApiVersionAction = class ApiVersionAction extends BaseApiAction {
|
|
7
13
|
constructor(module) {
|
|
8
14
|
super('GET', '/version', module);
|
|
9
15
|
this.handler = this.handler.bind(this);
|
|
10
16
|
this.setMode(ActionMode.DMZ);
|
|
11
17
|
}
|
|
12
|
-
async handler(
|
|
13
|
-
|
|
14
|
-
res.status(200).send({ api:
|
|
18
|
+
async handler({ res, extension }) {
|
|
19
|
+
extension.done();
|
|
20
|
+
res.status(200).send({ api: this.getKernel().getApiVersion() });
|
|
15
21
|
}
|
|
16
|
-
}
|
|
22
|
+
};
|
|
23
|
+
ApiVersionAction = __decorate([
|
|
24
|
+
SPath({
|
|
25
|
+
'/version': {
|
|
26
|
+
get: {
|
|
27
|
+
operationId: 'getVersion',
|
|
28
|
+
summary: 'Get API version',
|
|
29
|
+
tags: ['kernel'],
|
|
30
|
+
responses: SPathUtil.jsonResponse('200', {
|
|
31
|
+
type: 'object',
|
|
32
|
+
properties: {
|
|
33
|
+
api: {
|
|
34
|
+
type: 'number',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
required: ['api'],
|
|
38
|
+
}, false, '403'),
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
__metadata("design:paramtypes", [Object])
|
|
43
|
+
], ApiVersionAction);
|
|
44
|
+
export default ApiVersionAction;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IBaseKernelModule } from '../lib/index.js';
|
|
2
|
-
import { BaseApiAction,
|
|
3
|
-
import {
|
|
2
|
+
import { BaseApiAction, JwtToken } from '../classes/index.js';
|
|
3
|
+
import { XActionEvent } from '../lib/express.js';
|
|
4
4
|
export default class GetTokenAction extends BaseApiAction {
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @param module Parent Module
|
|
8
8
|
*/
|
|
9
9
|
constructor(module: IBaseKernelModule<any, any, any, any>);
|
|
10
|
-
handler(req
|
|
10
|
+
handler({ req, res, extension, }: XActionEvent<JwtToken>): Promise<void>;
|
|
11
11
|
}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 { SPath, SPathUtil } from '@grandlinex/swagger-mate';
|
|
11
|
+
import { ActionMode, BaseApiAction } from '../classes/index.js';
|
|
12
|
+
let GetTokenAction = class GetTokenAction extends BaseApiAction {
|
|
3
13
|
/**
|
|
4
14
|
*
|
|
5
15
|
* @param module Parent Module
|
|
@@ -9,7 +19,7 @@ export default class GetTokenAction extends BaseApiAction {
|
|
|
9
19
|
this.handler = this.handler.bind(this);
|
|
10
20
|
this.setMode(ActionMode.DMZ);
|
|
11
21
|
}
|
|
12
|
-
async handler(req, res,
|
|
22
|
+
async handler({ req, res, extension, }) {
|
|
13
23
|
const cc = this.getKernel().getCryptoClient();
|
|
14
24
|
if (!req.body.token) {
|
|
15
25
|
res.status(400).send('no token');
|
|
@@ -20,17 +30,51 @@ export default class GetTokenAction extends BaseApiAction {
|
|
|
20
30
|
return;
|
|
21
31
|
}
|
|
22
32
|
const { username, token } = req.body;
|
|
23
|
-
const valid = await
|
|
33
|
+
const valid = await extension.timing.startFunc('validation', () => cc.apiTokenValidation(username, token, 'api'));
|
|
24
34
|
if (valid.valid && valid.userId) {
|
|
25
35
|
const jwt = await cc.jwtGenerateAccessToken({
|
|
26
36
|
userid: valid.userId,
|
|
27
37
|
username,
|
|
28
38
|
}, req.body);
|
|
29
|
-
|
|
39
|
+
extension.done();
|
|
30
40
|
res.status(200).send({ token: jwt });
|
|
31
41
|
}
|
|
32
42
|
else {
|
|
33
43
|
res.status(403).send('no no no ...');
|
|
34
44
|
}
|
|
35
45
|
}
|
|
36
|
-
}
|
|
46
|
+
};
|
|
47
|
+
GetTokenAction = __decorate([
|
|
48
|
+
SPath({
|
|
49
|
+
'/token': {
|
|
50
|
+
post: {
|
|
51
|
+
operationId: 'getToken',
|
|
52
|
+
summary: 'Get API token',
|
|
53
|
+
tags: ['kernel'],
|
|
54
|
+
requestBody: SPathUtil.jsonBody({
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
username: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
},
|
|
60
|
+
token: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
required: ['username', 'token'],
|
|
65
|
+
}),
|
|
66
|
+
responses: SPathUtil.jsonResponse('200', {
|
|
67
|
+
type: 'object',
|
|
68
|
+
properties: {
|
|
69
|
+
token: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
required: ['token'],
|
|
74
|
+
}, false, '403'),
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
__metadata("design:paramtypes", [Object])
|
|
79
|
+
], GetTokenAction);
|
|
80
|
+
export default GetTokenAction;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { CoreAction, IDataBase } from '@grandlinex/core';
|
|
2
2
|
import { IBaseAction, IBaseCache, IBaseClient, IBaseKernelModule, IBasePresenter, IKernel } from '../lib/index.js';
|
|
3
|
-
import {
|
|
4
|
-
import { IExtensionInterface } from './timing/index.js';
|
|
5
|
-
import { XNextFc, XRequest, XResponse } from '../lib/express.js';
|
|
3
|
+
import { XActionEvent, XRequest, XResponse } from '../lib/express.js';
|
|
6
4
|
export declare enum ActionMode {
|
|
7
5
|
'DEFAULT' = 0,
|
|
8
6
|
'DMZ' = 1,
|
|
@@ -12,7 +10,7 @@ export default abstract class BaseAction<K extends IKernel = IKernel, T extends
|
|
|
12
10
|
mode: ActionMode;
|
|
13
11
|
forceDebug: boolean;
|
|
14
12
|
constructor(chanel: string, module: IBaseKernelModule<K, T, P, C, E>);
|
|
15
|
-
abstract handler(
|
|
13
|
+
abstract handler(event: XActionEvent): Promise<void>;
|
|
16
14
|
secureHandler(req: XRequest, res: XResponse, next: () => void): Promise<void>;
|
|
17
15
|
setMode(mode: ActionMode): void;
|
|
18
16
|
abstract register(): void;
|
|
@@ -29,16 +29,34 @@ export default class BaseAction extends CoreAction {
|
|
|
29
29
|
}
|
|
30
30
|
if (this.mode === ActionMode.DMZ) {
|
|
31
31
|
auth.stop();
|
|
32
|
-
await this.handler(
|
|
32
|
+
await this.handler({
|
|
33
|
+
res,
|
|
34
|
+
req,
|
|
35
|
+
next,
|
|
36
|
+
data: null,
|
|
37
|
+
extension,
|
|
38
|
+
});
|
|
33
39
|
return;
|
|
34
40
|
}
|
|
35
41
|
const dat = await cc.bearerTokenValidation(req);
|
|
36
42
|
auth.stop();
|
|
37
43
|
if (dat && typeof dat !== 'number') {
|
|
38
|
-
await this.handler(
|
|
44
|
+
await this.handler({
|
|
45
|
+
res,
|
|
46
|
+
req,
|
|
47
|
+
next,
|
|
48
|
+
data: dat,
|
|
49
|
+
extension,
|
|
50
|
+
});
|
|
39
51
|
}
|
|
40
52
|
else if (this.mode === ActionMode.DMZ_WITH_USER) {
|
|
41
|
-
await this.handler(
|
|
53
|
+
await this.handler({
|
|
54
|
+
res,
|
|
55
|
+
req,
|
|
56
|
+
next,
|
|
57
|
+
data: null,
|
|
58
|
+
extension,
|
|
59
|
+
});
|
|
42
60
|
}
|
|
43
61
|
else if (dat) {
|
|
44
62
|
res.sendStatus(dat);
|
package/dist/mjs/index.d.ts
CHANGED
package/dist/mjs/index.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
|
+
import { IExtensionInterface, JwtToken } from '../classes/index.js';
|
|
2
3
|
export type XRequest = express.Request & {
|
|
3
4
|
rawBody?: string | null;
|
|
4
5
|
};
|
|
5
6
|
export type XResponse = express.Response;
|
|
6
7
|
export type XNextFc = express.NextFunction;
|
|
8
|
+
export type XActionEvent<G = JwtToken | null> = {
|
|
9
|
+
req: XRequest;
|
|
10
|
+
res: XResponse;
|
|
11
|
+
next: XNextFc;
|
|
12
|
+
data: G;
|
|
13
|
+
extension: IExtensionInterface;
|
|
14
|
+
};
|
package/dist/mjs/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ICoreAction, ICoreBridge, ICoreCache, ICoreCClient, ICoreClient, ICoreElement, ICoreKernel, ICoreKernelModule, ICorePresenter, ICoreService, IDataBase } from '@grandlinex/core';
|
|
2
2
|
import express from 'express';
|
|
3
3
|
import * as jwt from 'jsonwebtoken';
|
|
4
|
-
import { IAuthProvider,
|
|
5
|
-
import {
|
|
4
|
+
import { IAuthProvider, JwtExtend, JwtToken } from '../classes/index.js';
|
|
5
|
+
import { XActionEvent, XRequest } from './express.js';
|
|
6
6
|
export type ActionTypes = 'POST' | 'GET' | 'USE' | 'PATCH' | 'DELETE';
|
|
7
7
|
export interface ICClient<T extends JwtExtend = JwtExtend> extends ICoreCClient {
|
|
8
8
|
setAuthProvider(provider: IAuthProvider<T>): boolean;
|
|
@@ -18,6 +18,7 @@ export interface ICClient<T extends JwtExtend = JwtExtend> extends ICoreCClient
|
|
|
18
18
|
}
|
|
19
19
|
export interface IKernel<T extends JwtExtend = JwtExtend> extends ICoreKernel<ICClient<T>> {
|
|
20
20
|
getAppServerPort(): number;
|
|
21
|
+
getApiVersion(): number;
|
|
21
22
|
setAppServerPort(port: number): void;
|
|
22
23
|
responseCodeFunction(data: {
|
|
23
24
|
code: number;
|
|
@@ -32,5 +33,5 @@ export type IBaseBrige = ICoreBridge;
|
|
|
32
33
|
export type IBaseCache<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> = ICoreCache<K, T, P, C, E>;
|
|
33
34
|
export type IBaseElement<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> = ICoreElement<K, T, P, C, E>;
|
|
34
35
|
export interface IBaseAction<K extends IKernel = IKernel, T extends IDataBase<any, any> | null = any, P extends IBaseClient | null = any, C extends IBaseCache | null = any, E extends IBasePresenter | null = any> extends ICoreAction<K, T, P, C, E> {
|
|
35
|
-
handler(
|
|
36
|
+
handler(event: XActionEvent): Promise<void>;
|
|
36
37
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grandlinex/kernel",
|
|
3
|
-
"version": "0.32.
|
|
3
|
+
"version": "0.32.10",
|
|
4
4
|
"description": "GrandLineX is an out-of-the-box server framework on top of ExpressJs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -47,35 +47,36 @@
|
|
|
47
47
|
"license": "BSD-3-Clause",
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@grandlinex/core": "0.32.0",
|
|
50
|
-
"
|
|
50
|
+
"@grandlinex/swagger-mate": "0.32.1",
|
|
51
|
+
"axios": "1.5.1",
|
|
51
52
|
"body-parser": "1.20.2",
|
|
52
53
|
"express": "4.18.2",
|
|
53
|
-
"jsonwebtoken": "9.0.
|
|
54
|
+
"jsonwebtoken": "9.0.2",
|
|
55
|
+
"@types/express": "^4.17.18",
|
|
56
|
+
"@types/jsonwebtoken": "^9.0.3"
|
|
54
57
|
},
|
|
55
58
|
"devDependencies": {
|
|
56
|
-
"@types/
|
|
57
|
-
"@types/
|
|
58
|
-
"@
|
|
59
|
-
"@
|
|
60
|
-
"@typescript-eslint/eslint-plugin": "^5.61.0",
|
|
61
|
-
"@typescript-eslint/parser": "^5.61.0",
|
|
59
|
+
"@types/jest": "^29.5.5",
|
|
60
|
+
"@types/node": "^20.8.2",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^6.7.4",
|
|
62
|
+
"@typescript-eslint/parser": "^6.7.4",
|
|
62
63
|
"cross-env": "^7.0.3",
|
|
63
|
-
"eslint": "^8.
|
|
64
|
+
"eslint": "^8.50.0",
|
|
64
65
|
"eslint-config-airbnb": "^19.0.4",
|
|
65
|
-
"eslint-config-airbnb-typescript": "^17.
|
|
66
|
-
"eslint-config-prettier": "^
|
|
67
|
-
"eslint-plugin-import": "^2.
|
|
68
|
-
"eslint-plugin-jest": "^27.
|
|
66
|
+
"eslint-config-airbnb-typescript": "^17.1.0",
|
|
67
|
+
"eslint-config-prettier": "^9.0.0",
|
|
68
|
+
"eslint-plugin-import": "^2.28.1",
|
|
69
|
+
"eslint-plugin-jest": "^27.4.2",
|
|
69
70
|
"eslint-plugin-jsx-a11y": "^6.7.1",
|
|
70
|
-
"eslint-plugin-prettier": "^
|
|
71
|
-
"jest": "^29.
|
|
71
|
+
"eslint-plugin-prettier": "^5.0.0",
|
|
72
|
+
"jest": "^29.7.0",
|
|
72
73
|
"jest-junit": "^16.0.0",
|
|
73
|
-
"prettier": "
|
|
74
|
+
"prettier": "3.0.3",
|
|
74
75
|
"ts-jest": "^29.1.1",
|
|
75
76
|
"ts-loader": "^9.4.4",
|
|
76
77
|
"ts-node": "^10.9.1",
|
|
77
|
-
"typedoc": "^0.
|
|
78
|
-
"typescript": "^5.
|
|
78
|
+
"typedoc": "^0.25.1",
|
|
79
|
+
"typescript": "^5.2.2"
|
|
79
80
|
},
|
|
80
81
|
"repository": {
|
|
81
82
|
"type": "git",
|