godprotocol 2.2.58 → 2.2.59

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "godprotocol",
3
- "version": "2.2.58",
3
+ "version": "2.2.59",
4
4
  "description": "A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.",
5
5
  "main": "Index.js",
6
6
  "type": "module",
@@ -1,91 +1,133 @@
1
- const respond = async (result, res) => {
2
- let response = {
3
- ok: result?.ok,
4
- message: result.message,
5
- data: result.data,
1
+ const getBody = (req) => {
2
+ return new Promise((resolve, reject) => {
3
+ let data = "";
4
+
5
+ req.on("data", (chunk) => {
6
+ data += chunk;
7
+ });
8
+
9
+ req.on("end", () => {
10
+ try {
11
+ const parsed = data ? JSON.parse(data) : {};
12
+ resolve(parsed);
13
+ } catch (err) {
14
+ reject(new Error("Invalid JSON body"));
15
+ }
16
+ });
17
+
18
+ req.on("error", (err) => {
19
+ reject(err);
20
+ });
21
+ });
22
+ };
23
+
24
+ const respond = (result, res) => {
25
+ const response = {
26
+ ok: result?.ok ?? false,
27
+ message: result?.message ?? "",
28
+ data: result?.data,
6
29
  };
7
- if (result.pagination) response.pagination = result.pagination;
8
- if (result.token) response.token = result.token;
9
30
 
10
- if (!res) return response;
31
+ if (result?.pagination) response.pagination = result.pagination;
32
+ if (result?.token) response.token = result.token;
11
33
 
12
- res.status(result?.status || (result?.ok ? 200 : 403)).json(response);
34
+ const status = result?.status || (result?.ok ? 200 : 403);
35
+
36
+ res.statusCode = status;
37
+ res.setHeader("Content-Type", "application/json");
38
+ res.end(JSON.stringify(response));
39
+
40
+ return response;
13
41
  };
14
42
 
15
43
  const version_middleware = async (req, res, routers) => {
16
44
  try {
17
45
  const version = req.headers["x-api-version"] || "v1";
18
46
 
19
- let router = routers.get_version(version);
20
-
21
- if (router.config?.is_old) return router.routes(req, res);
22
-
23
- if (!router) {
24
- return res.status(400).json({
25
- error: "Invalid API version",
26
- version,
27
- });
47
+ const versionRouter = routers.get_version(version);
48
+ // ----------------------------
49
+ // BODY (STREAM PARSE)
50
+ // ----------------------------
51
+ const body = await getBody(req);
52
+
53
+ if (!versionRouter) {
54
+ res.statusCode = 400;
55
+ return res.end(
56
+ JSON.stringify({
57
+ ok: false,
58
+ error: "Invalid API version",
59
+ version,
60
+ }),
61
+ );
28
62
  }
29
63
 
30
- router = routers;
64
+ if (versionRouter.config?.is_old) {
65
+ req.body = body;
66
+ return versionRouter.routes(req, res);
67
+ }
31
68
 
32
- let name = req.path.slice(1),
33
- result;
69
+ const router = routers;
70
+ const name = req.url.replace(/^\//, "");
34
71
 
35
- try {
36
- result = await router.handle_security(name, req);
37
- // console.log("Security check result:", result);
72
+ const isWebhook = req.headers["is-webhook"];
38
73
 
39
- if (result !== true) {
40
- return await respond(result, res);
41
- }
42
- } catch (err) {
43
- console.error(err);
74
+ // ----------------------------
75
+ // SECURITY
76
+ // ----------------------------
77
+ const securityResult = await router.handle_security(name, req);
44
78
 
45
- throw new Error("Security check failed");
79
+ if (securityResult !== true) {
80
+ return respond(securityResult, res);
46
81
  }
47
82
 
48
- let db = await router.resolve_db(req);
49
- let is_webhook = req.headers["is-webhook"];
83
+ // ----------------------------
84
+ // DB
85
+ // ----------------------------
86
+ const db = await router.resolve_db(req);
50
87
 
51
- // console.log(req.headers);
52
- if (!is_webhook) {
53
- let web_prior = await router.handle_webhook_prior(req);
88
+ // ----------------------------
89
+ // WEBHOOK PRIOR
90
+ // ----------------------------
91
+ if (!isWebhook) {
92
+ const webPrior = await router.handle_webhook_prior(req);
54
93
 
55
- if (web_prior === false) {
56
- } else if (!web_prior?.ok) {
57
- return await respond(web_prior, res);
58
- } else {
59
- req.headers.webhook_prior = web_prior;
94
+ if (webPrior && webPrior.ok === false) {
95
+ return respond(webPrior, res);
60
96
  }
61
- }
62
-
63
- try {
64
- result = await router.execute(name, {
65
- body: req.body,
66
- headers: req.headers,
67
- db: db.db,
68
- gp: router.gp,
69
- services: router.get_service,
70
- });
71
97
 
72
- !is_webhook && (await router.handle_webhook_after(req, result));
73
-
74
- return await respond(result, res);
75
- } catch (err) {
76
- console.error(err);
98
+ if (webPrior?.ok) {
99
+ req.headers.webhook_prior = webPrior;
100
+ }
101
+ }
77
102
 
78
- throw new Error("Route execution failed");
103
+ // ----------------------------
104
+ // EXECUTE
105
+ // ----------------------------
106
+ const result = await router.execute(name, {
107
+ body,
108
+ headers: req.headers,
109
+ db: db.db,
110
+ gp: router.gp,
111
+ services: router.get_service,
112
+ });
113
+
114
+ // ----------------------------
115
+ // WEBHOOK AFTER
116
+ // ----------------------------
117
+ if (!isWebhook) {
118
+ await router.handle_webhook_after(req, result);
79
119
  }
120
+
121
+ return respond(result, res);
80
122
  } catch (err) {
81
123
  console.error("Version Middleware Error:", err);
82
124
 
83
- return (
84
- res &&
85
- res.status(500).json({
125
+ res.statusCode = 500;
126
+ res.end(
127
+ JSON.stringify({
86
128
  ok: false,
87
129
  message: "Internal server error",
88
- })
130
+ }),
89
131
  );
90
132
  }
91
133
  };