@grandlinex/kernel 0.30.2 → 0.30.5

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.
Files changed (100) hide show
  1. package/dist/cjs/Kernel.js +45 -0
  2. package/dist/cjs/KernelModule.js +24 -0
  3. package/dist/cjs/actions/ApiAuthTestAction.js +18 -0
  4. package/dist/cjs/actions/ApiVersionAction.js +19 -0
  5. package/dist/cjs/actions/GetTokenAction.js +71 -0
  6. package/dist/cjs/actions/index.js +12 -0
  7. package/dist/cjs/api/KernelEndpoint.js +9 -0
  8. package/dist/cjs/api/index.js +8 -0
  9. package/dist/cjs/classes/BaseAction.js +65 -0
  10. package/dist/cjs/classes/BaseApiAction.js +49 -0
  11. package/dist/cjs/classes/BaseAuthProvider.js +5 -0
  12. package/dist/cjs/classes/BaseEndpoint.d.ts +19 -0
  13. package/dist/cjs/classes/BaseEndpoint.js +63 -0
  14. package/dist/cjs/classes/BaseKernelModule.js +6 -0
  15. package/dist/{classes → cjs/classes}/index.d.ts +2 -2
  16. package/dist/cjs/classes/index.js +54 -0
  17. package/dist/cjs/classes/timing/ExpressServerTiming.js +52 -0
  18. package/dist/cjs/classes/timing/ServerTiming.js +26 -0
  19. package/dist/cjs/classes/timing/ServerTimingElement.js +23 -0
  20. package/dist/cjs/classes/timing/index.js +12 -0
  21. package/dist/cjs/index.js +36 -0
  22. package/dist/cjs/lib/express.js +2 -0
  23. package/dist/cjs/lib/index.js +2 -0
  24. package/dist/cjs/modules/crypto/CryptoClient.js +108 -0
  25. package/dist/cjs/modules/crypto/index.js +23 -0
  26. package/dist/cjs/modules/crypto/utils/cors.js +10 -0
  27. package/dist/cjs/package.json +3 -0
  28. package/dist/mjs/Kernel.d.ts +28 -0
  29. package/dist/mjs/KernelModule.d.ts +8 -0
  30. package/dist/mjs/actions/ApiAuthTestAction.d.ts +11 -0
  31. package/dist/mjs/actions/ApiVersionAction.d.ts +11 -0
  32. package/dist/mjs/actions/GetTokenAction.d.ts +43 -0
  33. package/dist/mjs/actions/index.js +4 -0
  34. package/dist/mjs/api/KernelEndpoint.js +3 -0
  35. package/dist/mjs/api/index.d.ts +2 -0
  36. package/dist/mjs/classes/BaseAction.d.ts +19 -0
  37. package/dist/mjs/classes/BaseApiAction.d.ts +9 -0
  38. package/dist/mjs/classes/BaseAuthProvider.d.ts +20 -0
  39. package/dist/mjs/classes/BaseKernelModule.d.ts +4 -0
  40. package/dist/mjs/classes/index.d.ts +10 -0
  41. package/dist/{classes → mjs/classes}/index.js +2 -2
  42. package/dist/mjs/classes/timing/ExpressServerTiming.d.ts +17 -0
  43. package/dist/mjs/classes/timing/ServerTiming.d.ts +8 -0
  44. package/dist/mjs/classes/timing/ServerTimingElement.d.ts +12 -0
  45. package/dist/mjs/classes/timing/index.d.ts +4 -0
  46. package/dist/mjs/index.js +15 -0
  47. package/dist/mjs/lib/express.d.ts +6 -0
  48. package/dist/mjs/lib/index.d.ts +36 -0
  49. package/dist/mjs/modules/crypto/CryptoClient.d.ts +21 -0
  50. package/dist/{modules → mjs/modules}/crypto/CryptoClient.js +3 -1
  51. package/dist/mjs/modules/crypto/index.js +3 -0
  52. package/dist/mjs/modules/crypto/utils/cors.d.ts +3 -0
  53. package/dist/mjs/package.json +3 -0
  54. package/package.json +16 -7
  55. package/tsconfig-cjs.json +92 -0
  56. /package/dist/{Kernel.d.ts → cjs/Kernel.d.ts} +0 -0
  57. /package/dist/{KernelModule.d.ts → cjs/KernelModule.d.ts} +0 -0
  58. /package/dist/{actions → cjs/actions}/ApiAuthTestAction.d.ts +0 -0
  59. /package/dist/{actions → cjs/actions}/ApiVersionAction.d.ts +0 -0
  60. /package/dist/{actions → cjs/actions}/GetTokenAction.d.ts +0 -0
  61. /package/dist/{actions → cjs/actions}/index.d.ts +0 -0
  62. /package/dist/{api → cjs/api}/KernelEndpoint.d.ts +0 -0
  63. /package/dist/{api → cjs/api}/index.d.ts +0 -0
  64. /package/dist/{classes → cjs/classes}/BaseAction.d.ts +0 -0
  65. /package/dist/{classes → cjs/classes}/BaseApiAction.d.ts +0 -0
  66. /package/dist/{classes → cjs/classes}/BaseAuthProvider.d.ts +0 -0
  67. /package/dist/{classes → cjs/classes}/BaseKernelModule.d.ts +0 -0
  68. /package/dist/{classes → cjs/classes}/timing/ExpressServerTiming.d.ts +0 -0
  69. /package/dist/{classes → cjs/classes}/timing/ServerTiming.d.ts +0 -0
  70. /package/dist/{classes → cjs/classes}/timing/ServerTimingElement.d.ts +0 -0
  71. /package/dist/{classes → cjs/classes}/timing/index.d.ts +0 -0
  72. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  73. /package/dist/{lib → cjs/lib}/express.d.ts +0 -0
  74. /package/dist/{lib → cjs/lib}/index.d.ts +0 -0
  75. /package/dist/{modules → cjs/modules}/crypto/CryptoClient.d.ts +0 -0
  76. /package/dist/{modules → cjs/modules}/crypto/index.d.ts +0 -0
  77. /package/dist/{modules → cjs/modules}/crypto/utils/cors.d.ts +0 -0
  78. /package/dist/{Kernel.js → mjs/Kernel.js} +0 -0
  79. /package/dist/{KernelModule.js → mjs/KernelModule.js} +0 -0
  80. /package/dist/{actions → mjs/actions}/ApiAuthTestAction.js +0 -0
  81. /package/dist/{actions → mjs/actions}/ApiVersionAction.js +0 -0
  82. /package/dist/{actions → mjs/actions}/GetTokenAction.js +0 -0
  83. /package/dist/{actions/index.js → mjs/actions/index.d.ts} +0 -0
  84. /package/dist/{api/KernelEndpoint.js → mjs/api/KernelEndpoint.d.ts} +0 -0
  85. /package/dist/{api → mjs/api}/index.js +0 -0
  86. /package/dist/{classes → mjs/classes}/BaseAction.js +0 -0
  87. /package/dist/{classes → mjs/classes}/BaseApiAction.js +0 -0
  88. /package/dist/{classes → mjs/classes}/BaseAuthProvider.js +0 -0
  89. /package/dist/{classes → mjs/classes}/BaseEndpoint.d.ts +0 -0
  90. /package/dist/{classes → mjs/classes}/BaseEndpoint.js +0 -0
  91. /package/dist/{classes → mjs/classes}/BaseKernelModule.js +0 -0
  92. /package/dist/{classes → mjs/classes}/timing/ExpressServerTiming.js +0 -0
  93. /package/dist/{classes → mjs/classes}/timing/ServerTiming.js +0 -0
  94. /package/dist/{classes → mjs/classes}/timing/ServerTimingElement.js +0 -0
  95. /package/dist/{classes → mjs/classes}/timing/index.js +0 -0
  96. /package/dist/{index.js → mjs/index.d.ts} +0 -0
  97. /package/dist/{lib → mjs/lib}/express.js +0 -0
  98. /package/dist/{lib → mjs/lib}/index.js +0 -0
  99. /package/dist/{modules/crypto/index.js → mjs/modules/crypto/index.d.ts} +0 -0
  100. /package/dist/{modules → mjs/modules}/crypto/utils/cors.js +0 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const core_1 = require("@grandlinex/core");
