@toa.io/bindings.http 1.0.0-alpha.320 → 1.0.0-alpha.322

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": "@toa.io/bindings.http",
3
- "version": "1.0.0-alpha.320",
3
+ "version": "1.0.0-alpha.322",
4
4
  "type": "module",
5
5
  "description": "Toa HTTP Binding",
6
6
  "author": "temich <tema.gurtovoy@gmail.com>",
@@ -24,13 +24,13 @@
24
24
  "main": "transpiled/index.js",
25
25
  "types": "transpiled/index.d.ts",
26
26
  "dependencies": {
27
- "@toa.io/core": "1.0.0-alpha.320",
28
- "@toa.io/definitions": "1.0.0-alpha.320",
27
+ "@toa.io/core": "1.0.0-alpha.322",
28
+ "@toa.io/definitions": "1.0.0-alpha.322",
29
29
  "@toa.io/generic": "1.0.0-alpha.311",
30
30
  "openspan": "1.0.0-alpha.305"
31
31
  },
32
32
  "scripts": {
33
33
  "transpile": "tsc"
34
34
  },
35
- "gitHead": "5ef92ab939a596e4ac820965c59c015820eba7b2"
35
+ "gitHead": "ef65352a8bd7bc0ef400fcc8cde0e19a3bb92199"
36
36
  }
@@ -43,19 +43,20 @@ export class Server extends Connector {
43
43
  }
44
44
  listener(request, response) {
45
45
  const invoke = request.method === 'POST' ? this.routes.get(request.url ?? '') : undefined;
46
- if (invoke === undefined) {
46
+ if (typeof invoke !== 'function') {
47
47
  response.writeHead(404);
48
48
  response.end();
49
49
  return;
50
50
  }
51
51
  const header = request.headers[HEADER];
52
52
  const path = request.headers[PATH];
53
- if (typeof header !== 'string' || typeof path !== 'string') {
53
+ const envelope = placed(path) ? parse(header) : null;
54
+ // thrown from here, a request that is not a call would take the process down with it
55
+ if (envelope === null) {
54
56
  response.writeHead(400);
55
57
  response.end();
56
58
  return;
57
59
  }
58
- const envelope = JSON.parse(header);
59
60
  attach(envelope, path, request);
60
61
  invoke(envelope)
61
62
  .then(async (reply) => await write(response, reply))
@@ -67,4 +68,37 @@ export class Server extends Connector {
67
68
  });
68
69
  }
69
70
  }
71
+ /**
72
+ * Where a caller took the stream from, as `detach` names it: a property, or its `stream`. Any
73
+ * other path is not one a caller makes, and one through `__proto__` would write the stream into
74
+ * every object of the process.
75
+ */
76
+ function placed(path) {
77
+ if (typeof path !== 'string')
78
+ return false;
79
+ const [key, nested, ...rest] = path.split('.');
80
+ return (key !== '' &&
81
+ !FORBIDDEN.has(key) &&
82
+ (nested === undefined || nested === 'stream') &&
83
+ rest.length === 0);
84
+ }
85
+ const FORBIDDEN = new Set(['__proto__', 'constructor', 'prototype']);
86
+ /** The call a header carries, or `null` where it carries none: what `attach` can put a stream in. */
87
+ function parse(header) {
88
+ if (typeof header !== 'string')
89
+ return null;
90
+ let envelope;
91
+ try {
92
+ envelope = JSON.parse(header);
93
+ }
94
+ catch {
95
+ return null;
96
+ }
97
+ if (envelope === null || typeof envelope !== 'object' || Array.isArray(envelope))
98
+ return null;
99
+ const input = envelope.input;
100
+ if (input !== undefined && input !== null && (typeof input !== 'object' || Array.isArray(input)))
101
+ return null;
102
+ return envelope;
103
+ }
70
104
  //# sourceMappingURL=Server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../source/Server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMlC;;;GAGG;AACH,MAAM,OAAO,MAAO,SAAQ,SAAS;IAClB,IAAI,CAAQ;IACZ,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IAClC,MAAM,CAAa;IAEpC,YAAmB,IAAY;QAC7B,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3D,CAAC;IAEM,KAAK,CAAC,IAAY,EAAE,MAAc;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAA;QAElF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/B,CAAC;IAEM,OAAO,CAAC,IAAY;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IAEkB,KAAK,CAAC,IAAI;QAC3B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAE/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAChC,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC9D,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEkB,KAAK,CAAC,KAAK;QAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,iFAAiF;YACjF,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAA;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,QAAQ,CAAC,OAA6B,EAAE,QAA6B;QAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEzF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;YAEd,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3D,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;YAEd,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAA;QAE9C,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QAE/B,MAAM,CAAC,QAAQ,CAAC;aACb,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aACnD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAEhD,IAAI,CAAC,QAAQ,CAAC,WAAW;gBAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAElD,QAAQ,CAAC,GAAG,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../source/Server.ts"],"names":[],"mappings":"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"}