@flancer32/teq-web 0.8.0 → 0.10.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/CHANGELOG.md +12 -0
- package/package.json +3 -4
- package/src/Back/Api/Handler.mjs +17 -17
- package/src/Back/Config/Runtime/Tls.mjs +18 -9
- package/src/Back/Config/Runtime.mjs +23 -14
- package/src/Back/Dto/Info.mjs +19 -17
- package/src/Back/Dto/RequestContext.mjs +18 -21
- package/src/Back/Dto/Source.mjs +10 -5
- package/src/Back/Enum/Server/Type.mjs +1 -2
- package/src/Back/Enum/Stage.mjs +1 -2
- package/src/Back/Handler/Pre/Log.mjs +17 -21
- package/src/Back/Handler/Static/A/Config.mjs +15 -14
- package/src/Back/Handler/Static/A/Fallback.mjs +17 -17
- package/src/Back/Handler/Static/A/FileService.mjs +27 -32
- package/src/Back/Handler/Static/A/Registry.mjs +17 -18
- package/src/Back/Handler/Static/A/Resolver.mjs +13 -10
- package/src/Back/Handler/Static.mjs +23 -30
- package/src/Back/Helper/Cast.mjs +3 -1
- package/src/Back/Helper/Mime.mjs +1 -2
- package/src/Back/Helper/Order/Kahn.mjs +1 -2
- package/src/Back/Helper/Respond.mjs +15 -13
- package/src/Back/Logger.mjs +1 -2
- package/src/Back/PipelineEngine.mjs +12 -18
- package/src/Back/Server.mjs +16 -23
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.10.0] - 2026-03-31 - Validator conformance and release preparation
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Updated handler interfaces and runtime DTOs to conform to validator requirements.
|
|
7
|
+
- Removed the ESLint development dependency after aligning the codebase with the current validation approach.
|
|
8
|
+
- Updated package version metadata to `0.10.0`.
|
|
9
|
+
|
|
10
|
+
## [0.9.0] - 2026-03-25 - Release preparation for minor version bump
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Updated package version metadata to `0.9.0`.
|
|
14
|
+
|
|
3
15
|
## [0.8.0] - 2026-03-17 - Flat runtime configuration and server startup alignment
|
|
4
16
|
|
|
5
17
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flancer32/teq-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Server-side web request coordination infrastructure for TeqFW modular monolith applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,11 +41,10 @@
|
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@teqfw/di": "^2.
|
|
44
|
+
"@teqfw/di": "^2.4.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@types/node": "^25.4.0"
|
|
48
|
-
"eslint": "^10.0.3"
|
|
47
|
+
"@types/node": "^25.4.0"
|
|
49
48
|
},
|
|
50
49
|
"scripts": {
|
|
51
50
|
"test:unit": "find test/unit -name '*.test.mjs' -print0 | xargs -0 node --test",
|
package/src/Back/Api/Handler.mjs
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Interface for web request handlers used by the Pipeline Engine.
|
|
5
3
|
*
|
|
6
4
|
* @interface
|
|
7
5
|
*/
|
|
6
|
+
// @ts-check
|
|
8
7
|
export default class Fl32_Web_Back_Api_Handler {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Handles one request context in a pipeline stage.
|
|
11
|
+
* @param {Fl32_Web_Back_Dto_RequestContext} context
|
|
12
|
+
* @returns {Promise<void>}
|
|
13
|
+
*/
|
|
14
|
+
this.handle = async function (_context) {
|
|
15
|
+
throw new Error('Method not implemented');
|
|
16
|
+
};
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Provides metadata for pipeline registration.
|
|
20
|
+
* @returns {Fl32_Web_Back_Dto_Info}
|
|
21
|
+
*/
|
|
22
|
+
this.getRegistrationInfo = function () {
|
|
23
|
+
throw new Error('Method not implemented');
|
|
24
|
+
};
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
5
|
-
});
|
|
6
|
-
|
|
7
1
|
/**
|
|
8
|
-
* TLS runtime configuration.
|
|
2
|
+
* TLS runtime configuration wrapper and factory wiring.
|
|
9
3
|
*/
|
|
4
|
+
// @ts-check
|
|
5
|
+
|
|
10
6
|
export class Data {
|
|
11
7
|
/** @type {string|undefined} */
|
|
12
8
|
ca;
|
|
@@ -51,8 +47,8 @@ export default class Wrapper {
|
|
|
51
47
|
|
|
52
48
|
export class Factory {
|
|
53
49
|
/**
|
|
54
|
-
* @param {object}
|
|
55
|
-
* @param {Fl32_Web_Back_Helper_Cast}
|
|
50
|
+
* @param {object} deps
|
|
51
|
+
* @param {Fl32_Web_Back_Helper_Cast} deps.cast
|
|
56
52
|
*/
|
|
57
53
|
constructor({cast}) {
|
|
58
54
|
/**
|
|
@@ -82,3 +78,16 @@ export class Factory {
|
|
|
82
78
|
};
|
|
83
79
|
}
|
|
84
80
|
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* TLS runtime configuration container.
|
|
84
|
+
*
|
|
85
|
+
* `default export` is the runtime wrapper.
|
|
86
|
+
* `Factory` is the DI-managed component described by `__deps__`.
|
|
87
|
+
*/
|
|
88
|
+
export const __deps__ = Object.freeze({
|
|
89
|
+
default: {},
|
|
90
|
+
Factory: {
|
|
91
|
+
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
92
|
+
},
|
|
93
|
+
});
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
5
|
-
SERVER_TYPE: 'Fl32_Web_Back_Enum_Server_Type$',
|
|
6
|
-
tlsFactory: 'Fl32_Web_Back_Config_Runtime_Tls__Factory$',
|
|
7
|
-
});
|
|
8
|
-
|
|
9
1
|
/**
|
|
10
|
-
*
|
|
2
|
+
* Runtime configuration wrapper and factory wiring.
|
|
11
3
|
*/
|
|
4
|
+
// @ts-check
|
|
5
|
+
|
|
12
6
|
export class Data {
|
|
13
7
|
/** @type {number|undefined} */
|
|
14
8
|
port;
|
|
@@ -53,12 +47,12 @@ export default class Wrapper {
|
|
|
53
47
|
|
|
54
48
|
export class Factory {
|
|
55
49
|
/**
|
|
56
|
-
* @param {object}
|
|
57
|
-
* @param {Fl32_Web_Back_Helper_Cast}
|
|
58
|
-
* @param {Fl32_Web_Back_Enum_Server_Type}
|
|
59
|
-
* @param {Fl32_Web_Back_Config_Runtime_Tls$Factory}
|
|
50
|
+
* @param {object} deps
|
|
51
|
+
* @param {Fl32_Web_Back_Helper_Cast} deps.cast
|
|
52
|
+
* @param {Fl32_Web_Back_Enum_Server_Type} deps.SERVER_TYPE
|
|
53
|
+
* @param {Fl32_Web_Back_Config_Runtime_Tls$Factory} deps.tlsFactory
|
|
60
54
|
*/
|
|
61
|
-
constructor({
|
|
55
|
+
constructor({cast, SERVER_TYPE, tlsFactory}) {
|
|
62
56
|
/**
|
|
63
57
|
* @param {Fl32_Web_Back_Config_Runtime} [params]
|
|
64
58
|
*/
|
|
@@ -95,3 +89,18 @@ export class Factory {
|
|
|
95
89
|
};
|
|
96
90
|
}
|
|
97
91
|
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Backend runtime configuration container.
|
|
95
|
+
*
|
|
96
|
+
* `default export` is the runtime wrapper.
|
|
97
|
+
* `Factory` is the DI-managed component described by `__deps__`.
|
|
98
|
+
*/
|
|
99
|
+
export const __deps__ = Object.freeze({
|
|
100
|
+
default: {},
|
|
101
|
+
Factory: {
|
|
102
|
+
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
103
|
+
SERVER_TYPE: 'Fl32_Web_Back_Enum_Server_Type$',
|
|
104
|
+
tlsFactory: 'Fl32_Web_Back_Config_Runtime_Tls__Factory$',
|
|
105
|
+
},
|
|
106
|
+
});
|
package/src/Back/Dto/Info.mjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DTO describing handler registration and ordering metadata.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
5
|
-
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
6
|
-
});
|
|
7
|
-
|
|
8
5
|
export default class Fl32_Web_Back_Dto_Info {
|
|
9
6
|
/**
|
|
10
7
|
* Handlers to run before this one.
|
|
@@ -33,19 +30,13 @@ export default class Fl32_Web_Back_Dto_Info {
|
|
|
33
30
|
}
|
|
34
31
|
|
|
35
32
|
export class Factory {
|
|
36
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
37
33
|
/**
|
|
38
|
-
* @param {object}
|
|
39
|
-
* @param {Fl32_Web_Back_Helper_Cast}
|
|
40
|
-
* @param {Fl32_Web_Back_Enum_Stage}
|
|
34
|
+
* @param {object} deps
|
|
35
|
+
* @param {Fl32_Web_Back_Helper_Cast} deps.cast
|
|
36
|
+
* @param {Fl32_Web_Back_Enum_Stage} deps.STAGE
|
|
41
37
|
*/
|
|
42
|
-
constructor(
|
|
43
|
-
|
|
44
|
-
cast,
|
|
45
|
-
STAGE,
|
|
46
|
-
}
|
|
47
|
-
) {
|
|
48
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
38
|
+
constructor({cast, STAGE}) {
|
|
39
|
+
|
|
49
40
|
/**
|
|
50
41
|
* @param {*} [data]
|
|
51
42
|
* @returns {Fl32_Web_Back_Dto_Info}
|
|
@@ -60,3 +51,14 @@ export class Factory {
|
|
|
60
51
|
};
|
|
61
52
|
}
|
|
62
53
|
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* DTO dependencies.
|
|
57
|
+
*/
|
|
58
|
+
export const __deps__ = Object.freeze({
|
|
59
|
+
default: {},
|
|
60
|
+
Factory: {
|
|
61
|
+
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
62
|
+
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
63
|
+
},
|
|
64
|
+
});
|
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Request context passed through the pipeline lifecycle.
|
|
5
3
|
*/
|
|
4
|
+
// @ts-check
|
|
6
5
|
export default class Fl32_Web_Back_Dto_RequestContext {
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
/** @type {Fl32_Web_Node_Http_IncomingMessage|Fl32_Web_Node_Http2_ServerRequest} */
|
|
8
|
+
this.request;
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/** @type {Fl32_Web_Back_Response_Target} */
|
|
11
|
+
this.response;
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/** @type {Record<string, unknown>} */
|
|
14
|
+
this.data = {};
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/** @type {() => void} */
|
|
20
|
-
complete;
|
|
21
|
-
|
|
22
|
-
/** @type {() => boolean} */
|
|
23
|
-
isCompleted;
|
|
16
|
+
/** @type {boolean} */
|
|
17
|
+
this.completed = false;
|
|
18
|
+
}
|
|
24
19
|
}
|
|
25
20
|
|
|
26
21
|
export class Factory {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
constructor() {
|
|
23
|
+
/**
|
|
24
|
+
* @returns {Fl32_Web_Back_Dto_RequestContext}
|
|
25
|
+
*/
|
|
26
|
+
this.create = function () {
|
|
27
|
+
return new Fl32_Web_Back_Dto_RequestContext();
|
|
28
|
+
};
|
|
32
29
|
}
|
|
33
30
|
}
|
package/src/Back/Dto/Source.mjs
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source DTO for static handler configuration.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
5
|
-
});
|
|
6
|
-
|
|
7
5
|
export default class Fl32_Web_Back_Dto_Source {
|
|
8
6
|
/** @type {string} */
|
|
9
7
|
root;
|
|
@@ -43,3 +41,10 @@ export class Factory {
|
|
|
43
41
|
};
|
|
44
42
|
}
|
|
45
43
|
}
|
|
44
|
+
|
|
45
|
+
export const __deps__ = Object.freeze({
|
|
46
|
+
default: {},
|
|
47
|
+
Factory: {
|
|
48
|
+
cast: 'Fl32_Web_Back_Helper_Cast$',
|
|
49
|
+
},
|
|
50
|
+
});
|
package/src/Back/Enum/Stage.mjs
CHANGED
|
@@ -1,32 +1,17 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Logs basic request information at the beginning of the request lifecycle.
|
|
5
3
|
*
|
|
6
4
|
* @implements Fl32_Web_Back_Api_Handler
|
|
7
5
|
*/
|
|
8
|
-
|
|
9
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
10
|
-
dtoInfoFactory: 'Fl32_Web_Back_Dto_Info__Factory$',
|
|
11
|
-
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
12
|
-
});
|
|
13
|
-
|
|
6
|
+
// @ts-check
|
|
14
7
|
export default class Fl32_Web_Back_Handler_Pre_Log {
|
|
15
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
16
8
|
/**
|
|
17
|
-
* @param {object}
|
|
18
|
-
* @param {Fl32_Web_Back_Logger}
|
|
19
|
-
* @param {Fl32_Web_Back_Dto_Info$Factory}
|
|
20
|
-
* @param {Fl32_Web_Back_Enum_Stage}
|
|
9
|
+
* @param {object} deps
|
|
10
|
+
* @param {Fl32_Web_Back_Logger} deps.logger
|
|
11
|
+
* @param {Fl32_Web_Back_Dto_Info$Factory} deps.dtoInfoFactory
|
|
12
|
+
* @param {Fl32_Web_Back_Enum_Stage} deps.STAGE
|
|
21
13
|
*/
|
|
22
|
-
constructor(
|
|
23
|
-
{
|
|
24
|
-
logger,
|
|
25
|
-
dtoInfoFactory,
|
|
26
|
-
STAGE,
|
|
27
|
-
}
|
|
28
|
-
) {
|
|
29
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
14
|
+
constructor({logger, dtoInfoFactory, STAGE}) {
|
|
30
15
|
// VARS
|
|
31
16
|
const _info = dtoInfoFactory.create({
|
|
32
17
|
name: this.constructor.name,
|
|
@@ -53,3 +38,14 @@ export default class Fl32_Web_Back_Handler_Pre_Log {
|
|
|
53
38
|
this.getRegistrationInfo = () => _info;
|
|
54
39
|
}
|
|
55
40
|
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Dependencies for the log handler.
|
|
44
|
+
*/
|
|
45
|
+
export const __deps__ = Object.freeze({
|
|
46
|
+
default: {
|
|
47
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
48
|
+
dtoInfoFactory: 'Fl32_Web_Back_Dto_Info__Factory$',
|
|
49
|
+
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
50
|
+
},
|
|
51
|
+
});
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static asset config factory.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
path: 'node_path',
|
|
5
|
-
});
|
|
6
|
-
|
|
7
5
|
export default class Fl32_Web_Back_Handler_Static_A_Config {
|
|
8
6
|
static DEFAULT_FILES = ['index.html', 'index.htm', 'index.txt'];
|
|
9
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
10
7
|
/**
|
|
11
|
-
* @param {object}
|
|
12
|
-
* @param {Fl32_Web_Node_Path}
|
|
8
|
+
* @param {object} deps
|
|
9
|
+
* @param {Fl32_Web_Node_Path} deps.path
|
|
13
10
|
*/
|
|
14
|
-
constructor(
|
|
15
|
-
{
|
|
16
|
-
path,
|
|
17
|
-
}
|
|
18
|
-
) {
|
|
19
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
11
|
+
constructor({path}) {
|
|
20
12
|
|
|
21
13
|
/**
|
|
22
14
|
* Normalize DTO fields into configuration object.
|
|
@@ -63,3 +55,12 @@ export default class Fl32_Web_Back_Handler_Static_A_Config {
|
|
|
63
55
|
};
|
|
64
56
|
}
|
|
65
57
|
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Dependencies for the static config factory.
|
|
61
|
+
*/
|
|
62
|
+
export const __deps__ = Object.freeze({
|
|
63
|
+
default: {
|
|
64
|
+
path: 'node:path',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
@@ -1,24 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static asset fallback helper.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
fs: 'node_fs',
|
|
5
|
-
path: 'node_path',
|
|
6
|
-
});
|
|
7
|
-
|
|
8
5
|
export default class Fl32_Web_Back_Handler_Static_A_Fallback {
|
|
9
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
10
6
|
/**
|
|
11
|
-
* @param {object}
|
|
12
|
-
* @param {Fl32_Web_Node_Fs}
|
|
13
|
-
* @param {Fl32_Web_Node_Path}
|
|
7
|
+
* @param {object} deps
|
|
8
|
+
* @param {Fl32_Web_Node_Fs} deps.fs
|
|
9
|
+
* @param {Fl32_Web_Node_Path} deps.path
|
|
14
10
|
*/
|
|
15
|
-
constructor(
|
|
16
|
-
{
|
|
17
|
-
fs,
|
|
18
|
-
path,
|
|
19
|
-
}
|
|
20
|
-
) {
|
|
21
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
11
|
+
constructor({fs, path}) {
|
|
22
12
|
|
|
23
13
|
/**
|
|
24
14
|
* Apply default index fallback for directories.
|
|
@@ -45,3 +35,13 @@ export default class Fl32_Web_Back_Handler_Static_A_Fallback {
|
|
|
45
35
|
};
|
|
46
36
|
}
|
|
47
37
|
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Dependencies for the static fallback helper.
|
|
41
|
+
*/
|
|
42
|
+
export const __deps__ = Object.freeze({
|
|
43
|
+
default: {
|
|
44
|
+
fs: 'node:fs',
|
|
45
|
+
path: 'node:path',
|
|
46
|
+
},
|
|
47
|
+
});
|
|
@@ -1,39 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static file service.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
fs: 'node_fs',
|
|
5
|
-
http2: 'node_http2',
|
|
6
|
-
path: 'node_path',
|
|
7
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
8
|
-
helpMime: 'Fl32_Web_Back_Helper_Mime$',
|
|
9
|
-
resolver: 'Fl32_Web_Back_Handler_Static_A_Resolver$',
|
|
10
|
-
fallback: 'Fl32_Web_Back_Handler_Static_A_Fallback$',
|
|
11
|
-
});
|
|
12
|
-
|
|
13
5
|
export default class Fl32_Web_Back_Handler_Static_A_FileService {
|
|
14
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
15
6
|
/**
|
|
16
|
-
* @param {object}
|
|
17
|
-
* @param {Fl32_Web_Node_Fs}
|
|
18
|
-
* @param {Fl32_Web_Node_Http2}
|
|
19
|
-
* @param {Fl32_Web_Node_Path}
|
|
20
|
-
* @param {Fl32_Web_Back_Logger}
|
|
21
|
-
* @param {Fl32_Web_Back_Helper_Mime}
|
|
22
|
-
* @param {Fl32_Web_Back_Handler_Static_A_Resolver}
|
|
23
|
-
* @param {Fl32_Web_Back_Handler_Static_A_Fallback}
|
|
7
|
+
* @param {object} deps
|
|
8
|
+
* @param {Fl32_Web_Node_Fs} deps.fs
|
|
9
|
+
* @param {Fl32_Web_Node_Http2} deps.http2
|
|
10
|
+
* @param {Fl32_Web_Node_Path} deps.path
|
|
11
|
+
* @param {Fl32_Web_Back_Logger} deps.logger
|
|
12
|
+
* @param {Fl32_Web_Back_Helper_Mime} deps.helpMime
|
|
13
|
+
* @param {Fl32_Web_Back_Handler_Static_A_Resolver} deps.resolver
|
|
14
|
+
* @param {Fl32_Web_Back_Handler_Static_A_Fallback} deps.fallback
|
|
24
15
|
*/
|
|
25
|
-
constructor(
|
|
26
|
-
{
|
|
27
|
-
fs,
|
|
28
|
-
http2,
|
|
29
|
-
path,
|
|
30
|
-
logger,
|
|
31
|
-
helpMime,
|
|
32
|
-
resolver,
|
|
33
|
-
fallback,
|
|
34
|
-
}
|
|
35
|
-
) {
|
|
36
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
16
|
+
constructor({fs, http2, path, logger, helpMime, resolver, fallback}) {
|
|
37
17
|
const {constants: H2} = http2;
|
|
38
18
|
|
|
39
19
|
/**
|
|
@@ -80,3 +60,18 @@ export default class Fl32_Web_Back_Handler_Static_A_FileService {
|
|
|
80
60
|
};
|
|
81
61
|
}
|
|
82
62
|
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Dependencies for the static file service.
|
|
66
|
+
*/
|
|
67
|
+
export const __deps__ = Object.freeze({
|
|
68
|
+
default: {
|
|
69
|
+
fs: 'node:fs',
|
|
70
|
+
http2: 'node:http2',
|
|
71
|
+
path: 'node:path',
|
|
72
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
73
|
+
helpMime: 'Fl32_Web_Back_Helper_Mime$',
|
|
74
|
+
resolver: 'Fl32_Web_Back_Handler_Static_A_Resolver$',
|
|
75
|
+
fallback: 'Fl32_Web_Back_Handler_Static_A_Fallback$',
|
|
76
|
+
},
|
|
77
|
+
});
|
|
@@ -1,24 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static configuration registry.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
export const __deps__ = Object.freeze({
|
|
4
|
-
configFactory: 'Fl32_Web_Back_Handler_Static_A_Config$',
|
|
5
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
6
|
-
});
|
|
7
|
-
|
|
8
5
|
export default class Fl32_Web_Back_Handler_Static_A_Registry {
|
|
9
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
10
6
|
/**
|
|
11
|
-
* @param {object}
|
|
12
|
-
* @param {Fl32_Web_Back_Handler_Static_A_Config}
|
|
13
|
-
* @param {Fl32_Web_Back_Logger}
|
|
7
|
+
* @param {object} deps
|
|
8
|
+
* @param {Fl32_Web_Back_Handler_Static_A_Config} deps.configFactory
|
|
9
|
+
* @param {Fl32_Web_Back_Logger} deps.logger
|
|
14
10
|
*/
|
|
15
|
-
constructor(
|
|
16
|
-
{
|
|
17
|
-
configFactory,
|
|
18
|
-
logger,
|
|
19
|
-
}
|
|
20
|
-
) {
|
|
21
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
11
|
+
constructor({configFactory, logger}) {
|
|
22
12
|
/** @type {Fl32_Web_Back_Dto_Source[]} */
|
|
23
13
|
let _configs = [];
|
|
24
14
|
|
|
@@ -40,7 +30,6 @@ export default class Fl32_Web_Back_Handler_Static_A_Registry {
|
|
|
40
30
|
_configs.sort((a, b) => b.prefix.length - a.prefix.length);
|
|
41
31
|
};
|
|
42
32
|
|
|
43
|
-
|
|
44
33
|
/**
|
|
45
34
|
* Find configuration by matching URL prefix.
|
|
46
35
|
*
|
|
@@ -58,3 +47,13 @@ export default class Fl32_Web_Back_Handler_Static_A_Registry {
|
|
|
58
47
|
};
|
|
59
48
|
}
|
|
60
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Dependencies for the static registry helper.
|
|
53
|
+
*/
|
|
54
|
+
export const __deps__ = Object.freeze({
|
|
55
|
+
default: {
|
|
56
|
+
configFactory: 'Fl32_Web_Back_Handler_Static_A_Config$',
|
|
57
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
58
|
+
},
|
|
59
|
+
});
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
*
|
|
5
|
-
* a relative URL to an absolute filesystem path under a given root.
|
|
2
|
+
* Static path resolver.
|
|
6
3
|
*/
|
|
7
|
-
|
|
8
|
-
path: 'node_path',
|
|
9
|
-
});
|
|
10
|
-
|
|
4
|
+
// @ts-check
|
|
11
5
|
export default class Fl32_Web_Back_Handler_Static_A_Resolver {
|
|
12
6
|
/**
|
|
13
|
-
* @param {object}
|
|
14
|
-
* @param {Fl32_Web_Node_Path}
|
|
7
|
+
* @param {object} deps
|
|
8
|
+
* @param {Fl32_Web_Node_Path} deps.path
|
|
15
9
|
*/
|
|
16
10
|
constructor({path}) {
|
|
17
11
|
/**
|
|
@@ -88,3 +82,12 @@ export default class Fl32_Web_Back_Handler_Static_A_Resolver {
|
|
|
88
82
|
};
|
|
89
83
|
}
|
|
90
84
|
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Dependencies for the static resolver helper.
|
|
88
|
+
*/
|
|
89
|
+
export const __deps__ = Object.freeze({
|
|
90
|
+
default: {
|
|
91
|
+
path: 'node:path',
|
|
92
|
+
},
|
|
93
|
+
});
|
|
@@ -1,41 +1,20 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Universal static-file PROCESS handler.
|
|
5
3
|
*
|
|
6
4
|
* @implements Fl32_Web_Back_Api_Handler
|
|
7
5
|
*/
|
|
8
|
-
|
|
9
|
-
registry: 'Fl32_Web_Back_Handler_Static_A_Registry$',
|
|
10
|
-
fileService: 'Fl32_Web_Back_Handler_Static_A_FileService$',
|
|
11
|
-
respond: 'Fl32_Web_Back_Helper_Respond$',
|
|
12
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
13
|
-
dtoInfoFactory: 'Fl32_Web_Back_Dto_Info__Factory$',
|
|
14
|
-
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
15
|
-
});
|
|
16
|
-
|
|
6
|
+
// @ts-check
|
|
17
7
|
export default class Fl32_Web_Back_Handler_Static {
|
|
18
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
19
8
|
/**
|
|
20
|
-
* @param {object}
|
|
21
|
-
* @param {Fl32_Web_Back_Handler_Static_A_Registry}
|
|
22
|
-
* @param {Fl32_Web_Back_Handler_Static_A_FileService}
|
|
23
|
-
* @param {Fl32_Web_Back_Helper_Respond}
|
|
24
|
-
* @param {Fl32_Web_Back_Logger}
|
|
25
|
-
* @param {Fl32_Web_Back_Dto_Info$Factory}
|
|
26
|
-
* @param {Fl32_Web_Back_Enum_Stage}
|
|
9
|
+
* @param {object} deps
|
|
10
|
+
* @param {Fl32_Web_Back_Handler_Static_A_Registry} deps.registry
|
|
11
|
+
* @param {Fl32_Web_Back_Handler_Static_A_FileService} deps.fileService
|
|
12
|
+
* @param {Fl32_Web_Back_Helper_Respond} deps.respond
|
|
13
|
+
* @param {Fl32_Web_Back_Logger} deps.logger
|
|
14
|
+
* @param {Fl32_Web_Back_Dto_Info$Factory} deps.dtoInfoFactory
|
|
15
|
+
* @param {Fl32_Web_Back_Enum_Stage} deps.STAGE
|
|
27
16
|
*/
|
|
28
|
-
constructor(
|
|
29
|
-
{
|
|
30
|
-
registry,
|
|
31
|
-
fileService,
|
|
32
|
-
respond,
|
|
33
|
-
logger,
|
|
34
|
-
dtoInfoFactory,
|
|
35
|
-
STAGE,
|
|
36
|
-
}
|
|
37
|
-
) {
|
|
38
|
-
/* eslint-enable jsdoc/check-param-names */
|
|
17
|
+
constructor({registry, fileService, respond, logger, dtoInfoFactory, STAGE}) {
|
|
39
18
|
|
|
40
19
|
const _info = dtoInfoFactory.create({
|
|
41
20
|
name: this.constructor.name,
|
|
@@ -77,3 +56,17 @@ export default class Fl32_Web_Back_Handler_Static {
|
|
|
77
56
|
this.getRegistrationInfo = () => _info;
|
|
78
57
|
}
|
|
79
58
|
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Dependencies for the static handler.
|
|
62
|
+
*/
|
|
63
|
+
export const __deps__ = Object.freeze({
|
|
64
|
+
default: {
|
|
65
|
+
registry: 'Fl32_Web_Back_Handler_Static_A_Registry$',
|
|
66
|
+
fileService: 'Fl32_Web_Back_Handler_Static_A_FileService$',
|
|
67
|
+
respond: 'Fl32_Web_Back_Helper_Respond$',
|
|
68
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
69
|
+
dtoInfoFactory: 'Fl32_Web_Back_Dto_Info__Factory$',
|
|
70
|
+
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
71
|
+
},
|
|
72
|
+
});
|
package/src/Back/Helper/Cast.mjs
CHANGED
package/src/Back/Helper/Mime.mjs
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP response helper.
|
|
3
|
+
*/
|
|
1
4
|
// @ts-check
|
|
2
|
-
|
|
3
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
4
|
-
export const __deps__ = Object.freeze({
|
|
5
|
-
http2: 'node_http2',
|
|
6
|
-
});
|
|
7
|
-
|
|
8
5
|
export default class Fl32_Web_Back_Helper_Respond {
|
|
9
6
|
/**
|
|
10
|
-
* @param {object}
|
|
11
|
-
* @param {Fl32_Web_Node_Http2}
|
|
7
|
+
* @param {object} deps
|
|
8
|
+
* @param {Fl32_Web_Node_Http2} deps.http2
|
|
12
9
|
*/
|
|
13
|
-
constructor(
|
|
14
|
-
{
|
|
15
|
-
http2,
|
|
16
|
-
}
|
|
17
|
-
) {
|
|
10
|
+
constructor({http2}) {
|
|
18
11
|
// VARS
|
|
19
12
|
const {constants: H2} = http2;
|
|
20
13
|
const {
|
|
@@ -160,3 +153,12 @@ export default class Fl32_Web_Back_Helper_Respond {
|
|
|
160
153
|
};
|
|
161
154
|
}
|
|
162
155
|
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Dependencies for the response helper.
|
|
159
|
+
*/
|
|
160
|
+
export const __deps__ = Object.freeze({
|
|
161
|
+
default: {
|
|
162
|
+
http2: 'node:http2',
|
|
163
|
+
},
|
|
164
|
+
});
|
package/src/Back/Logger.mjs
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Pipeline Engine is the single request-lifecycle coordination component.
|
|
5
3
|
* It executes handlers in three deterministic stages:
|
|
6
4
|
* `INIT -> PROCESS -> FINALIZE`.
|
|
7
5
|
*/
|
|
8
|
-
|
|
9
|
-
dtoRequestContextFactory: 'Fl32_Web_Back_Dto_RequestContext__Factory$',
|
|
10
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
11
|
-
respond: 'Fl32_Web_Back_Helper_Respond$',
|
|
12
|
-
helpOrder: 'Fl32_Web_Back_Helper_Order_Kahn$',
|
|
13
|
-
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
14
|
-
});
|
|
6
|
+
// @ts-check
|
|
15
7
|
|
|
16
8
|
const KEY_STAGE = Symbol('stage');
|
|
17
9
|
|
|
@@ -25,15 +17,7 @@ export default class Fl32_Web_Back_PipelineEngine {
|
|
|
25
17
|
* @param {Fl32_Web_Back_Helper_Order_Kahn} params.helpOrder
|
|
26
18
|
* @param {Fl32_Web_Back_Enum_Stage} params.STAGE
|
|
27
19
|
*/
|
|
28
|
-
constructor(
|
|
29
|
-
{
|
|
30
|
-
dtoRequestContextFactory,
|
|
31
|
-
logger,
|
|
32
|
-
respond,
|
|
33
|
-
helpOrder,
|
|
34
|
-
STAGE,
|
|
35
|
-
}
|
|
36
|
-
) {
|
|
20
|
+
constructor({dtoRequestContextFactory, logger, respond, helpOrder, STAGE}) {
|
|
37
21
|
/* eslint-enable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
38
22
|
/** @type {Map<string, Fl32_Web_Back_Api_Handler>} */
|
|
39
23
|
const handlers = new Map();
|
|
@@ -214,3 +198,13 @@ export default class Fl32_Web_Back_PipelineEngine {
|
|
|
214
198
|
this.handleRequest = async (req, res) => this.onEventRequest(req, res);
|
|
215
199
|
}
|
|
216
200
|
}
|
|
201
|
+
|
|
202
|
+
export const __deps__ = Object.freeze({
|
|
203
|
+
default: {
|
|
204
|
+
dtoRequestContextFactory: 'Fl32_Web_Back_Dto_RequestContext__Factory$',
|
|
205
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
206
|
+
respond: 'Fl32_Web_Back_Helper_Respond$',
|
|
207
|
+
helpOrder: 'Fl32_Web_Back_Helper_Order_Kahn$',
|
|
208
|
+
STAGE: 'Fl32_Web_Back_Enum_Stage$',
|
|
209
|
+
},
|
|
210
|
+
});
|
package/src/Back/Server.mjs
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Web server implementation supporting HTTP/1 and HTTP/2 protocols.
|
|
5
3
|
* Handles incoming requests and delegates them to the Pipeline Engine.
|
|
6
4
|
*/
|
|
7
|
-
|
|
8
|
-
http: 'node_http',
|
|
9
|
-
http2: 'node_http2',
|
|
10
|
-
config: 'Fl32_Web_Back_Config_Runtime$',
|
|
11
|
-
logger: 'Fl32_Web_Back_Logger$',
|
|
12
|
-
pipelineEngine: 'Fl32_Web_Back_PipelineEngine$',
|
|
13
|
-
SERVER_TYPE: 'Fl32_Web_Back_Enum_Server_Type$',
|
|
14
|
-
});
|
|
15
|
-
|
|
5
|
+
// @ts-check
|
|
16
6
|
export default class Fl32_Web_Back_Server {
|
|
17
|
-
/* eslint-disable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
18
7
|
/**
|
|
19
8
|
* @param {object} deps
|
|
20
9
|
* @param {Fl32_Web_Node_Http} deps.http
|
|
@@ -24,17 +13,7 @@ export default class Fl32_Web_Back_Server {
|
|
|
24
13
|
* @param {Fl32_Web_Back_PipelineEngine} deps.pipelineEngine
|
|
25
14
|
* @param {Fl32_Web_Back_Enum_Server_Type} deps.SERVER_TYPE
|
|
26
15
|
*/
|
|
27
|
-
constructor(
|
|
28
|
-
{
|
|
29
|
-
http,
|
|
30
|
-
http2,
|
|
31
|
-
config,
|
|
32
|
-
logger,
|
|
33
|
-
pipelineEngine,
|
|
34
|
-
SERVER_TYPE,
|
|
35
|
-
}
|
|
36
|
-
) {
|
|
37
|
-
/* eslint-enable jsdoc/require-param-description,jsdoc/check-param-names */
|
|
16
|
+
constructor({http, http2, config, logger, pipelineEngine, SERVER_TYPE}) {
|
|
38
17
|
// VARS
|
|
39
18
|
const { createServer } = http;
|
|
40
19
|
const { createServer: createServerH2, createSecureServer } = http2;
|
|
@@ -98,3 +77,17 @@ export default class Fl32_Web_Back_Server {
|
|
|
98
77
|
};
|
|
99
78
|
}
|
|
100
79
|
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Dependencies for the web server.
|
|
83
|
+
*/
|
|
84
|
+
export const __deps__ = Object.freeze({
|
|
85
|
+
default: {
|
|
86
|
+
http: 'node:http',
|
|
87
|
+
http2: 'node:http2',
|
|
88
|
+
config: 'Fl32_Web_Back_Config_Runtime$',
|
|
89
|
+
logger: 'Fl32_Web_Back_Logger$',
|
|
90
|
+
pipelineEngine: 'Fl32_Web_Back_PipelineEngine$',
|
|
91
|
+
SERVER_TYPE: 'Fl32_Web_Back_Enum_Server_Type$',
|
|
92
|
+
},
|
|
93
|
+
});
|