godprotocol 2.3.22 → 2.3.24
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/Godprotocol.js +13 -3
- package/package.json +1 -1
- package/server/Routable/Route_table.js +6 -6
- package/server/Utils_.js +45 -0
package/Godprotocol.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Resource from "./server/Resource.js";
|
|
2
2
|
import Route_table from "./server/Routable/Route_table.js";
|
|
3
|
+
import Utils from "./server/Utils_.js";
|
|
3
4
|
import version_middleware from "./server/version_control.js";
|
|
4
5
|
|
|
5
6
|
class GodProtocol {
|
|
@@ -15,6 +16,8 @@ class GodProtocol {
|
|
|
15
16
|
this.route_table = new Route_table(this);
|
|
16
17
|
|
|
17
18
|
this.memory = new Map();
|
|
19
|
+
|
|
20
|
+
this.utils = new Utils();
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
on_start(fn) {
|
|
@@ -49,8 +52,12 @@ class GodProtocol {
|
|
|
49
52
|
|
|
50
53
|
add_router = async (version, routes, opts = {}) => {
|
|
51
54
|
if (opts?.prefix) {
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
if (opts.prefix === "..") {
|
|
56
|
+
opts.prefix = "";
|
|
57
|
+
} else {
|
|
58
|
+
version = `${opts.prefix}:${version}`;
|
|
59
|
+
if (!opts.db_name) opts.db_name = opts.prefix;
|
|
60
|
+
}
|
|
54
61
|
}
|
|
55
62
|
|
|
56
63
|
if (typeof routes === "function" && !opts.is_old) routes = await routes();
|
|
@@ -61,7 +68,10 @@ class GodProtocol {
|
|
|
61
68
|
return;
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
await this.route_table.init_version(version, {
|
|
71
|
+
await this.route_table.init_version(version, {
|
|
72
|
+
db_name: opts.db_name,
|
|
73
|
+
db_prefix: opts.db_prefix,
|
|
74
|
+
});
|
|
65
75
|
|
|
66
76
|
await this.route_table.load_routes(routes, opts);
|
|
67
77
|
};
|
package/package.json
CHANGED
|
@@ -24,14 +24,14 @@ class Route_table extends Headers {
|
|
|
24
24
|
get_version = async (version = this.active_version) => {
|
|
25
25
|
let ver = this.versions[version];
|
|
26
26
|
|
|
27
|
-
if (!ver){
|
|
27
|
+
if (!ver) {
|
|
28
28
|
let versions = Object.keys(this.versions);
|
|
29
|
-
let verr= versions.find(v=>v.startsWith(`${version}:`));
|
|
29
|
+
let verr = versions.find((v) => v.startsWith(`${version}:`));
|
|
30
30
|
|
|
31
|
-
if (verr){
|
|
31
|
+
if (verr) {
|
|
32
32
|
let serv = await this.get_service(version);
|
|
33
|
-
if (serv){
|
|
34
|
-
version
|
|
33
|
+
if (serv) {
|
|
34
|
+
version = `${version}:${serv.api_version}`;
|
|
35
35
|
ver = this.versions[version];
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -80,7 +80,7 @@ class Route_table extends Headers {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
if (opts?.services) {
|
|
83
|
-
let services = await opts.services(opts.services_config);
|
|
83
|
+
let services = await opts.services(opts.services_config, this.gp);
|
|
84
84
|
await this.load_services(services, this.active_version);
|
|
85
85
|
}
|
|
86
86
|
};
|
package/server/Utils_.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
class Utils {
|
|
2
|
+
validateService = (names, services) => {
|
|
3
|
+
let hasErrors = false;
|
|
4
|
+
|
|
5
|
+
for (const name of names) {
|
|
6
|
+
const service = services[name];
|
|
7
|
+
|
|
8
|
+
if (!service) {
|
|
9
|
+
console.error(`Service "${name}" is missing.`);
|
|
10
|
+
hasErrors = true;
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const hasUrlOrLocal = Boolean(service.url || service.local);
|
|
15
|
+
const hasUri = Boolean(service.uri);
|
|
16
|
+
|
|
17
|
+
if (!hasUrlOrLocal || !hasUri) {
|
|
18
|
+
console.error(
|
|
19
|
+
`Service "${name}" must provide both (url or local) and uri properties.`,
|
|
20
|
+
);
|
|
21
|
+
hasErrors = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return !hasErrors;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
validateRouter = (name, services_config) => {
|
|
29
|
+
if (!services_config?.[name]) {
|
|
30
|
+
console.info(
|
|
31
|
+
`Missing required "${name}" service configuration in services_config`,
|
|
32
|
+
);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const prefix = services_config?.[name].local;
|
|
37
|
+
if (!prefix) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return prefix;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default Utils;
|