godprotocol 2.3.60 → 2.3.62

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.3.60",
3
+ "version": "2.3.62",
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",
@@ -61,7 +61,7 @@ class Route_table extends Headers {
61
61
 
62
62
  handle_before = async (payload) => {
63
63
  for (const callback of this.before_callbacks) {
64
- const result = await callback(payload);
64
+ const result = await callback(payload, this.gp);
65
65
 
66
66
  if (result && result.ok === false) {
67
67
  return result;
@@ -71,9 +71,9 @@ class Route_table extends Headers {
71
71
  return { ok: true };
72
72
  };
73
73
 
74
- handle_after = async (payload, response) => {
74
+ handle_after = async (payload) => {
75
75
  for (const callback of this.after_callbacks) {
76
- await callback(payload, response);
76
+ await callback(payload, this.gp);
77
77
  }
78
78
 
79
79
  return { ok: true };
@@ -81,7 +81,7 @@ class Route_table extends Headers {
81
81
 
82
82
  handle_error_callback = async (payload) => {
83
83
  for (const callback of this.error_callbacks) {
84
- await callback(payload);
84
+ await callback(payload, this.gp);
85
85
  }
86
86
 
87
87
  return { ok: true };
@@ -11,16 +11,44 @@ const getBody = (req) => {
11
11
 
12
12
  req.on("end", () => {
13
13
  try {
14
- const parsed = data ? JSON.parse(data) : {};
15
- resolve(parsed);
14
+ if (!data.trim()) {
15
+ return resolve({});
16
+ }
17
+
18
+ const contentType = req.headers["content-type"] || "";
19
+
20
+ // JSON
21
+ if (contentType.includes("application/json")) {
22
+ try {
23
+ return resolve(JSON.parse(data));
24
+ } catch {
25
+ return resolve(data);
26
+ }
27
+ }
28
+
29
+ // Form URL Encoded
30
+ if (contentType.includes("application/x-www-form-urlencoded")) {
31
+ return resolve(Object.fromEntries(new URLSearchParams(data)));
32
+ }
33
+
34
+ // Plain text
35
+ if (contentType.includes("text/plain")) {
36
+ return resolve(data);
37
+ }
38
+
39
+ // Unknown type:
40
+ // attempt JSON, otherwise return raw body
41
+ try {
42
+ return resolve(JSON.parse(data));
43
+ } catch {
44
+ return resolve(data);
45
+ }
16
46
  } catch (err) {
17
- reject(new Error("Invalid JSON body"));
47
+ reject(err);
18
48
  }
19
49
  });
20
50
 
21
- req.on("error", (err) => {
22
- reject(err);
23
- });
51
+ req.on("error", reject);
24
52
  });
25
53
  };
26
54
 
@@ -224,6 +252,20 @@ const respond = (result, res) => {
224
252
  const version_middleware = async (req, res, routers) => {
225
253
  let error_stage = "Version Middleware";
226
254
 
255
+ // Hoisted so the catch block can see them — try/catch are separate
256
+ // block scopes, so anything declared with let/const *inside* try
257
+ // is invisible inside catch. These need to exist before try starts.
258
+ let version;
259
+ let versionRouter;
260
+ let query = {};
261
+ let body = {};
262
+ let name;
263
+ let router;
264
+ let securityResult;
265
+ let callback;
266
+ let payload;
267
+ let result;
268
+
227
269
  try {
228
270
  applyCors(req, res);
229
271
 
@@ -235,8 +277,7 @@ const version_middleware = async (req, res, routers) => {
235
277
  const parsed_url = new URL(req.url, `http://${req.headers.host}`);
236
278
  const pathname = parsed_url.pathname;
237
279
 
238
- // ⬇️ query params captured for every method now
239
- const query = Object.fromEntries(parsed_url.searchParams.entries());
280
+ query = Object.fromEntries(parsed_url.searchParams.entries()); // was: const query =
240
281
  req.query = query;
241
282
 
242
283
  req.request_id = crypto.randomUUID();
@@ -245,8 +286,6 @@ const version_middleware = async (req, res, routers) => {
245
286
  res.request_id = req.request_id;
246
287
 
247
288
  // STATIC ROUTE DETECTION
248
- let version;
249
-
250
289
  const versionMatch = pathname.match(/^\/api\/([^\/]+)(\/|$)/i);
251
290
  if (req.method === "GET") {
252
291
  if (routers.static_path && pathname.startsWith(routers.static_path)) {
@@ -267,7 +306,7 @@ const version_middleware = async (req, res, routers) => {
267
306
  req.headers["x-platform"],
268
307
  );
269
308
 
270
- let versionRouter = await routers.get_version(version);
309
+ versionRouter = await routers.get_version(version);
271
310
 
272
311
  if (!versionRouter) {
273
312
  version = "*";
@@ -288,10 +327,7 @@ const version_middleware = async (req, res, routers) => {
288
327
 
289
328
  version = versionRouter.version;
290
329
 
291
- let body = {};
292
-
293
330
  if (req.method === "GET") {
294
- // GET keeps existing behavior: query params double as body
295
331
  body = query;
296
332
  } else {
297
333
  const contentType = req.headers["content-type"] || "";
@@ -309,7 +345,7 @@ const version_middleware = async (req, res, routers) => {
309
345
  return versionRouter.routes(req, res);
310
346
  }
311
347
 
312
- const router = routers;
348
+ router = routers;
313
349
 
314
350
  // remove query string from route
315
351
  let routePath = pathname;
@@ -324,13 +360,13 @@ const version_middleware = async (req, res, routers) => {
324
360
 
325
361
  req.url = routePath;
326
362
 
327
- let name = routePath.replace(/^\//, "");
363
+ name = routePath.replace(/^\//, ""); // was: let name =
328
364
 
329
365
  const isWebhook = req.headers["is-webhook"];
330
366
 
331
367
  // SECURITY
332
368
  error_stage = "Header";
333
- const securityResult = await router.handle_security(name, req, version);
369
+ securityResult = await router.handle_security(name, req, version); // was: const securityResult =
334
370
 
335
371
  if (securityResult !== true) {
336
372
  return respond(securityResult, res);
@@ -344,22 +380,19 @@ const version_middleware = async (req, res, routers) => {
344
380
  });
345
381
 
346
382
  // WEBHOOK PRIOR
347
- const callback = await router.handle_before(
348
- {
349
- req,
350
- body,
351
- query,
352
- route: name,
353
- db: db.db,
354
- },
355
- router.gp,
356
- );
383
+ callback = await router.handle_before({
384
+ req,
385
+ body,
386
+ query,
387
+ route: name,
388
+ db: db.db,
389
+ });
357
390
 
358
391
  if (callback?.response) return respond(callback.response, res);
359
392
 
360
393
  if (callback?.body) body = callback.body;
361
394
 
362
- if (callback?.query) query = callback.query; // only if you make `query` a `let` — see note below
395
+ if (callback?.query) query = callback.query;
363
396
 
364
397
  if (callback?.headers) req.headers = callback.headers;
365
398
 
@@ -369,7 +402,7 @@ const version_middleware = async (req, res, routers) => {
369
402
  // EXECUTE
370
403
 
371
404
  error_stage = "Handler";
372
- let payload = {
405
+ payload = {
373
406
  body,
374
407
  query,
375
408
  route: name,
@@ -383,23 +416,20 @@ const version_middleware = async (req, res, routers) => {
383
416
  params: {},
384
417
  memory: router.gp.memory,
385
418
  };
386
- const result = await router.execute(name, payload, version);
419
+ result = await router.execute(name, payload, version);
387
420
 
388
421
  // WEBHOOK AFTER
389
422
  if (!isWebhook && version !== "*") {
390
423
  error_stage = "Webhook";
391
424
 
392
- await router.handle_after(
393
- {
394
- req: payload,
395
- result,
396
- headers: req.headers,
397
- version,
398
- route: payload.route_pattern || name,
399
- db: db.db,
400
- },
401
- router.gp,
402
- );
425
+ await router.handle_after({
426
+ req: payload,
427
+ result,
428
+ headers: req.headers,
429
+ version,
430
+ route: payload.route_pattern || name,
431
+ db: db.db,
432
+ });
403
433
  }
404
434
 
405
435
  return respond(result, res);
@@ -407,11 +437,9 @@ const version_middleware = async (req, res, routers) => {
407
437
  console.error(`${error_stage} Error:`, err);
408
438
 
409
439
  try {
410
- await router.handle_error_callback({
440
+ await routers?.handle_error_callback?.({
411
441
  request_id: req?.request_id,
412
-
413
442
  stage: error_stage,
414
-
415
443
  timestamp: new Date().toISOString(),
416
444
 
417
445
  error: {