@opra/core 0.25.2 → 0.25.4
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/adapter/http/http-adapter-base.js +14 -1
- package/cjs/adapter/http/http-adapter.host.js +5 -0
- package/cjs/adapter/http/http-server-request.js +6 -0
- package/cjs/adapter/interfaces/interceptor.interface.js +2 -0
- package/cjs/adapter/platform-adapter.host.js +1 -0
- package/cjs/index.js +2 -1
- package/esm/adapter/http/http-adapter-base.js +14 -1
- package/esm/adapter/http/http-adapter.host.js +5 -0
- package/esm/adapter/http/http-server-request.js +6 -0
- package/esm/adapter/interfaces/interceptor.interface.js +1 -0
- package/esm/adapter/platform-adapter.host.js +1 -0
- package/esm/index.js +2 -1
- package/package.json +4 -4
- package/types/adapter/endpoint-context.d.ts +1 -1
- package/types/adapter/http/http-server-request.d.ts +1 -0
- package/types/adapter/interfaces/interceptor.interface.d.ts +2 -0
- package/types/adapter/platform-adapter.d.ts +2 -0
- package/types/adapter/platform-adapter.host.d.ts +2 -0
- package/types/augmentation/collection.augmentation.d.ts +8 -8
- package/types/augmentation/resource.augmentation.d.ts +1 -1
- package/types/augmentation/singleton.augmentation.d.ts +5 -5
- package/types/augmentation/storage.augmentation.d.ts +4 -4
- package/types/index.d.ts +2 -1
|
@@ -38,7 +38,20 @@ class HttpAdapterBase extends platform_adapter_host_js_1.PlatformAdapterHost {
|
|
|
38
38
|
outgoing.appendHeader(common_1.HttpHeaderCodes.Access_Control_Expose_Headers, Object.values(common_1.HttpHeaderCodes)
|
|
39
39
|
.filter(k => k.toLowerCase().startsWith('x-opra-')));
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
let i = 0;
|
|
42
|
+
let requestProcessed = false;
|
|
43
|
+
const next = async () => {
|
|
44
|
+
while (i < this._interceptors.length) {
|
|
45
|
+
const interceptor = this._interceptors[i++];
|
|
46
|
+
if (interceptor)
|
|
47
|
+
await interceptor(context, next);
|
|
48
|
+
}
|
|
49
|
+
if (!requestProcessed) {
|
|
50
|
+
requestProcessed = true;
|
|
51
|
+
await this.processRequest(context);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
await next();
|
|
42
55
|
}
|
|
43
56
|
catch (error) {
|
|
44
57
|
context.errors.push((0, common_1.wrapException)(error));
|
|
@@ -37,6 +37,11 @@ class HttpAdapterHost extends http_adapter_base_js_1.HttpAdapterBase {
|
|
|
37
37
|
incomingMessage.originalUrl = originalUrl;
|
|
38
38
|
incomingMessage.baseUrl = this.basePath.toString();
|
|
39
39
|
incomingMessage.parsedUrl = parsedUrl;
|
|
40
|
+
Object.defineProperty(incomingMessage, 'searchParams', {
|
|
41
|
+
get() {
|
|
42
|
+
return incomingMessage.parsedUrl.searchParams;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
40
45
|
const req = http_server_request_js_1.HttpServerRequest.from(incomingMessage);
|
|
41
46
|
const res = http_server_response_js_1.HttpServerResponse.from(serverResponse);
|
|
42
47
|
this.handleIncoming(req, res)
|
|
@@ -24,6 +24,12 @@ var HttpServerRequest;
|
|
|
24
24
|
const req = instance;
|
|
25
25
|
req.baseUrl = req.baseUrl || '';
|
|
26
26
|
req.parsedUrl = req.parsedUrl || new common_1.OpraURL(req.url);
|
|
27
|
+
if (!req.searchParams)
|
|
28
|
+
Object.defineProperty(req, 'searchParams', {
|
|
29
|
+
get() {
|
|
30
|
+
return req.parsedUrl.searchParams;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
27
33
|
return req;
|
|
28
34
|
}
|
|
29
35
|
HttpServerRequest.from = from;
|
|
@@ -17,6 +17,7 @@ class PlatformAdapterHost extends strict_typed_events_1.AsyncEventEmitter {
|
|
|
17
17
|
this._controllers = new WeakMap();
|
|
18
18
|
this._initialized = false;
|
|
19
19
|
this._options = options || {};
|
|
20
|
+
this._interceptors = [...(options?.interceptors || [])];
|
|
20
21
|
this._logger = options?.logger && options.logger instanceof logger_js_1.Logger
|
|
21
22
|
? options.logger
|
|
22
23
|
: new logger_js_1.Logger({ instance: options?.logger });
|
package/cjs/index.js
CHANGED
|
@@ -18,7 +18,8 @@ tslib_1.__exportStar(require("./adapter/http/impl/http-incoming-message.host.js"
|
|
|
18
18
|
tslib_1.__exportStar(require("./adapter/http/impl/http-outgoing-message.host.js"), exports);
|
|
19
19
|
tslib_1.__exportStar(require("./adapter/http/http-server-request.js"), exports);
|
|
20
20
|
tslib_1.__exportStar(require("./adapter/http/http-server-response.js"), exports);
|
|
21
|
+
tslib_1.__exportStar(require("./adapter/http/helpers/multipart-helper.js"), exports);
|
|
22
|
+
tslib_1.__exportStar(require("./adapter/interfaces/interceptor.interface.js"), exports);
|
|
21
23
|
tslib_1.__exportStar(require("./adapter/interfaces/logger.interface.js"), exports);
|
|
22
24
|
tslib_1.__exportStar(require("./adapter/interfaces/request-handler.interface.js"), exports);
|
|
23
25
|
tslib_1.__exportStar(require("./adapter/services/logger.js"), exports);
|
|
24
|
-
tslib_1.__exportStar(require("./adapter/http/helpers/multipart-helper.js"), exports);
|
|
@@ -35,7 +35,20 @@ export class HttpAdapterBase extends PlatformAdapterHost {
|
|
|
35
35
|
outgoing.appendHeader(HttpHeaderCodes.Access_Control_Expose_Headers, Object.values(HttpHeaderCodes)
|
|
36
36
|
.filter(k => k.toLowerCase().startsWith('x-opra-')));
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
let i = 0;
|
|
39
|
+
let requestProcessed = false;
|
|
40
|
+
const next = async () => {
|
|
41
|
+
while (i < this._interceptors.length) {
|
|
42
|
+
const interceptor = this._interceptors[i++];
|
|
43
|
+
if (interceptor)
|
|
44
|
+
await interceptor(context, next);
|
|
45
|
+
}
|
|
46
|
+
if (!requestProcessed) {
|
|
47
|
+
requestProcessed = true;
|
|
48
|
+
await this.processRequest(context);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
await next();
|
|
39
52
|
}
|
|
40
53
|
catch (error) {
|
|
41
54
|
context.errors.push(wrapException(error));
|
|
@@ -33,6 +33,11 @@ export class HttpAdapterHost extends HttpAdapterBase {
|
|
|
33
33
|
incomingMessage.originalUrl = originalUrl;
|
|
34
34
|
incomingMessage.baseUrl = this.basePath.toString();
|
|
35
35
|
incomingMessage.parsedUrl = parsedUrl;
|
|
36
|
+
Object.defineProperty(incomingMessage, 'searchParams', {
|
|
37
|
+
get() {
|
|
38
|
+
return incomingMessage.parsedUrl.searchParams;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
36
41
|
const req = HttpServerRequest.from(incomingMessage);
|
|
37
42
|
const res = HttpServerResponse.from(serverResponse);
|
|
38
43
|
this.handleIncoming(req, res)
|
|
@@ -20,6 +20,12 @@ export var HttpServerRequest;
|
|
|
20
20
|
const req = instance;
|
|
21
21
|
req.baseUrl = req.baseUrl || '';
|
|
22
22
|
req.parsedUrl = req.parsedUrl || new OpraURL(req.url);
|
|
23
|
+
if (!req.searchParams)
|
|
24
|
+
Object.defineProperty(req, 'searchParams', {
|
|
25
|
+
get() {
|
|
26
|
+
return req.parsedUrl.searchParams;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
23
29
|
return req;
|
|
24
30
|
}
|
|
25
31
|
HttpServerRequest.from = from;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -13,6 +13,7 @@ export class PlatformAdapterHost extends AsyncEventEmitter {
|
|
|
13
13
|
this._controllers = new WeakMap();
|
|
14
14
|
this._initialized = false;
|
|
15
15
|
this._options = options || {};
|
|
16
|
+
this._interceptors = [...(options?.interceptors || [])];
|
|
16
17
|
this._logger = options?.logger && options.logger instanceof Logger
|
|
17
18
|
? options.logger
|
|
18
19
|
: new Logger({ instance: options?.logger });
|
package/esm/index.js
CHANGED
|
@@ -15,7 +15,8 @@ export * from './adapter/http/impl/http-incoming-message.host.js';
|
|
|
15
15
|
export * from './adapter/http/impl/http-outgoing-message.host.js';
|
|
16
16
|
export * from './adapter/http/http-server-request.js';
|
|
17
17
|
export * from './adapter/http/http-server-response.js';
|
|
18
|
+
export * from './adapter/http/helpers/multipart-helper.js';
|
|
19
|
+
export * from './adapter/interfaces/interceptor.interface.js';
|
|
18
20
|
export * from './adapter/interfaces/logger.interface.js';
|
|
19
21
|
export * from './adapter/interfaces/request-handler.interface.js';
|
|
20
22
|
export * from './adapter/services/logger.js';
|
|
21
|
-
export * from './adapter/http/helpers/multipart-helper.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opra/core",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.4",
|
|
4
4
|
"description": "Opra schema package",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"clean:cover": "rimraf ../../coverage/core"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@opra/common": "^0.25.
|
|
30
|
+
"@opra/common": "^0.25.4",
|
|
31
31
|
"accepts": "^1.3.8",
|
|
32
32
|
"content-disposition": "^0.5.4",
|
|
33
33
|
"content-type": "^1.0.5",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@types/cookie-signature": "^1.1.0",
|
|
58
58
|
"@types/encodeurl": "^1.0.0",
|
|
59
59
|
"@types/express": "^4.17.17",
|
|
60
|
-
"@types/formidable": "^3.4.
|
|
60
|
+
"@types/formidable": "^3.4.2",
|
|
61
61
|
"@types/fresh": "^0.5.0",
|
|
62
62
|
"@types/mime-types": "^2.1.1",
|
|
63
63
|
"@types/range-parser": "^1.2.4",
|
|
@@ -94,4 +94,4 @@
|
|
|
94
94
|
"swagger",
|
|
95
95
|
"raml"
|
|
96
96
|
]
|
|
97
|
-
}
|
|
97
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExecutionContext } from './execution-context';
|
|
2
2
|
import type { Request } from './request';
|
|
3
3
|
import type { Response } from './response';
|
|
4
|
-
export interface EndpointContext<
|
|
4
|
+
export interface EndpointContext<TSession extends {} = {}> extends ExecutionContext<TSession> {
|
|
5
5
|
request: Request;
|
|
6
6
|
response: Response;
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ApiDocument, FallbackLng, I18n, LanguageResource } from '@opra/common';
|
|
2
2
|
import { EndpointContext } from './endpoint-context.js';
|
|
3
|
+
import { Interceptor } from './interfaces/interceptor.interface.js';
|
|
3
4
|
import { ILogger } from './interfaces/logger.interface.js';
|
|
4
5
|
import { RequestHandler } from './interfaces/request-handler.interface.js';
|
|
5
6
|
export type Protocol = 'http' | 'ws' | 'rpc';
|
|
@@ -20,6 +21,7 @@ export declare namespace PlatformAdapter {
|
|
|
20
21
|
interface Options {
|
|
21
22
|
i18n?: I18n | I18nOptions | (() => Promise<I18n>);
|
|
22
23
|
logger?: ILogger;
|
|
24
|
+
interceptors?: Interceptor[];
|
|
23
25
|
on?: {
|
|
24
26
|
request?: (ctx: EndpointContext) => void | Promise<void>;
|
|
25
27
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AsyncEventEmitter } from 'strict-typed-events';
|
|
2
2
|
import { ApiDocument, I18n, Resource } from '@opra/common';
|
|
3
3
|
import { ExecutionContext } from './execution-context.js';
|
|
4
|
+
import { Interceptor } from './interfaces/interceptor.interface.js';
|
|
4
5
|
import type { PlatformAdapter, Protocol } from './platform-adapter';
|
|
5
6
|
import { Logger } from './services/logger.js';
|
|
6
7
|
/**
|
|
@@ -16,6 +17,7 @@ export declare abstract class PlatformAdapterHost extends AsyncEventEmitter impl
|
|
|
16
17
|
_options: PlatformAdapter.Options;
|
|
17
18
|
_i18n: I18n;
|
|
18
19
|
_logger: Logger;
|
|
20
|
+
_interceptors: Interceptor[];
|
|
19
21
|
protected constructor(api: ApiDocument, options?: PlatformAdapter.Options);
|
|
20
22
|
get platform(): string;
|
|
21
23
|
get protocol(): Protocol;
|
|
@@ -4,7 +4,7 @@ import type { Request as _Request } from '../adapter/request.js';
|
|
|
4
4
|
declare module "@opra/common" {
|
|
5
5
|
namespace Collection {
|
|
6
6
|
namespace Action {
|
|
7
|
-
interface Context extends Resource.Context {
|
|
7
|
+
interface Context<TSession extends {} = {}> extends Resource.Context<TSession> {
|
|
8
8
|
key?: any;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -18,7 +18,7 @@ declare module "@opra/common" {
|
|
|
18
18
|
include?: string[];
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
interface Context extends EndpointContext {
|
|
21
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
22
22
|
request: Request;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -27,7 +27,7 @@ declare module "@opra/common" {
|
|
|
27
27
|
endpoint: 'delete';
|
|
28
28
|
key: any;
|
|
29
29
|
}
|
|
30
|
-
interface Context extends EndpointContext {
|
|
30
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
31
31
|
request: Request;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -38,7 +38,7 @@ declare module "@opra/common" {
|
|
|
38
38
|
filter?: any;
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
interface Context extends EndpointContext {
|
|
41
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
42
42
|
request: Request;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -57,7 +57,7 @@ declare module "@opra/common" {
|
|
|
57
57
|
count?: boolean;
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
-
interface Context extends EndpointContext {
|
|
60
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
61
61
|
request: Request;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -71,7 +71,7 @@ declare module "@opra/common" {
|
|
|
71
71
|
include?: string[];
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
-
interface Context extends EndpointContext {
|
|
74
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
75
75
|
request: Request;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -86,7 +86,7 @@ declare module "@opra/common" {
|
|
|
86
86
|
include?: string[];
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
|
-
interface Context extends EndpointContext {
|
|
89
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
90
90
|
request: Request;
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -98,7 +98,7 @@ declare module "@opra/common" {
|
|
|
98
98
|
filter?: any;
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
-
interface Context extends EndpointContext {
|
|
101
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
102
102
|
request: Request;
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -4,7 +4,7 @@ import type { Request as _Request } from '../adapter/request.js';
|
|
|
4
4
|
declare module "@opra/common" {
|
|
5
5
|
namespace Singleton {
|
|
6
6
|
namespace Action {
|
|
7
|
-
interface Context extends Resource.Context {
|
|
7
|
+
interface Context<TSession extends {} = {}> extends Resource.Context<TSession> {
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
namespace Create {
|
|
@@ -17,7 +17,7 @@ declare module "@opra/common" {
|
|
|
17
17
|
include?: string[];
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
interface Context extends EndpointContext {
|
|
20
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
21
21
|
request: Request;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -25,7 +25,7 @@ declare module "@opra/common" {
|
|
|
25
25
|
interface Request extends _Request {
|
|
26
26
|
endpoint: 'delete';
|
|
27
27
|
}
|
|
28
|
-
interface Context extends EndpointContext {
|
|
28
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
29
29
|
request: Request;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -38,7 +38,7 @@ declare module "@opra/common" {
|
|
|
38
38
|
include?: string[];
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
interface Context extends EndpointContext {
|
|
41
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
42
42
|
request: Request;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -52,7 +52,7 @@ declare module "@opra/common" {
|
|
|
52
52
|
include?: string[];
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
interface Context extends EndpointContext {
|
|
55
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
56
56
|
request: Request;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -7,20 +7,20 @@ import type { Request as _Request } from '../adapter/request.js';
|
|
|
7
7
|
declare module "@opra/common" {
|
|
8
8
|
namespace Storage {
|
|
9
9
|
namespace Action {
|
|
10
|
-
interface Context extends Resource.Context {
|
|
10
|
+
interface Context<TSession extends {} = {}> extends Resource.Context<TSession> {
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
namespace Delete {
|
|
14
14
|
interface Request extends _Request {
|
|
15
15
|
}
|
|
16
|
-
interface Context extends EndpointContext {
|
|
16
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
17
17
|
request: Request;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
namespace Get {
|
|
21
21
|
interface Request extends _Request {
|
|
22
22
|
}
|
|
23
|
-
interface Context extends EndpointContext {
|
|
23
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
24
24
|
request: Request;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -28,7 +28,7 @@ declare module "@opra/common" {
|
|
|
28
28
|
interface Request extends _Request {
|
|
29
29
|
parts: MultipartIterator;
|
|
30
30
|
}
|
|
31
|
-
interface Context extends EndpointContext {
|
|
31
|
+
interface Context<TSession extends {} = {}> extends EndpointContext<TSession> {
|
|
32
32
|
request: Request;
|
|
33
33
|
}
|
|
34
34
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -15,7 +15,8 @@ export * from './adapter/http/impl/http-incoming-message.host.js';
|
|
|
15
15
|
export * from './adapter/http/impl/http-outgoing-message.host.js';
|
|
16
16
|
export * from './adapter/http/http-server-request.js';
|
|
17
17
|
export * from './adapter/http/http-server-response.js';
|
|
18
|
+
export * from './adapter/http/helpers/multipart-helper.js';
|
|
19
|
+
export * from './adapter/interfaces/interceptor.interface.js';
|
|
18
20
|
export * from './adapter/interfaces/logger.interface.js';
|
|
19
21
|
export * from './adapter/interfaces/request-handler.interface.js';
|
|
20
22
|
export * from './adapter/services/logger.js';
|
|
21
|
-
export * from './adapter/http/helpers/multipart-helper.js';
|