27
+ const jwt = __importStar(require("jsonwebtoken"));
28
+ class CryptoClient extends core_1.CoreCryptoClient {
29
+ constructor(key, kernel) {
30
+ super(kernel, key);
31
+ this.kernel = kernel;
32
+ this.authProvider = null;
33
+ this.expiresIn = kernel.getConfigStore().get('JWT_EXPIRE') || '1 days';
34
+ }
35
+ setAuthProvider(provider) {
36
+ if (this.authProvider) {
37
+ return false;
38
+ }
39
+ this.authProvider = provider;
40
+ return true;
41
+ }
42
+ jwtVerifyAccessToken(token) {
43
+ return new Promise((resolve) => {
44
+ jwt.verify(token, this.AesKey, (err, user) => {
45
+ if (err instanceof jwt.TokenExpiredError) {
46
+ resolve(498);
47
+ }
48
+ else if (err || user === null) {
49
+ resolve(403);
50
+ }
51
+ else {
52
+ resolve(user);
53
+ }
54
+ });
55
+ });
56
+ }
57
+ jwtDecodeAccessToken(token) {
58
+ // MSJ-CJS SWITCH
59
+ const mod = jwt.default || jwt;
60
+ return mod.decode(token, { json: true });
61
+ }
62
+ jwtGenerateAccessToken(data, expire) {
63
+ return jwt.sign(data, this.AesKey, { expiresIn: expire ?? this.expiresIn });
64
+ }
65
+ async apiTokenValidation(username, token, requestType) {
66
+ if (this.authProvider) {
67
+ return this.authProvider.authorizeToken(username, token, requestType);
68
+ }
69
+ const store = this.kernel.getConfigStore();
70
+ const cc = this.kernel.getCryptoClient();
71
+ if (!store.has('SERVER_PASSWORD')) {
72
+ return { valid: false, userId: null };
73
+ }
74
+ if (cc?.timeSavePWValidation(token, store.get('SERVER_PASSWORD') || '') ||
75
+ (token === store.get('SERVER_PASSWORD') && username === 'admin')) {
76
+ return {
77
+ valid: true,
78
+ userId: 'admin',
79
+ };
80
+ }
81
+ return {
82
+ valid: false,
83
+ userId: null,
84
+ };
85
+ }
86
+ async permissionValidation(token, requestType) {
87
+ if (this.authProvider) {
88
+ return this.authProvider.validateAccess(token, requestType);
89
+ }
90
+ return false;
91
+ }
92
+ async bearerTokenValidation(req) {
93
+ if (this.authProvider) {
94
+ return this.authProvider.bearerTokenValidation(req);
95
+ }
96
+ const authHeader = req.headers.authorization;
97
+ const token = authHeader && authHeader.split(' ')[1];
98
+ if (!token) {
99
+ return 401;
100
+ }
101
+ const tokenData = await this.jwtVerifyAccessToken(token);
102
+ if (tokenData) {
103
+ return tokenData;
104
+ }
105
+ return 403;
106
+ }
107
+ }
108
+ exports.default = CryptoClient;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.CryptoClient = void 0;
21
+ const CryptoClient_js_1 = __importDefault(require("./CryptoClient.js"));
22
+ exports.CryptoClient = CryptoClient_js_1.default;
23
+ __exportStar(require("./utils/cors.js"), exports);
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cors = void 0;
4
+ const cors = (req, res, next) => {
5
+ res.setHeader('Access-Control-Allow-Headers', '*');
6
+ res.setHeader('Access-Control-Allow-Origin', '*');
7
+ res.setHeader('Access-Control-Allow-Methods', '*');
8
+ next();
9
+ };
10
+ exports.cors = cors;
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,28 @@
1
+ import { CoreLogger, CoreKernel } from '@grandlinex/core';
2
+ import { ICClient, IKernel } from './lib/index.js';
3
+ import { XRequest } from './lib/express.js';
4
+ /**
5
+ * @class Kernel
6
+ */
7
+ export default class Kernel extends CoreKernel<ICClient> implements IKernel {
8
+ private expressPort;
9
+ /**
10
+ * Default Constructor
11
+ * @param options App Name
12
+ */
13
+ constructor(options: {
14
+ appName: string;
15
+ appCode: string;
16
+ pathOverride?: string;
17
+ portOverride?: number;
18
+ envFilePath?: string;
19
+ loadFromLocalEnv?: boolean;
20
+ logger?: (k: CoreKernel<any>) => CoreLogger;
21
+ });
22
+ getAppServerPort(): number;
23
+ setAppServerPort(port: number): void;
24
+ responseCodeFunction(data: {
25
+ code: number;
26
+ req: XRequest;
27
+ }): void;
28
+ }
@@ -0,0 +1,8 @@
1
+ import { InMemCache } from '@grandlinex/core';
2
+ import BaseKernelModule from './classes/BaseKernelModule.js';
3
+ import { IKernel } from './lib/index.js';
4
+ import KernelEndpoint from './api/KernelEndpoint.js';
5
+ export default class KernelModule extends BaseKernelModule<IKernel, null, null, InMemCache, KernelEndpoint> {
6
+ constructor(kernel: IKernel);
7
+ initModule(): Promise<void>;
8
+ }
@@ -0,0 +1,11 @@
1
+ import { IBaseKernelModule } from '../lib/index.js';
2
+ import { BaseApiAction, JwtToken } from '../classes/index.js';
3
+ import { XRequest, XResponse } from '../lib/express.js';
4
+ /**
5
+ * @name ApiAuthTestAction
6
+ *
7
+ */
8
+ export default class ApiAuthTestAction extends BaseApiAction {
9
+ constructor(module: IBaseKernelModule<any, any, any, any>);
10
+ handler(req: XRequest, res: XResponse, next: () => void, data: JwtToken): Promise<void>;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { IBaseKernelModule } from '../lib/index.js';
2
+ import { BaseApiAction, IExtensionInterface } from '../classes/index.js';
3
+ import { XRequest, XResponse } from '../lib/express.js';
4
+ /**
5
+ * @name ApiVersionAction
6
+ *
7
+ */
8
+ export default class ApiVersionAction extends BaseApiAction {
9
+ constructor(module: IBaseKernelModule);
10
+ handler(req: XRequest, res: XResponse, next: () => void, data: any, ex: IExtensionInterface): Promise<void>;
11
+ }
@@ -0,0 +1,43 @@
1
+ import { IBaseKernelModule } from '../lib/index.js';
2
+ import { BaseApiAction, IExtensionInterface } from '../classes/index.js';
3
+ import { XRequest, XResponse } from '../lib/express.js';
4
+ /**
5
+ * @openapi
6
+ * /token:
7
+ * post:
8
+ * summary: Get Bearer for user.
9
+ * tags:
10
+ * - Kernel
11
+ * description: Returns JWT.
12
+ * responses:
13
+ * '200':
14
+ * description: OK
15
+ * content:
16
+ * application/json:
17
+ * schema:
18
+ * type: object
19
+ * properties:
20
+ * token:
21
+ * type: string
22
+ * '403':
23
+ * description: Not Authorized
24
+ * requestBody:
25
+ * required: true
26
+ * content:
27
+ * application/json:
28
+ * schema:
29
+ * type: object
30
+ * properties:
31
+ * username:
32
+ * type: string
33
+ * token:
34
+ * type: string
35
+ */
36
+ export default class GetTokenAction extends BaseApiAction {
37
+ /**
38
+ *
39
+ * @param module Parent Module
40
+ */
41
+ constructor(module: IBaseKernelModule<any, any, any, any>);
42
+ handler(req: XRequest, res: XResponse, next: () => void, data: any, ex: IExtensionInterface): Promise<void>;
43
+ }
@@ -0,0 +1,4 @@
1
+ import ApiAuthTestAction from './ApiAuthTestAction.js';
2
+ import ApiVersionAction from './ApiVersionAction.js';
3
+ import GetTokenAction from './GetTokenAction.js';
4
+ export { ApiVersionAction, ApiAuthTestAction, GetTokenAction };
@@ -0,0 +1,3 @@
1
+ import BaseEndpoint from '../classes/BaseEndpoint.js';
2
+ export default class KernelEndpoint extends BaseEndpoint {
3
+ }
@@ -0,0 +1,2 @@
1
+ import KernelEndpoint from './KernelEndpoint.js';
2
+ export { KernelEndpoint };
@@ -0,0 +1,19 @@
1
+ import { CoreAction, IDataBase } from '@grandlinex/core';
2
+ import { IBaseAction, IBaseCache, IBaseClient, IBaseKernelModule, IBasePresenter, IKernel } from '../lib/index.js';
3
+ import { JwtToken } from './BaseAuthProvider.js';
4
+ import { IExtensionInterface } from './timing/index.js';
5
+ import { XNextFc, XRequest, XResponse } from '../lib/express.js';
6
+ export declare enum ActionMode {
7
+ 'DEFAULT' = 0,
8
+ 'DMZ' = 1,
9
+ 'DMZ_WITH_USER' = 2
10
+ }
11
+ export default abstract class BaseAction<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 CoreAction<K, T, P, C, E> implements IBaseAction<K, T, P, C, E> {
12
+ mode: ActionMode;
13
+ constructor(chanel: string, module: IBaseKernelModule<K, T, P, C, E>);
14
+ abstract handler(req: XRequest, res: XResponse, next: XNextFc, data: JwtToken | null, extension: IExtensionInterface): Promise<void>;
15
+ secureHandler(req: XRequest, res: XResponse, next: () => void): Promise<void>;
16
+ setMode(mode: ActionMode): void;
17
+ abstract register(): void;
18
+ private initExtension;
19
+ }
@@ -0,0 +1,9 @@
1
+ import { IDataBase } from '@grandlinex/core';
2
+ import { ActionTypes, IBaseAction, IBaseCache, IBaseClient, IBaseKernelModule, IBasePresenter, IKernel } from '../lib/index.js';
3
+ import BaseAction from './BaseAction.js';
4
+ export default abstract class BaseApiAction<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 BaseAction<K, T, P, C, E> implements IBaseAction<K, T, P, C, E> {
5
+ exmod: undefined | IBaseKernelModule<K>;
6
+ type: ActionTypes;
7
+ constructor(type: ActionTypes, chanel: string, module: IBaseKernelModule<K, T, P, C, E>, extMod?: IBaseKernelModule<K>);
8
+ register(): void;
9
+ }
@@ -0,0 +1,20 @@
1
+ import * as jwt from 'jsonwebtoken';
2
+ import { XRequest } from '../lib/express.js';
3
+ export interface JwtToken extends jwt.JwtPayload {
4
+ username: string;
5
+ userid: string;
6
+ }
7
+ export type AuthResult = {
8
+ valid: boolean;
9
+ userId: string | null;
10
+ };
11
+ export interface IAuthProvider {
12
+ authorizeToken(userid: string, token: string, requestType: string): Promise<AuthResult>;
13
+ validateAccess(token: JwtToken, requestType: string): Promise<boolean>;
14
+ bearerTokenValidation(req: XRequest): Promise<JwtToken | number>;
15
+ }
16
+ export default abstract class BaseAuthProvider implements IAuthProvider {
17
+ abstract authorizeToken(username: string, token: string, requestType: string): Promise<AuthResult>;
18
+ abstract validateAccess(token: JwtToken, requestType: string): Promise<boolean>;
19
+ abstract bearerTokenValidation(req: XRequest): Promise<JwtToken | number>;
20
+ }
@@ -0,0 +1,4 @@
1
+ import { CoreKernelModule, IDataBase } from '@grandlinex/core';
2
+ import { IBaseCache, IBaseClient, IBaseKernelModule, IBasePresenter, IKernel } from '../lib/index.js';
3
+ export default abstract class BaseKernelModule<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 CoreKernelModule<K, T, P, C, E> implements IBaseKernelModule<K, T, P, C, E> {
4
+ }
@@ -0,0 +1,10 @@
1
+ import { CoreBridge as BaseBridge, CoreCache as BaseCache, CoreClient as BaseClient, CoreElement as BaseElement, CoreLoopService as BaseLoopService, CoreService as BaseService } from '@grandlinex/core';
2
+ import BaseAction, { ActionMode } from './BaseAction.js';
3
+ import BaseEndpoint, { keepRawBody } from './BaseEndpoint.js';
4
+ import BaseKernelModule from './BaseKernelModule.js';
5
+ import BaseApiAction from './BaseApiAction.js';
6
+ import BaseAuthProvider from './BaseAuthProvider.js';
7
+ export * from './BaseAction.js';
8
+ export * from './BaseAuthProvider.js';
9
+ export * from './timing/index.js';
10
+ export { BaseLoopService, BaseAuthProvider, BaseKernelModule, BaseService, BaseApiAction, BaseEndpoint, BaseElement, BaseCache, BaseAction, BaseClient, BaseBridge, keepRawBody, ActionMode, };
@@ -1,5 +1,5 @@
1
1
  import { CoreBridge as BaseBridge, CoreCache as BaseCache, CoreClient as BaseClient, CoreElement as BaseElement, CoreLoopService as BaseLoopService, CoreService as BaseService, } from '@grandlinex/core';
2
- import BaseAction from './BaseAction.js';
2
+ import BaseAction, { ActionMode } from './BaseAction.js';
3
3
  import BaseEndpoint, { keepRawBody } from './BaseEndpoint.js';
4
4
  import BaseKernelModule from './BaseKernelModule.js';
5
5
  import BaseApiAction from './BaseApiAction.js';
@@ -7,4 +7,4 @@ import BaseAuthProvider from './BaseAuthProvider.js';
7
7
  export * from './BaseAction.js';
8
8
  export * from './BaseAuthProvider.js';
9
9
  export * from './timing/index.js';
10
- export { BaseLoopService, BaseAuthProvider, BaseKernelModule, BaseService, BaseApiAction, BaseEndpoint, BaseElement, BaseCache, BaseAction, BaseClient, BaseBridge, keepRawBody, };
10
+ export { BaseLoopService, BaseAuthProvider, BaseKernelModule, BaseService, BaseApiAction, BaseEndpoint, BaseElement, BaseCache, BaseAction, BaseClient, BaseBridge, keepRawBody, ActionMode, };
@@ -0,0 +1,17 @@
1
+ import { CoreElement } from '@grandlinex/core';
2
+ import { XResponse } from '../../lib/express.js';
3
+ export type IExtensionInterface = {
4
+ done: () => void;
5
+ timing: ExpressServerTiming;
6
+ };
7
+ export default class ExpressServerTiming {
8
+ private timing;
9
+ private baseApiAction;
10
+ constructor(baseApiAction: CoreElement<any>);
11
+ start(chanel: string): import("./ServerTimingElement.js").default;
12
+ startFunc<T>(chanel: string, fc: () => Promise<T>): Promise<T>;
13
+ dbQuery<T>(fc: () => Promise<T>): Promise<T>;
14
+ getHeader(): string;
15
+ addHeader(res: XResponse): void;
16
+ static init(baseApiAction: CoreElement<any>, res: XResponse): [ExpressServerTiming, () => void];
17
+ }
@@ -0,0 +1,8 @@
1
+ import ServerTimingElement, { IServerElement } from './ServerTimingElement.js';
2
+ export default class ServerTiming implements IServerElement {
3
+ map: Map<string, ServerTimingElement[]>;
4
+ constructor();
5
+ start(chanel: string): ServerTimingElement;
6
+ startFunc<T>(chanel: string, fc: () => Promise<T>): Promise<T>;
7
+ completeElement(e: ServerTimingElement): void;
8
+ }
@@ -0,0 +1,12 @@
1
+ export type IServerElement = {
2
+ completeElement: (e: ServerTimingElement) => void;
3
+ };
4
+ export default class ServerTimingElement {
5
+ private el;
6
+ readonly chanel: string;
7
+ private readonly start;
8
+ private end;
9
+ constructor(el: IServerElement, chanel: string);
10
+ stop(): void;
11
+ getDuration(): number;
12
+ }
@@ -0,0 +1,4 @@
1
+ import ExpressServerTiming, { IExtensionInterface } from './ExpressServerTiming.js';
2
+ import ServerTiming from './ServerTiming.js';
3
+ import ServerTimingElement from './ServerTimingElement.js';
4
+ export { ExpressServerTiming, ServerTimingElement, ServerTiming, IExtensionInterface, };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @name Kernel Main Module
3
+ * @author David Nagy
4
+ */
5
+ import Kernel from './Kernel.js';
6
+ import KernelModule from './KernelModule.js';
7
+ export * from './actions/index.js';
8
+ export * from './api/index.js';
9
+ export * from './classes/index.js';
10
+ export * from './modules/crypto/index.js';
11
+ export * from './lib/index.js';
12
+ export * from './lib/express.js';
13
+ export * from '@grandlinex/core';
14
+ export { KernelModule, Kernel };
15
+ export default Kernel;
@@ -0,0 +1,6 @@
1
+ import express from 'express';
2
+ export type XRequest = express.Request & {
3
+ rawBody?: string | null | undefined;
4
+ };
5
+ export type XResponse = express.Response;
6
+ export type XNextFc = express.NextFunction;
@@ -0,0 +1,36 @@
1
+ import { ICoreAction, ICoreBridge, ICoreCache, ICoreCClient, ICoreClient, ICoreElement, ICoreKernel, ICoreKernelModule, ICorePresenter, ICoreService, IDataBase } from '@grandlinex/core';
2
+ import express from 'express';
3
+ import * as jwt from 'jsonwebtoken';
4
+ import { IAuthProvider, JwtToken, IExtensionInterface } from '../classes/index.js';
5
+ import { XNextFc, XRequest, XResponse } from './express.js';
6
+ export type ActionTypes = 'POST' | 'GET' | 'USE' | 'PATCH' | 'DELETE';
7
+ export interface ICClient extends ICoreCClient {
8
+ setAuthProvider(provider: IAuthProvider): boolean;
9
+ jwtVerifyAccessToken(token: string): Promise<JwtToken | number>;
10
+ jwtDecodeAccessToken(token: string): jwt.JwtPayload | null;
11
+ jwtGenerateAccessToken(data: JwtToken, expire?: string | number): string;
12
+ apiTokenValidation(username: string, token: string, requestType: string): Promise<{
13
+ valid: boolean;
14
+ userId: string | null;
15
+ }>;
16
+ permissionValidation(token: JwtToken, requestType: string): Promise<boolean>;
17
+ bearerTokenValidation(req: XRequest): Promise<JwtToken | number>;
18
+ }
19
+ export interface IKernel extends ICoreKernel<ICClient> {
20
+ getAppServerPort(): number;
21
+ setAppServerPort(port: number): void;
22
+ responseCodeFunction(data: {
23
+ code: number;
24
+ req: XRequest;
25
+ }): void;
26
+ }
27
+ export type IBaseKernelModule<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> = ICoreKernelModule<K, T, P, C, E>;
28
+ export type IBasePresenter = ICorePresenter<express.Express>;
29
+ export type IBaseService<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> = ICoreService<K, T, P, C, E>;
30
+ export type IBaseClient<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> = ICoreClient;
31
+ export type IBaseBrige = ICoreBridge;
32
+ 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
+ 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
+ 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(req: XRequest, res: XResponse, next: XNextFc, data: JwtToken | null, extension: IExtensionInterface): Promise<void>;
36
+ }
@@ -0,0 +1,21 @@
1
+ import { CoreCryptoClient } from '@grandlinex/core';
2
+ import * as jwt from 'jsonwebtoken';
3
+ import { ICClient, IKernel } from '../../lib/index.js';
4
+ import { IAuthProvider, JwtToken } from '../../classes/index.js';
5
+ import { XRequest } from '../../lib/express.js';
6
+ export default class CryptoClient extends CoreCryptoClient implements ICClient {
7
+ protected authProvider: IAuthProvider | null;
8
+ protected kernel: IKernel;
9
+ protected expiresIn: string;
10
+ constructor(key: string, kernel: IKernel);
11
+ setAuthProvider(provider: IAuthProvider): boolean;
12
+ jwtVerifyAccessToken(token: string): Promise<JwtToken | number>;
13
+ jwtDecodeAccessToken(token: string): jwt.JwtPayload | null;
14
+ jwtGenerateAccessToken(data: JwtToken, expire?: string | number): string;
15
+ apiTokenValidation(username: string, token: string, requestType: string): Promise<{
16
+ valid: boolean;
17
+ userId: string | null;
18
+ }>;
19
+ permissionValidation(token: JwtToken, requestType: string): Promise<boolean>;
20
+ bearerTokenValidation(req: XRequest): Promise<JwtToken | number>;
21
+ }
@@ -30,7 +30,9 @@ export default class CryptoClient extends CoreCryptoClient {
30
30
  });
