godprotocol 2.2.68 → 2.2.70

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.68",
3
+ "version": "2.2.70",
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",
@@ -39,25 +39,52 @@ const applyCors = (req, res) => {
39
39
  };
40
40
 
41
41
  const respond = (result, res) => {
42
+ // ----------------------------
43
+ // REDIRECT
44
+ // ----------------------------
45
+
46
+ if (result?.redirect) {
47
+ const status = result?.status || 302;
48
+
49
+ res.statusCode = status;
50
+ res.setHeader("Location", result.redirect);
51
+
52
+ res.end();
53
+
54
+ return result;
55
+ }
56
+
57
+ // ----------------------------
58
+ // NORMAL JSON RESPONSE
59
+ // ----------------------------
60
+
42
61
  const response = {
43
62
  ok: result?.ok ?? false,
44
63
  message: result?.message ?? "",
45
64
  data: result?.data,
46
65
  };
47
66
 
48
- if (result?.pagination) response.pagination = result.pagination;
49
- if (result?.token) response.token = result.token;
67
+ if (result?.pagination) {
68
+ response.pagination = result.pagination;
69
+ }
70
+
71
+ if (result?.token) {
72
+ response.token = result.token;
73
+ }
50
74
 
51
75
  const status = result?.status || (result?.ok ? 200 : 403);
52
76
 
53
77
  res.statusCode = status;
78
+
54
79
  res.setHeader("Content-Type", "application/json");
80
+
55
81
  res.end(JSON.stringify(response));
56
82
 
57
83
  return response;
58
84
  };
59
85
 
60
86
  const version_middleware = async (req, res, routers) => {
87
+ let error_stage = "Version Middleware";
61
88
  try {
62
89
  applyCors(req, res);
63
90
 
@@ -66,9 +93,15 @@ const version_middleware = async (req, res, routers) => {
66
93
  return res.end();
67
94
  }
68
95
 
69
- const version = req.headers["x-api-version"] || "v1";
96
+ let version;
70
97
 
71
- const versionRouter = routers.get_version(version);
98
+ if (req.method === "GET") {
99
+ version = "__GET__";
100
+ } else {
101
+ version = req.headers["x-api-version"] || "v1";
102
+ }
103
+
104
+ const versionRouter = await routers.get_version(version);
72
105
 
73
106
  if (!versionRouter) {
74
107
  return respond(
@@ -81,27 +114,17 @@ const version_middleware = async (req, res, routers) => {
81
114
  );
82
115
  }
83
116
 
84
- // ----------------------------
85
- // PARSE URL + QUERY
86
- // ----------------------------
87
-
88
- const url = new URL(req.url, `http://${req.headers.host}`);
89
-
90
- const query = Object.fromEntries(url.searchParams.entries());
91
-
92
- // ----------------------------
93
- // PARSE BODY
94
- // ----------------------------
95
-
96
117
  let body = {};
97
118
 
98
- if (!["GET", "HEAD"].includes(req.method)) {
119
+ if (req.method === "GET") {
120
+ const url = new URL(req.url, `http://${req.headers.host}`);
121
+
122
+ body = Object.fromEntries(url.searchParams.entries());
123
+ } else {
124
+ error_stage = "Body Parser";
99
125
  body = await getBody(req);
100
126
  }
101
127
 
102
- // unified payload
103
- body = req.method === "GET" ? query : body;
104
-
105
128
  if (versionRouter.config?.is_old) {
106
129
  req.body = body;
107
130
  return versionRouter.routes(req, res);
@@ -110,11 +133,14 @@ const version_middleware = async (req, res, routers) => {
110
133
  const router = routers;
111
134
 
112
135
  // remove query string from route
113
- const name = url.pathname.replace(/^\//, "");
136
+ const parsedUrl = new URL(req.url, `http://${req.headers.host}`);
137
+ req.url = parsedUrl.pathname;
138
+ const name = req.url.replace(/^\//, "");
114
139
 
115
140
  const isWebhook = req.headers["is-webhook"];
116
141
 
117
142
  // SECURITY
143
+ error_stage = "Header";
118
144
  const securityResult = await router.handle_security(name, req);
119
145
 
120
146
  if (securityResult !== true) {
@@ -126,6 +152,7 @@ const version_middleware = async (req, res, routers) => {
126
152
 
127
153
  // WEBHOOK PRIOR
128
154
  if (!isWebhook) {
155
+ error_stage = "Callback";
129
156
  const webPrior = await router.handle_webhook_prior({
130
157
  ...req,
131
158
  body,
@@ -139,6 +166,7 @@ const version_middleware = async (req, res, routers) => {
139
166
  }
140
167
 
141
168
  // EXECUTE
169
+ error_stage = "Handler";
142
170
  const result = await router.execute(name, {
143
171
  body,
144
172
  route: name,
@@ -151,12 +179,13 @@ const version_middleware = async (req, res, routers) => {
151
179
 
152
180
  // WEBHOOK AFTER
153
181
  if (!isWebhook) {
182
+ error_stage = "Webhook";
154
183
  await router.handle_webhook_after(req, result);
155
184
  }
156
185
 
157
186
  return respond(result, res);
158
187
  } catch (err) {
159
- console.error("Version Middleware Error:", err);
188
+ console.error(`${error_stage} Error:`, err);
160
189
 
161
190
  return respond(
162
191
  {