@opra/core 0.25.5 → 0.26.0

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.
Files changed (63) hide show
  1. package/cjs/augmentation/container.augmentation.js +2 -0
  2. package/cjs/http/adapters/express-adapter.host.js +34 -0
  3. package/cjs/http/{express-adapter.js → adapters/express-adapter.js} +1 -3
  4. package/cjs/http/{http-adapter.host.js → adapters/node-http-adapter.host.js} +30 -22
  5. package/cjs/http/adapters/node-http-adapter.js +14 -0
  6. package/cjs/http/helpers/json-body-loader.js +29 -0
  7. package/cjs/http/http-adapter-host.js +678 -0
  8. package/cjs/index.js +4 -3
  9. package/cjs/platform-adapter.host.js +74 -45
  10. package/cjs/{endpoint-context.js → request-context.js} +5 -5
  11. package/cjs/request.host.js +3 -0
  12. package/esm/augmentation/container.augmentation.js +1 -0
  13. package/esm/http/adapters/express-adapter.host.js +30 -0
  14. package/esm/http/{express-adapter.js → adapters/express-adapter.js} +1 -3
  15. package/esm/http/{http-adapter.host.js → adapters/node-http-adapter.host.js} +28 -20
  16. package/esm/http/adapters/node-http-adapter.js +11 -0
  17. package/esm/http/helpers/json-body-loader.js +24 -0
  18. package/esm/http/http-adapter-host.js +673 -0
  19. package/esm/index.js +4 -3
  20. package/esm/platform-adapter.host.js +75 -46
  21. package/esm/{endpoint-context.js → request-context.js} +4 -4
  22. package/esm/request.host.js +3 -0
  23. package/i18n/en/error.json +1 -2
  24. package/package.json +3 -3
  25. package/types/augmentation/collection.augmentation.d.ts +19 -16
  26. package/types/augmentation/container.augmentation.d.ts +13 -0
  27. package/types/augmentation/resource.augmentation.d.ts +2 -2
  28. package/types/augmentation/singleton.augmentation.d.ts +13 -9
  29. package/types/augmentation/storage.augmentation.d.ts +11 -14
  30. package/types/http/{express-adapter.d.ts → adapters/express-adapter.d.ts} +3 -3
  31. package/types/http/adapters/express-adapter.host.d.ts +12 -0
  32. package/types/http/{http-adapter.d.ts → adapters/node-http-adapter.d.ts} +5 -5
  33. package/types/http/adapters/node-http-adapter.host.d.ts +19 -0
  34. package/types/http/helpers/json-body-loader.d.ts +5 -0
  35. package/types/http/http-adapter-host.d.ts +34 -0
  36. package/types/index.d.ts +4 -3
  37. package/types/interfaces/request-handler.interface.d.ts +1 -1
  38. package/types/platform-adapter.d.ts +2 -2
  39. package/types/platform-adapter.host.d.ts +18 -14
  40. package/types/{endpoint-context.d.ts → request-context.d.ts} +3 -3
  41. package/types/request.d.ts +7 -2
  42. package/types/request.host.d.ts +5 -2
  43. package/cjs/http/express-adapter.host.js +0 -24
  44. package/cjs/http/http-adapter-base.js +0 -138
  45. package/cjs/http/http-adapter.js +0 -16
  46. package/cjs/http/request-handlers/entity-request-handler.js +0 -429
  47. package/cjs/http/request-handlers/parse-batch-request.js +0 -169
  48. package/cjs/http/request-handlers/request-handler-base.js +0 -37
  49. package/cjs/http/request-handlers/storage-request-handler.js +0 -139
  50. package/esm/http/express-adapter.host.js +0 -20
  51. package/esm/http/http-adapter-base.js +0 -134
  52. package/esm/http/http-adapter.js +0 -13
  53. package/esm/http/request-handlers/entity-request-handler.js +0 -424
  54. package/esm/http/request-handlers/parse-batch-request.js +0 -169
  55. package/esm/http/request-handlers/request-handler-base.js +0 -33
  56. package/esm/http/request-handlers/storage-request-handler.js +0 -134
  57. package/types/http/express-adapter.host.d.ts +0 -11
  58. package/types/http/http-adapter-base.d.ts +0 -23
  59. package/types/http/http-adapter.host.d.ts +0 -18
  60. package/types/http/request-handlers/entity-request-handler.d.ts +0 -24
  61. package/types/http/request-handlers/parse-batch-request.d.ts +0 -0
  62. package/types/http/request-handlers/request-handler-base.d.ts +0 -16
  63. package/types/http/request-handlers/storage-request-handler.d.ts +0 -23
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpressAdapterHost = void 0;
4
+ const common_1 = require("@opra/common");
5
+ const http_adapter_host_js_1 = require("../http-adapter-host.js");
6
+ const http_server_request_js_1 = require("../http-server-request.js");
7
+ const http_server_response_js_1 = require("../http-server-response.js");
8
+ class ExpressAdapterHost extends http_adapter_host_js_1.HttpAdapterHost {
9
+ constructor(app) {
10
+ super();
11
+ this._platform = 'express';
12
+ this._app = app;
13
+ }
14
+ get app() {
15
+ return this._app;
16
+ }
17
+ async init(api, options) {
18
+ await super.init(api, options);
19
+ this._api = api;
20
+ const basePath = new common_1.OpraURLPath(options?.basePath);
21
+ this._app.use(basePath.toString(), (_req, _res) => {
22
+ const req = http_server_request_js_1.HttpServerRequest.from(_req);
23
+ const res = http_server_response_js_1.HttpServerResponse.from(_res);
24
+ this.handleHttp(req, res)
25
+ .catch((e) => this._logger.fatal(e));
26
+ });
27
+ }
28
+ static async create(app, api, options) {
29
+ const adapter = new ExpressAdapterHost(app);
30
+ await adapter.init(api, options);
31
+ return adapter;
32
+ }
33
+ }
34
+ exports.ExpressAdapterHost = ExpressAdapterHost;
@@ -8,9 +8,7 @@ const express_adapter_host_js_1 = require("./express-adapter.host.js");
8
8
  var ExpressAdapter;