31
31
  }
32
32
  jwtDecodeAccessToken(token) {
33
- return jwt.default.decode(token, { json: true });
33
+ // MSJ-CJS SWITCH
34
+ const mod = jwt.default || jwt;
35
+ return mod.decode(token, { json: true });
34
36
  }
35
37
  jwtGenerateAccessToken(data, expire) {
36
38
  return jwt.sign(data, this.AesKey, { expiresIn: expire ?? this.expiresIn });
@@ -0,0 +1,3 @@
1
+ import CryptoClient from './CryptoClient.js';
2
+ export { CryptoClient };
3
+ export * from './utils/cors.js';
@@ -0,0 +1,3 @@
1
+ import { XNextFc, XRequest, XResponse } from '../../../lib/express.js';
2
+ export type CorsMiddleWare = (req: XRequest, res: XResponse, next: XNextFc) => void;
3
+ export declare const cors: CorsMiddleWare;
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json CHANGED
@@ -1,25 +1,34 @@
1
1
  {
2
2
  "name": "@grandlinex/kernel",
3
- "version": "0.30.2",
3
+ "version": "0.30.5",
4
4
  "description": "GrandLineX is an out-of-the-box server framework on top of ExpressJs.",
5
- "module": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
5
  "type": "module",
8
6
  "exports": {
9
7
  ".": {
10
8
  "import": {
11
- "types": "./dist/index.d.ts",
12
- "default": "./dist/index.js"
9
+ "types": "./dist/mjs/index.d.ts",
10
+ "default": "./dist/mjs/index.js"
11
+ },
12
+ "require": {
13
+ "types": "./dist/cjs/index.d.ts",
14
+ "default": "./dist/cjs/index.js"
13
15
  }
14
16
  }
15
17
  },
18
+ "types": "dist/cjs/index.d.ts",
19
+ "main": "dist/cjs/index.js",
20
+ "module": "dist/mjs/index.js",
16
21
  "scripts": {
17
- "buildprep": "tsc",
22
+ "buildprep": "npm run build-mjs && npm run build-cjs && npm run build-fix",
23
+ "build-mjs": "tsc",
24
+ "build-cjs": "tsc -p tsconfig-cjs.json",
25
+ "build-fix": "node ./node_modules/@grandlinex/core/fix.js",
18
26
  "lint": "eslint src",
19
27
  "test": "jest --runInBand ",
20
- "run": "ts-node-esm src/tests/run.ts",
28
+ "run": "ts-node tests/run.ts",
21
29
  "pack-dev": "npm version -no-git-tag-version prerelease && npm run buildprep && npm pack",
22
30
  "test-converage": "jest --runInBand --ci --collectCoverage --coverageDirectory=\"./coverage\" --reporters=default --reporters=jest-junit",
31
+ "doc-converage": "jest --runInBand --ci --collectCoverage --coverageDirectory=\"./docs/coverage\" --reporters=default --reporters=jest-junit",
23
32
  "makeDocs": "typedoc",
24
33
  "openDocs": "npm run makeDocs",
25
34
  "makeSpec": "makeOpenApi"