@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.
- package/cjs/augmentation/container.augmentation.js +2 -0
- package/cjs/http/adapters/express-adapter.host.js +34 -0
- package/cjs/http/{express-adapter.js → adapters/express-adapter.js} +1 -3
- package/cjs/http/{http-adapter.host.js → adapters/node-http-adapter.host.js} +30 -22
- package/cjs/http/adapters/node-http-adapter.js +14 -0
- package/cjs/http/helpers/json-body-loader.js +29 -0
- package/cjs/http/http-adapter-host.js +678 -0
- package/cjs/index.js +4 -3
- package/cjs/platform-adapter.host.js +74 -45
- package/cjs/{endpoint-context.js → request-context.js} +5 -5
- package/cjs/request.host.js +3 -0
- package/esm/augmentation/container.augmentation.js +1 -0
- package/esm/http/adapters/express-adapter.host.js +30 -0
- package/esm/http/{express-adapter.js → adapters/express-adapter.js} +1 -3
- package/esm/http/{http-adapter.host.js → adapters/node-http-adapter.host.js} +28 -20
- package/esm/http/adapters/node-http-adapter.js +11 -0
- package/esm/http/helpers/json-body-loader.js +24 -0
- package/esm/http/http-adapter-host.js +673 -0
- package/esm/index.js +4 -3
- package/esm/platform-adapter.host.js +75 -46
- package/esm/{endpoint-context.js → request-context.js} +4 -4
- package/esm/request.host.js +3 -0
- package/i18n/en/error.json +1 -2
- package/package.json +3 -3
- package/types/augmentation/collection.augmentation.d.ts +19 -16
- package/types/augmentation/container.augmentation.d.ts +13 -0
- package/types/augmentation/resource.augmentation.d.ts +2 -2
- package/types/augmentation/singleton.augmentation.d.ts +13 -9
- package/types/augmentation/storage.augmentation.d.ts +11 -14
- package/types/http/{express-adapter.d.ts → adapters/express-adapter.d.ts} +3 -3
- package/types/http/adapters/express-adapter.host.d.ts +12 -0
- package/types/http/{http-adapter.d.ts → adapters/node-http-adapter.d.ts} +5 -5
- package/types/http/adapters/node-http-adapter.host.d.ts +19 -0
- package/types/http/helpers/json-body-loader.d.ts +5 -0
- package/types/http/http-adapter-host.d.ts +34 -0
- package/types/index.d.ts +4 -3
- package/types/interfaces/request-handler.interface.d.ts +1 -1
- package/types/platform-adapter.d.ts +2 -2
- package/types/platform-adapter.host.d.ts +18 -14
- package/types/{endpoint-context.d.ts → request-context.d.ts} +3 -3
- package/types/request.d.ts +7 -2
- package/types/request.host.d.ts +5 -2
- package/cjs/http/express-adapter.host.js +0 -24
- package/cjs/http/http-adapter-base.js +0 -138
- package/cjs/http/http-adapter.js +0 -16
- package/cjs/http/request-handlers/entity-request-handler.js +0 -429
- package/cjs/http/request-handlers/parse-batch-request.js +0 -169
- package/cjs/http/request-handlers/request-handler-base.js +0 -37
- package/cjs/http/request-handlers/storage-request-handler.js +0 -139
- package/esm/http/express-adapter.host.js +0 -20
- package/esm/http/http-adapter-base.js +0 -134
- package/esm/http/http-adapter.js +0 -13
- package/esm/http/request-handlers/entity-request-handler.js +0 -424
- package/esm/http/request-handlers/parse-batch-request.js +0 -169
- package/esm/http/request-handlers/request-handler-base.js +0 -33
- package/esm/http/request-handlers/storage-request-handler.js +0 -134
- package/types/http/express-adapter.host.d.ts +0 -11
- package/types/http/http-adapter-base.d.ts +0 -23
- package/types/http/http-adapter.host.d.ts +0 -18
- package/types/http/request-handlers/entity-request-handler.d.ts +0 -24
- package/types/http/request-handlers/parse-batch-request.d.ts +0 -0
- package/types/http/request-handlers/request-handler-base.d.ts +0 -16
- package/types/http/request-handlers/storage-request-handler.d.ts +0 -23
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
8
|
-
const http_server_request_js_1 = require("
|
|
9
|
-
const http_server_response_js_1 = require("
|
|
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
|
|
11
|
+
* @class NodeHttpAdapterHost
|
|
12
12
|
*/
|
|
13
|
-
class
|
|
14
|
-
constructor(
|
|
15
|
-
super(
|
|
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.
|
|
61
|
+
this.handleHttp(req, res)
|
|
48
62
|
.catch((e) => this._logger.fatal(e));
|
|
49
63
|
}
|
|
50
|
-
async
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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.
|
|
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;
|