9
9
  (function (ExpressAdapter) {
10
10
  async function create(app, api, options) {
11
- const adapter = new express_adapter_host_js_1.ExpressAdapterHost(app, api, options);
12
- await adapter.init();
13
- return adapter;
11
+ return express_adapter_host_js_1.ExpressAdapterHost.create(app, api, options);
14
12
  }
15
13
  ExpressAdapter.create = create;
16
14
  })(ExpressAdapter || (exports.ExpressAdapter = ExpressAdapter = {}));
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpAdapterHost = void 0;
3
+ exports.NodeHttpAdapterHost = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const http_1 = tslib_1.__importDefault(require("http"));
6
6
  const common_1 = require("@opra/common");
7
- const http_adapter_base_js_1 = require("./http-adapter-base.js");
8
- const http_server_request_js_1 = require("./http-server-request.js");
9
- const http_server_response_js_1 = require("./http-server-response.js");
7
+ const http_adapter_host_js_1 = require("../http-adapter-host.js");
8
+ const http_server_request_js_1 = require("../http-server-request.js");
9
+ const http_server_response_js_1 = require("../http-server-response.js");
10
10
  /**
11
- * @class HttpAdapterHost
11
+ * @class NodeHttpAdapterHost
12
12
  */
13
- class HttpAdapterHost extends http_adapter_base_js_1.HttpAdapterBase {
14
- constructor(api, options) {
15
- super(api, options);
13
+ class NodeHttpAdapterHost extends http_adapter_host_js_1.HttpAdapterHost {
14
+ constructor() {
15
+ super(...arguments);
16
16
  this._platform = 'http';
17
- this._basePath = new common_1.OpraURLPath(options?.basePath);
18
- this._server = http_1.default.createServer((incomingMessage, serverResponse) => this._serverListener(incomingMessage, serverResponse));
19
17
  }
20
18
  get basePath() {
21
19
  return this._basePath;
@@ -23,6 +21,22 @@ class HttpAdapterHost extends http_adapter_base_js_1.HttpAdapterBase {
23
21
  get server() {
24
22
  return this._server;
25
23
  }
24
+ async close() {
25
+ await super.close();
26
+ if (this.server.listening)
27
+ await new Promise((resolve, reject) => {
28
+ this.server.close((err) => {
29
+ if (err)
30
+ return reject(err);
31
+ resolve();
32
+ });
33
+ });
34
+ }
35
+ async init(api, options) {
36
+ await super.init(api, options);
37
+ this._basePath = new common_1.OpraURLPath(options?.basePath);
38
+ this._server = http_1.default.createServer((incomingMessage, serverResponse) => this._serverListener(incomingMessage, serverResponse));
39
+ }
26
40
  _serverListener(incomingMessage, serverResponse) {
27
41
  const originalUrl = incomingMessage.url;
28
42
  const parsedUrl = new common_1.OpraURL(originalUrl);
@@ -44,19 +58,13 @@ class HttpAdapterHost extends http_adapter_base_js_1.HttpAdapterBase {
44
58
  });
45
59
  const req = http_server_request_js_1.HttpServerRequest.from(incomingMessage);
46
60
  const res = http_server_response_js_1.HttpServerResponse.from(serverResponse);
47
- this.handleIncoming(req, res)
61
+ this.handleHttp(req, res)
48
62
  .catch((e) => this._logger.fatal(e));
49
63
  }
50
- async close() {
51
- await super.close();
52
- if (this.server.listening)
53
- await new Promise((resolve, reject) => {
54
- this.server.close((err) => {
55
- if (err)
56
- return reject(err);
57
- resolve();
58
- });
59
- });
64
+ static async create(api, options) {
65
+ const adapter = new NodeHttpAdapterHost();
66
+ await adapter.init(api, options);
67
+ return adapter;
60
68
  }
61
69
  }
62
- exports.HttpAdapterHost = HttpAdapterHost;
70
+ exports.NodeHttpAdapterHost = NodeHttpAdapterHost;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeHttpAdapter = void 0;
4
+ const node_http_adapter_host_js_1 = require("./node-http-adapter.host.js");
5
+ /**
6
+ * @namespace NodeHttpAdapter
7
+ */
8
+ var NodeHttpAdapter;
9
+ (function (NodeHttpAdapter) {
10
+ async function create(api, options) {
11
+ return node_http_adapter_host_js_1.NodeHttpAdapterHost.create(api, options);
12
+ }
13
+ NodeHttpAdapter.create = create;
14
+ })(NodeHttpAdapter || (exports.NodeHttpAdapter = NodeHttpAdapter = {}));
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonBodyLoader = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const body_parser_1 = tslib_1.__importDefault(require("body-parser"));
6
+ const bodyLoaderCache = new WeakMap();
7
+ function jsonBodyLoader(options, cachePoint) {
8
+ let bodyLoader = cachePoint ? bodyLoaderCache.get(cachePoint) : undefined;
9
+ if (bodyLoader)
10
+ return bodyLoader;
11
+ const parser = body_parser_1.default.json({
12
+ ...options,
13
+ type: 'json'
14
+ });
15
+ bodyLoader = (incoming) => {
16
+ return new Promise((resolve, reject) => {
17
+ const next = (error) => {
18
+ if (error)
19
+ return reject(error);
20
+ resolve(incoming.body);
21
+ };
22
+ parser(incoming, {}, next);
23
+ });
24
+ };
25
+ if (cachePoint)
26
+ bodyLoaderCache.set(cachePoint, bodyLoader);
27
+ return bodyLoader;
28
+ }
29
+ exports.jsonBodyLoader = jsonBodyLoader;