@opra/nestjs 1.0.0-beta.4 → 1.0.0-beta.5
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/constants.js +3 -3
- package/cjs/http/opra-http-core.module.js +71 -37
- package/cjs/http/opra-http-nestjs-adapter.js +9 -16
- package/cjs/http/opra-http.module.js +10 -0
- package/cjs/http/services/opra-middleware.js +2 -5
- package/cjs/index.js +2 -2
- package/cjs/kafka/opra-kafka-core.module.js +107 -0
- package/cjs/{rpc/kafka → kafka}/opra-kafka.module.js +13 -3
- package/esm/constants.js +2 -2
- package/esm/http/opra-http-core.module.js +73 -39
- package/esm/http/opra-http-nestjs-adapter.js +9 -16
- package/esm/http/opra-http.module.js +10 -0
- package/esm/http/services/opra-middleware.js +4 -7
- package/esm/index.js +2 -2
- package/esm/kafka/opra-kafka-core.module.js +104 -0
- package/esm/{rpc/kafka → kafka}/opra-kafka.module.js +13 -3
- package/package.json +5 -5
- package/types/constants.d.ts +2 -2
- package/types/http/opra-http-core.module.d.ts +3 -1
- package/types/http/opra-http-nestjs-adapter.d.ts +5 -4
- package/types/http/opra-http.module.d.ts +21 -8
- package/types/http/services/opra-middleware.d.ts +1 -3
- package/types/index.d.cts +2 -2
- package/types/index.d.ts +2 -2
- package/types/{rpc/kafka → kafka}/opra-kafka-core.module.d.ts +5 -3
- package/types/{rpc/kafka → kafka}/opra-kafka-nestjs-adapter.d.ts +1 -1
- package/types/kafka/opra-kafka.module.d.ts +33 -0
- package/cjs/rpc/kafka/opra-kafka-core.module.js +0 -60
- package/esm/rpc/kafka/opra-kafka-core.module.js +0 -57
- package/types/rpc/kafka/opra-kafka.module.d.ts +0 -21
- /package/cjs/{rpc/kafka → kafka}/opra-kafka-nestjs-adapter.js +0 -0
- /package/esm/{rpc/kafka → kafka}/opra-kafka-nestjs-adapter.js +0 -0
package/cjs/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.OPRA_KAFKA_MODULE_CONFIG = exports.OPRA_HTTP_API_CONFIG = exports.IS_PUBLIC_KEY = void 0;
|
|
4
4
|
exports.IS_PUBLIC_KEY = 'opra:isPublic';
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
5
|
+
exports.OPRA_HTTP_API_CONFIG = 'OPRA_HTTP_API_CONFIG';
|
|
6
|
+
exports.OPRA_KAFKA_MODULE_CONFIG = 'OPRA_KAFKA_MODULE_CONFIG';
|
|
@@ -11,6 +11,7 @@ const constants_js_1 = require("../constants.js");
|
|
|
11
11
|
const opra_http_nestjs_adapter_js_1 = require("./opra-http-nestjs-adapter.js");
|
|
12
12
|
const opra_exception_filter_js_1 = require("./services/opra-exception-filter.js");
|
|
13
13
|
const opra_middleware_js_1 = require("./services/opra-middleware.js");
|
|
14
|
+
const opraHttpNestjsAdapterToken = Symbol('OpraHttpNestjsAdapter');
|
|
14
15
|
let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
|
|
15
16
|
constructor(opraAdapter) {
|
|
16
17
|
this.opraAdapter = opraAdapter;
|
|
@@ -21,53 +22,86 @@ let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
|
|
|
21
22
|
method: common_1.RequestMethod.ALL,
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
|
-
static forRoot(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
25
|
+
static forRoot(moduleOptions) {
|
|
26
|
+
return this._getDynamicModule({
|
|
27
|
+
...moduleOptions,
|
|
28
|
+
providers: [
|
|
29
|
+
...(moduleOptions?.providers || []),
|
|
30
|
+
{
|
|
31
|
+
provide: constants_js_1.OPRA_HTTP_API_CONFIG,
|
|
32
|
+
useValue: { ...moduleOptions },
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
static forRootAsync(moduleOptions) {
|
|
38
|
+
if (!moduleOptions.useFactory)
|
|
39
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
40
|
+
return this._getDynamicModule({
|
|
41
|
+
...moduleOptions,
|
|
42
|
+
providers: [
|
|
43
|
+
...(moduleOptions?.providers || []),
|
|
44
|
+
{
|
|
45
|
+
provide: constants_js_1.OPRA_HTTP_API_CONFIG,
|
|
46
|
+
inject: moduleOptions.inject,
|
|
47
|
+
useFactory: moduleOptions.useFactory,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
static _getDynamicModule(moduleOptions) {
|
|
53
|
+
const token = moduleOptions?.token || opra_http_nestjs_adapter_js_1.OpraHttpNestjsAdapter;
|
|
54
|
+
const opraNestAdapter = new opra_http_nestjs_adapter_js_1.OpraHttpNestjsAdapter({
|
|
55
|
+
...moduleOptions,
|
|
56
|
+
interceptors: undefined,
|
|
57
|
+
});
|
|
58
|
+
const adapterProvider = {
|
|
59
|
+
provide: token,
|
|
60
|
+
inject: [core_1.ModuleRef, constants_js_1.OPRA_HTTP_API_CONFIG],
|
|
61
|
+
useFactory: async (moduleRef, apiConfig) => {
|
|
62
|
+
opraNestAdapter.logger = opraNestAdapter.logger || new common_1.Logger(apiConfig.name);
|
|
63
|
+
(0, ts_gems_1.asMutable)(opraNestAdapter).document = await common_2.ApiDocumentFactory.createDocument({
|
|
64
|
+
...apiConfig,
|
|
65
|
+
api: {
|
|
66
|
+
transport: 'http',
|
|
67
|
+
name: apiConfig.name,
|
|
68
|
+
description: apiConfig.description,
|
|
69
|
+
controllers: moduleOptions.controllers,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
if (moduleOptions.interceptors) {
|
|
73
|
+
opraNestAdapter.interceptors = moduleOptions.interceptors.map(x => {
|
|
42
74
|
if ((0, common_2.isConstructor)(x)) {
|
|
43
|
-
return (ctx, next) => {
|
|
75
|
+
return async (ctx, next) => {
|
|
44
76
|
const interceptor = moduleRef.get(x);
|
|
45
77
|
if (typeof interceptor.intercept === 'function')
|
|
46
|
-
return interceptor.intercept(ctx, next
|
|
78
|
+
return interceptor.intercept(ctx, next);
|
|
47
79
|
};
|
|
48
80
|
}
|
|
49
81
|
return x;
|
|
50
82
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
provide: core_1.APP_FILTER,
|
|
56
|
-
useClass: opra_exception_filter_js_1.OpraExceptionFilter,
|
|
83
|
+
}
|
|
84
|
+
return opraNestAdapter;
|
|
57
85
|
},
|
|
58
|
-
|
|
59
|
-
if (token !== opra_http_nestjs_adapter_js_1.OpraHttpNestjsAdapter) {
|
|
60
|
-
providers.push({
|
|
61
|
-
provide: token,
|
|
62
|
-
useValue: opraAdapter,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
86
|
+
};
|
|
65
87
|
return {
|
|
88
|
+
global: moduleOptions.global,
|
|
66
89
|
module: OpraHttpCoreModule_1,
|
|
67
|
-
controllers:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
90
|
+
controllers: opraNestAdapter.nestControllers,
|
|
91
|
+
providers: [
|
|
92
|
+
...(moduleOptions?.providers || []),
|
|
93
|
+
adapterProvider,
|
|
94
|
+
{
|
|
95
|
+
provide: opraHttpNestjsAdapterToken,
|
|
96
|
+
useExisting: token,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
provide: core_1.APP_FILTER,
|
|
100
|
+
useClass: opra_exception_filter_js_1.OpraExceptionFilter,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
imports: [...(moduleOptions?.imports || [])],
|
|
104
|
+
exports: [...(moduleOptions?.exports || []), adapterProvider],
|
|
71
105
|
};
|
|
72
106
|
}
|
|
73
107
|
async onModuleDestroy() {
|
|
@@ -10,28 +10,21 @@ const http_1 = require("@opra/http");
|
|
|
10
10
|
const ts_gems_1 = require("ts-gems");
|
|
11
11
|
const public_decorator_js_1 = require("../decorators/public.decorator.js");
|
|
12
12
|
class OpraHttpNestjsAdapter extends http_1.HttpAdapter {
|
|
13
|
-
constructor(
|
|
13
|
+
constructor(options) {
|
|
14
14
|
super((function () {
|
|
15
15
|
const document = new common_2.ApiDocument();
|
|
16
|
-
document.api = new common_2.HttpApi({ owner: document, name:
|
|
16
|
+
document.api = new common_2.HttpApi({ owner: document, name: '', transport: 'http' });
|
|
17
17
|
return document;
|
|
18
|
-
})(),
|
|
19
|
-
...init.options,
|
|
20
|
-
interceptors: init.options?.interceptors,
|
|
21
|
-
});
|
|
18
|
+
})(), options);
|
|
22
19
|
this.nestControllers = [];
|
|
23
|
-
this.options
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
basePath = '/' + basePath;
|
|
27
|
-
this._addRootController(basePath);
|
|
28
|
-
if (init.controllers)
|
|
29
|
-
init.controllers.forEach(c => this._addToNestControllers(c, basePath, []));
|
|
20
|
+
this._addRootController(options.schemaIsPublic);
|
|
21
|
+
if (options.controllers)
|
|
22
|
+
options.controllers.forEach(c => this._addToNestControllers(c, this.basePath, []));
|
|
30
23
|
}
|
|
31
24
|
async close() {
|
|
32
25
|
//
|
|
33
26
|
}
|
|
34
|
-
_addRootController(
|
|
27
|
+
_addRootController(isPublic) {
|
|
35
28
|
const _this = this;
|
|
36
29
|
let RootController = class RootController {
|
|
37
30
|
schema(_req, next) {
|
|
@@ -48,10 +41,10 @@ class OpraHttpNestjsAdapter extends http_1.HttpAdapter {
|
|
|
48
41
|
], RootController.prototype, "schema", null);
|
|
49
42
|
RootController = tslib_1.__decorate([
|
|
50
43
|
(0, common_1.Controller)({
|
|
51
|
-
path: basePath,
|
|
44
|
+
path: this.basePath,
|
|
52
45
|
})
|
|
53
46
|
], RootController);
|
|
54
|
-
if (
|
|
47
|
+
if (isPublic) {
|
|
55
48
|
(0, public_decorator_js_1.Public)()(RootController.prototype, 'schema', Object.getOwnPropertyDescriptor(RootController.prototype, 'schema'));
|
|
56
49
|
}
|
|
57
50
|
this.nestControllers.push(RootController);
|
|
@@ -16,6 +16,16 @@ let OpraHttpModule = OpraHttpModule_1 = class OpraHttpModule {
|
|
|
16
16
|
imports: [opra_http_core_module_js_1.OpraHttpCoreModule.forRoot(init)],
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param options
|
|
22
|
+
*/
|
|
23
|
+
static forRootAsync(options) {
|
|
24
|
+
return {
|
|
25
|
+
module: OpraHttpModule_1,
|
|
26
|
+
imports: [opra_http_core_module_js_1.OpraHttpCoreModule.forRootAsync(options)],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
19
29
|
};
|
|
20
30
|
exports.OpraHttpModule = OpraHttpModule;
|
|
21
31
|
exports.OpraHttpModule = OpraHttpModule = OpraHttpModule_1 = tslib_1.__decorate([
|
|
@@ -4,12 +4,10 @@ exports.OpraMiddleware = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const http_1 = require("@opra/http");
|
|
7
|
-
const constants_js_1 = require("../../constants.js");
|
|
8
7
|
const opra_http_nestjs_adapter_js_1 = require("../opra-http-nestjs-adapter.js");
|
|
9
8
|
let OpraMiddleware = class OpraMiddleware {
|
|
10
|
-
constructor(opraAdapter
|
|
9
|
+
constructor(opraAdapter) {
|
|
11
10
|
this.opraAdapter = opraAdapter;
|
|
12
|
-
this.options = options;
|
|
13
11
|
}
|
|
14
12
|
use(req, res, next) {
|
|
15
13
|
const request = http_1.HttpIncoming.from(req);
|
|
@@ -31,6 +29,5 @@ let OpraMiddleware = class OpraMiddleware {
|
|
|
31
29
|
exports.OpraMiddleware = OpraMiddleware;
|
|
32
30
|
exports.OpraMiddleware = OpraMiddleware = tslib_1.__decorate([
|
|
33
31
|
(0, common_1.Injectable)(),
|
|
34
|
-
tslib_1.
|
|
35
|
-
tslib_1.__metadata("design:paramtypes", [opra_http_nestjs_adapter_js_1.OpraHttpNestjsAdapter, Object])
|
|
32
|
+
tslib_1.__metadata("design:paramtypes", [opra_http_nestjs_adapter_js_1.OpraHttpNestjsAdapter])
|
|
36
33
|
], OpraMiddleware);
|
package/cjs/index.js
CHANGED
|
@@ -7,5 +7,5 @@ tslib_1.__exportStar(require("./constants.js"), exports);
|
|
|
7
7
|
tslib_1.__exportStar(require("./decorators/public.decorator.js"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./http/opra-http.module.js"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./http/opra-http-nestjs-adapter.js"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./
|
|
11
|
-
tslib_1.__exportStar(require("./
|
|
10
|
+
tslib_1.__exportStar(require("./kafka/opra-kafka.module.js"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./kafka/opra-kafka-nestjs-adapter.js"), exports);
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var OpraKafkaCoreModule_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.OpraKafkaCoreModule = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const core_1 = require("@nestjs/core");
|
|
8
|
+
const common_2 = require("@opra/common");
|
|
9
|
+
const constants_js_1 = require("../constants.js");
|
|
10
|
+
const opra_kafka_nestjs_adapter_js_1 = require("./opra-kafka-nestjs-adapter.js");
|
|
11
|
+
const opraKafkaNestjsAdapterToken = Symbol('OpraKafkaNestjsAdapter');
|
|
12
|
+
let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
|
|
13
|
+
constructor(adapter, init) {
|
|
14
|
+
this.adapter = adapter;
|
|
15
|
+
this.init = init;
|
|
16
|
+
}
|
|
17
|
+
static forRoot(moduleOptions) {
|
|
18
|
+
return this._getDynamicModule({
|
|
19
|
+
...moduleOptions,
|
|
20
|
+
providers: [
|
|
21
|
+
...(moduleOptions?.providers || []),
|
|
22
|
+
{
|
|
23
|
+
provide: constants_js_1.OPRA_KAFKA_MODULE_CONFIG,
|
|
24
|
+
useValue: {
|
|
25
|
+
...moduleOptions,
|
|
26
|
+
logger: moduleOptions.logger || new common_1.Logger(moduleOptions.name),
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
static forRootAsync(moduleOptions) {
|
|
33
|
+
if (!moduleOptions.useFactory)
|
|
34
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
35
|
+
return this._getDynamicModule({
|
|
36
|
+
...moduleOptions,
|
|
37
|
+
providers: [
|
|
38
|
+
...(moduleOptions?.providers || []),
|
|
39
|
+
{
|
|
40
|
+
provide: constants_js_1.OPRA_KAFKA_MODULE_CONFIG,
|
|
41
|
+
inject: moduleOptions.inject,
|
|
42
|
+
useFactory: async (...args) => {
|
|
43
|
+
const result = await moduleOptions.useFactory(...args);
|
|
44
|
+
result.logger = result.logger || new common_1.Logger(result.name);
|
|
45
|
+
return result;
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
static _getDynamicModule(moduleOptions) {
|
|
52
|
+
const token = moduleOptions.id || opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter;
|
|
53
|
+
const adapterProvider = {
|
|
54
|
+
provide: token,
|
|
55
|
+
inject: [core_1.ModuleRef, constants_js_1.OPRA_KAFKA_MODULE_CONFIG],
|
|
56
|
+
useFactory: async (moduleRef, config) => {
|
|
57
|
+
const adapter = new opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter(moduleRef);
|
|
58
|
+
await adapter.initialize(config);
|
|
59
|
+
if (moduleOptions.interceptors) {
|
|
60
|
+
adapter.adapter.interceptors = moduleOptions.interceptors.map(x => {
|
|
61
|
+
if ((0, common_2.isConstructor)(x)) {
|
|
62
|
+
return async (ctx, next) => {
|
|
63
|
+
const interceptor = moduleRef.get(x);
|
|
64
|
+
if (typeof interceptor.intercept === 'function')
|
|
65
|
+
return interceptor.intercept(ctx, next);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return x;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return adapter;
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
global: moduleOptions.global,
|
|
76
|
+
module: OpraKafkaCoreModule_1,
|
|
77
|
+
controllers: moduleOptions.controllers,
|
|
78
|
+
providers: [
|
|
79
|
+
...(moduleOptions?.providers || []),
|
|
80
|
+
adapterProvider,
|
|
81
|
+
{
|
|
82
|
+
provide: opraKafkaNestjsAdapterToken,
|
|
83
|
+
useExisting: token,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
imports: [...(moduleOptions?.imports || [])],
|
|
87
|
+
exports: [...(moduleOptions?.exports || []), adapterProvider],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async onModuleInit() {
|
|
91
|
+
await this.adapter.initialize(this.init);
|
|
92
|
+
}
|
|
93
|
+
async onApplicationBootstrap() {
|
|
94
|
+
await this.adapter.start();
|
|
95
|
+
}
|
|
96
|
+
async onApplicationShutdown() {
|
|
97
|
+
await this.adapter.stop();
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.OpraKafkaCoreModule = OpraKafkaCoreModule;
|
|
101
|
+
exports.OpraKafkaCoreModule = OpraKafkaCoreModule = OpraKafkaCoreModule_1 = tslib_1.__decorate([
|
|
102
|
+
(0, common_1.Module)({}),
|
|
103
|
+
(0, common_1.Global)(),
|
|
104
|
+
tslib_1.__param(0, (0, common_1.Inject)(opraKafkaNestjsAdapterToken)),
|
|
105
|
+
tslib_1.__param(1, (0, common_1.Inject)(constants_js_1.OPRA_KAFKA_MODULE_CONFIG)),
|
|
106
|
+
tslib_1.__metadata("design:paramtypes", [opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter, Object])
|
|
107
|
+
], OpraKafkaCoreModule);
|
|
@@ -8,12 +8,22 @@ const opra_kafka_core_module_js_1 = require("./opra-kafka-core.module.js");
|
|
|
8
8
|
let OpraKafkaModule = OpraKafkaModule_1 = class OpraKafkaModule {
|
|
9
9
|
/**
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
11
|
+
* @param options
|
|
12
12
|
*/
|
|
13
|
-
static forRoot(
|
|
13
|
+
static forRoot(options) {
|
|
14
14
|
return {
|
|
15
15
|
module: OpraKafkaModule_1,
|
|
16
|
-
imports: [opra_kafka_core_module_js_1.OpraKafkaCoreModule.forRoot(
|
|
16
|
+
imports: [opra_kafka_core_module_js_1.OpraKafkaCoreModule.forRoot(options)],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param options
|
|
22
|
+
*/
|
|
23
|
+
static forRootAsync(options) {
|
|
24
|
+
return {
|
|
25
|
+
module: OpraKafkaModule_1,
|
|
26
|
+
imports: [opra_kafka_core_module_js_1.OpraKafkaCoreModule.forRootAsync(options)],
|
|
17
27
|
};
|
|
18
28
|
}
|
|
19
29
|
};
|
package/esm/constants.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export const IS_PUBLIC_KEY = 'opra:isPublic';
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
2
|
+
export const OPRA_HTTP_API_CONFIG = 'OPRA_HTTP_API_CONFIG';
|
|
3
|
+
export const OPRA_KAFKA_MODULE_CONFIG = 'OPRA_KAFKA_MODULE_CONFIG';
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
var OpraHttpCoreModule_1;
|
|
2
2
|
import { __decorate, __metadata } from "tslib";
|
|
3
|
-
import { Global, Module, RequestMethod, } from '@nestjs/common';
|
|
3
|
+
import { Global, Logger, Module, RequestMethod, } from '@nestjs/common';
|
|
4
4
|
import { APP_FILTER, ModuleRef } from '@nestjs/core';
|
|
5
5
|
import { ApiDocumentFactory, isConstructor } from '@opra/common';
|
|
6
6
|
import { asMutable } from 'ts-gems';
|
|
7
|
-
import {
|
|
7
|
+
import { OPRA_HTTP_API_CONFIG } from '../constants.js';
|
|
8
8
|
import { OpraHttpNestjsAdapter } from './opra-http-nestjs-adapter.js';
|
|
9
9
|
import { OpraExceptionFilter } from './services/opra-exception-filter.js';
|
|
10
10
|
import { OpraMiddleware } from './services/opra-middleware.js';
|
|
11
|
+
const opraHttpNestjsAdapterToken = Symbol('OpraHttpNestjsAdapter');
|
|
11
12
|
let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
|
|
12
13
|
constructor(opraAdapter) {
|
|
13
14
|
this.opraAdapter = opraAdapter;
|
|
@@ -18,53 +19,86 @@ let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
|
|
|
18
19
|
method: RequestMethod.ALL,
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
|
-
static forRoot(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
static forRoot(moduleOptions) {
|
|
23
|
+
return this._getDynamicModule({
|
|
24
|
+
...moduleOptions,
|
|
25
|
+
providers: [
|
|
26
|
+
...(moduleOptions?.providers || []),
|
|
27
|
+
{
|
|
28
|
+
provide: OPRA_HTTP_API_CONFIG,
|
|
29
|
+
useValue: { ...moduleOptions },
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static forRootAsync(moduleOptions) {
|
|
35
|
+
if (!moduleOptions.useFactory)
|
|
36
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
37
|
+
return this._getDynamicModule({
|
|
38
|
+
...moduleOptions,
|
|
39
|
+
providers: [
|
|
40
|
+
...(moduleOptions?.providers || []),
|
|
41
|
+
{
|
|
42
|
+
provide: OPRA_HTTP_API_CONFIG,
|
|
43
|
+
inject: moduleOptions.inject,
|
|
44
|
+
useFactory: moduleOptions.useFactory,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static _getDynamicModule(moduleOptions) {
|
|
50
|
+
const token = moduleOptions?.token || OpraHttpNestjsAdapter;
|
|
51
|
+
const opraNestAdapter = new OpraHttpNestjsAdapter({
|
|
52
|
+
...moduleOptions,
|
|
53
|
+
interceptors: undefined,
|
|
54
|
+
});
|
|
55
|
+
const adapterProvider = {
|
|
56
|
+
provide: token,
|
|
57
|
+
inject: [ModuleRef, OPRA_HTTP_API_CONFIG],
|
|
58
|
+
useFactory: async (moduleRef, apiConfig) => {
|
|
59
|
+
opraNestAdapter.logger = opraNestAdapter.logger || new Logger(apiConfig.name);
|
|
60
|
+
asMutable(opraNestAdapter).document = await ApiDocumentFactory.createDocument({
|
|
61
|
+
...apiConfig,
|
|
62
|
+
api: {
|
|
63
|
+
transport: 'http',
|
|
64
|
+
name: apiConfig.name,
|
|
65
|
+
description: apiConfig.description,
|
|
66
|
+
controllers: moduleOptions.controllers,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
if (moduleOptions.interceptors) {
|
|
70
|
+
opraNestAdapter.interceptors = moduleOptions.interceptors.map(x => {
|
|
39
71
|
if (isConstructor(x)) {
|
|
40
|
-
return (ctx, next) => {
|
|
72
|
+
return async (ctx, next) => {
|
|
41
73
|
const interceptor = moduleRef.get(x);
|
|
42
74
|
if (typeof interceptor.intercept === 'function')
|
|
43
|
-
return interceptor.intercept(ctx, next
|
|
75
|
+
return interceptor.intercept(ctx, next);
|
|
44
76
|
};
|
|
45
77
|
}
|
|
46
78
|
return x;
|
|
47
79
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
provide: APP_FILTER,
|
|
53
|
-
useClass: OpraExceptionFilter,
|
|
80
|
+
}
|
|
81
|
+
return opraNestAdapter;
|
|
54
82
|
},
|
|
55
|
-
|
|
56
|
-
if (token !== OpraHttpNestjsAdapter) {
|
|
57
|
-
providers.push({
|
|
58
|
-
provide: token,
|
|
59
|
-
useValue: opraAdapter,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
83
|
+
};
|
|
62
84
|
return {
|
|
85
|
+
global: moduleOptions.global,
|
|
63
86
|
module: OpraHttpCoreModule_1,
|
|
64
|
-
controllers:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
87
|
+
controllers: opraNestAdapter.nestControllers,
|
|
88
|
+
providers: [
|
|
89
|
+
...(moduleOptions?.providers || []),
|
|
90
|
+
adapterProvider,
|
|
91
|
+
{
|
|
92
|
+
provide: opraHttpNestjsAdapterToken,
|
|
93
|
+
useExisting: token,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
provide: APP_FILTER,
|
|
97
|
+
useClass: OpraExceptionFilter,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
imports: [...(moduleOptions?.imports || [])],
|
|
101
|
+
exports: [...(moduleOptions?.exports || []), adapterProvider],
|
|
68
102
|
};
|
|
69
103
|
}
|
|
70
104
|
async onModuleDestroy() {
|
|
@@ -7,28 +7,21 @@ import { HttpAdapter } from '@opra/http';
|
|
|
7
7
|
import { asMutable } from 'ts-gems';
|
|
8
8
|
import { Public } from '../decorators/public.decorator.js';
|
|
9
9
|
export class OpraHttpNestjsAdapter extends HttpAdapter {
|
|
10
|
-
constructor(
|
|
10
|
+
constructor(options) {
|
|
11
11
|
super((function () {
|
|
12
12
|
const document = new ApiDocument();
|
|
13
|
-
document.api = new HttpApi({ owner: document, name:
|
|
13
|
+
document.api = new HttpApi({ owner: document, name: '', transport: 'http' });
|
|
14
14
|
return document;
|
|
15
|
-
})(),
|
|
16
|
-
...init.options,
|
|
17
|
-
interceptors: init.options?.interceptors,
|
|
18
|
-
});
|
|
15
|
+
})(), options);
|
|
19
16
|
this.nestControllers = [];
|
|
20
|
-
this.options
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
basePath = '/' + basePath;
|
|
24
|
-
this._addRootController(basePath);
|
|
25
|
-
if (init.controllers)
|
|
26
|
-
init.controllers.forEach(c => this._addToNestControllers(c, basePath, []));
|
|
17
|
+
this._addRootController(options.schemaIsPublic);
|
|
18
|
+
if (options.controllers)
|
|
19
|
+
options.controllers.forEach(c => this._addToNestControllers(c, this.basePath, []));
|
|
27
20
|
}
|
|
28
21
|
async close() {
|
|
29
22
|
//
|
|
30
23
|
}
|
|
31
|
-
_addRootController(
|
|
24
|
+
_addRootController(isPublic) {
|
|
32
25
|
const _this = this;
|
|
33
26
|
let RootController = class RootController {
|
|
34
27
|
schema(_req, next) {
|
|
@@ -45,10 +38,10 @@ export class OpraHttpNestjsAdapter extends HttpAdapter {
|
|
|
45
38
|
], RootController.prototype, "schema", null);
|
|
46
39
|
RootController = __decorate([
|
|
47
40
|
Controller({
|
|
48
|
-
path: basePath,
|
|
41
|
+
path: this.basePath,
|
|
49
42
|
})
|
|
50
43
|
], RootController);
|
|
51
|
-
if (
|
|
44
|
+
if (isPublic) {
|
|
52
45
|
Public()(RootController.prototype, 'schema', Object.getOwnPropertyDescriptor(RootController.prototype, 'schema'));
|
|
53
46
|
}
|
|
54
47
|
this.nestControllers.push(RootController);
|
|
@@ -13,6 +13,16 @@ let OpraHttpModule = OpraHttpModule_1 = class OpraHttpModule {
|
|
|
13
13
|
imports: [OpraHttpCoreModule.forRoot(init)],
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @param options
|
|
19
|
+
*/
|
|
20
|
+
static forRootAsync(options) {
|
|
21
|
+
return {
|
|
22
|
+
module: OpraHttpModule_1,
|
|
23
|
+
imports: [OpraHttpCoreModule.forRootAsync(options)],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
16
26
|
};
|
|
17
27
|
OpraHttpModule = OpraHttpModule_1 = __decorate([
|
|
18
28
|
Module({})
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { __decorate, __metadata
|
|
2
|
-
import {
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Injectable } from '@nestjs/common';
|
|
3
3
|
import { HttpContext, HttpIncoming, HttpOutgoing } from '@opra/http';
|
|
4
|
-
import { OPRA_HTTP_MODULE_OPTIONS } from '../../constants.js';
|
|
5
4
|
import { OpraHttpNestjsAdapter } from '../opra-http-nestjs-adapter.js';
|
|
6
5
|
let OpraMiddleware = class OpraMiddleware {
|
|
7
|
-
constructor(opraAdapter
|
|
6
|
+
constructor(opraAdapter) {
|
|
8
7
|
this.opraAdapter = opraAdapter;
|
|
9
|
-
this.options = options;
|
|
10
8
|
}
|
|
11
9
|
use(req, res, next) {
|
|
12
10
|
const request = HttpIncoming.from(req);
|
|
@@ -27,7 +25,6 @@ let OpraMiddleware = class OpraMiddleware {
|
|
|
27
25
|
};
|
|
28
26
|
OpraMiddleware = __decorate([
|
|
29
27
|
Injectable(),
|
|
30
|
-
|
|
31
|
-
__metadata("design:paramtypes", [OpraHttpNestjsAdapter, Object])
|
|
28
|
+
__metadata("design:paramtypes", [OpraHttpNestjsAdapter])
|
|
32
29
|
], OpraMiddleware);
|
|
33
30
|
export { OpraMiddleware };
|
package/esm/index.js
CHANGED
|
@@ -4,5 +4,5 @@ export * from './constants.js';
|
|
|
4
4
|
export * from './decorators/public.decorator.js';
|
|
5
5
|
export * from './http/opra-http.module.js';
|
|
6
6
|
export * from './http/opra-http-nestjs-adapter.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
7
|
+
export * from './kafka/opra-kafka.module.js';
|
|
8
|
+
export * from './kafka/opra-kafka-nestjs-adapter.js';
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
var OpraKafkaCoreModule_1;
|
|
2
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
3
|
+
import { Global, Inject, Logger, Module, } from '@nestjs/common';
|
|
4
|
+
import { ModuleRef } from '@nestjs/core';
|
|
5
|
+
import { isConstructor } from '@opra/common';
|
|
6
|
+
import { OPRA_KAFKA_MODULE_CONFIG } from '../constants.js';
|
|
7
|
+
import { OpraKafkaNestjsAdapter } from './opra-kafka-nestjs-adapter.js';
|
|
8
|
+
const opraKafkaNestjsAdapterToken = Symbol('OpraKafkaNestjsAdapter');
|
|
9
|
+
let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
|
|
10
|
+
constructor(adapter, init) {
|
|
11
|
+
this.adapter = adapter;
|
|
12
|
+
this.init = init;
|
|
13
|
+
}
|
|
14
|
+
static forRoot(moduleOptions) {
|
|
15
|
+
return this._getDynamicModule({
|
|
16
|
+
...moduleOptions,
|
|
17
|
+
providers: [
|
|
18
|
+
...(moduleOptions?.providers || []),
|
|
19
|
+
{
|
|
20
|
+
provide: OPRA_KAFKA_MODULE_CONFIG,
|
|
21
|
+
useValue: {
|
|
22
|
+
...moduleOptions,
|
|
23
|
+
logger: moduleOptions.logger || new Logger(moduleOptions.name),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
static forRootAsync(moduleOptions) {
|
|
30
|
+
if (!moduleOptions.useFactory)
|
|
31
|
+
throw new Error('Invalid configuration. Must provide "useFactory"');
|
|
32
|
+
return this._getDynamicModule({
|
|
33
|
+
...moduleOptions,
|
|
34
|
+
providers: [
|
|
35
|
+
...(moduleOptions?.providers || []),
|
|
36
|
+
{
|
|
37
|
+
provide: OPRA_KAFKA_MODULE_CONFIG,
|
|
38
|
+
inject: moduleOptions.inject,
|
|
39
|
+
useFactory: async (...args) => {
|
|
40
|
+
const result = await moduleOptions.useFactory(...args);
|
|
41
|
+
result.logger = result.logger || new Logger(result.name);
|
|
42
|
+
return result;
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static _getDynamicModule(moduleOptions) {
|
|
49
|
+
const token = moduleOptions.id || OpraKafkaNestjsAdapter;
|
|
50
|
+
const adapterProvider = {
|
|
51
|
+
provide: token,
|
|
52
|
+
inject: [ModuleRef, OPRA_KAFKA_MODULE_CONFIG],
|
|
53
|
+
useFactory: async (moduleRef, config) => {
|
|
54
|
+
const adapter = new OpraKafkaNestjsAdapter(moduleRef);
|
|
55
|
+
await adapter.initialize(config);
|
|
56
|
+
if (moduleOptions.interceptors) {
|
|
57
|
+
adapter.adapter.interceptors = moduleOptions.interceptors.map(x => {
|
|
58
|
+
if (isConstructor(x)) {
|
|
59
|
+
return async (ctx, next) => {
|
|
60
|
+
const interceptor = moduleRef.get(x);
|
|
61
|
+
if (typeof interceptor.intercept === 'function')
|
|
62
|
+
return interceptor.intercept(ctx, next);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return x;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return adapter;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
global: moduleOptions.global,
|
|
73
|
+
module: OpraKafkaCoreModule_1,
|
|
74
|
+
controllers: moduleOptions.controllers,
|
|
75
|
+
providers: [
|
|
76
|
+
...(moduleOptions?.providers || []),
|
|
77
|
+
adapterProvider,
|
|
78
|
+
{
|
|
79
|
+
provide: opraKafkaNestjsAdapterToken,
|
|
80
|
+
useExisting: token,
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
imports: [...(moduleOptions?.imports || [])],
|
|
84
|
+
exports: [...(moduleOptions?.exports || []), adapterProvider],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async onModuleInit() {
|
|
88
|
+
await this.adapter.initialize(this.init);
|
|
89
|
+
}
|
|
90
|
+
async onApplicationBootstrap() {
|
|
91
|
+
await this.adapter.start();
|
|
92
|
+
}
|
|
93
|
+
async onApplicationShutdown() {
|
|
94
|
+
await this.adapter.stop();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
OpraKafkaCoreModule = OpraKafkaCoreModule_1 = __decorate([
|
|
98
|
+
Module({}),
|
|
99
|
+
Global(),
|
|
100
|
+
__param(0, Inject(opraKafkaNestjsAdapterToken)),
|
|
101
|
+
__param(1, Inject(OPRA_KAFKA_MODULE_CONFIG)),
|
|
102
|
+
__metadata("design:paramtypes", [OpraKafkaNestjsAdapter, Object])
|
|
103
|
+
], OpraKafkaCoreModule);
|
|
104
|
+
export { OpraKafkaCoreModule };
|
|
@@ -5,12 +5,22 @@ import { OpraKafkaCoreModule } from './opra-kafka-core.module.js';
|
|
|
5
5
|
let OpraKafkaModule = OpraKafkaModule_1 = class OpraKafkaModule {
|
|
6
6
|
/**
|
|
7
7
|
*
|
|
8
|
-
* @param
|
|
8
|
+
* @param options
|
|
9
9
|
*/
|
|
10
|
-
static forRoot(
|
|
10
|
+
static forRoot(options) {
|
|
11
11
|
return {
|
|
12
12
|
module: OpraKafkaModule_1,
|
|
13
|
-
imports: [OpraKafkaCoreModule.forRoot(
|
|
13
|
+
imports: [OpraKafkaCoreModule.forRoot(options)],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @param options
|
|
19
|
+
*/
|
|
20
|
+
static forRootAsync(options) {
|
|
21
|
+
return {
|
|
22
|
+
module: OpraKafkaModule_1,
|
|
23
|
+
imports: [OpraKafkaCoreModule.forRootAsync(options)],
|
|
14
24
|
};
|
|
15
25
|
}
|
|
16
26
|
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opra/nestjs",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.5",
|
|
4
4
|
"description": "Opra NestJS module",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@opra/common": "^1.0.0-beta.
|
|
9
|
-
"@opra/core": "^1.0.0-beta.
|
|
8
|
+
"@opra/common": "^1.0.0-beta.5",
|
|
9
|
+
"@opra/core": "^1.0.0-beta.5",
|
|
10
10
|
"fast-tokenizer": "^1.7.0",
|
|
11
11
|
"lodash.head": "^4.0.1",
|
|
12
12
|
"putil-promisify": "^1.10.1",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"optionalDependencies": {
|
|
21
21
|
"@nestjs/microservices": "^10.4.4",
|
|
22
|
-
"@opra/http": "^1.0.0-beta.
|
|
23
|
-
"@opra/kafka": "^1.0.0-beta.
|
|
22
|
+
"@opra/http": "^1.0.0-beta.5",
|
|
23
|
+
"@opra/kafka": "^1.0.0-beta.5"
|
|
24
24
|
},
|
|
25
25
|
"type": "module",
|
|
26
26
|
"exports": {
|
package/types/constants.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const IS_PUBLIC_KEY = "opra:isPublic";
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
2
|
+
export declare const OPRA_HTTP_API_CONFIG = "OPRA_HTTP_API_CONFIG";
|
|
3
|
+
export declare const OPRA_KAFKA_MODULE_CONFIG = "OPRA_KAFKA_MODULE_CONFIG";
|
|
@@ -5,6 +5,8 @@ export declare class OpraHttpCoreModule implements OnModuleDestroy, NestModule {
|
|
|
5
5
|
protected opraAdapter: OpraHttpNestjsAdapter;
|
|
6
6
|
constructor(opraAdapter: OpraHttpNestjsAdapter);
|
|
7
7
|
configure(consumer: MiddlewareConsumer): void;
|
|
8
|
-
static forRoot(
|
|
8
|
+
static forRoot(moduleOptions: OpraHttpModule.ModuleOptions): DynamicModule;
|
|
9
|
+
static forRootAsync(moduleOptions: OpraHttpModule.AsyncModuleOptions): DynamicModule;
|
|
10
|
+
protected static _getDynamicModule(moduleOptions: OpraHttpModule.ModuleOptions | OpraHttpModule.AsyncModuleOptions): DynamicModule;
|
|
9
11
|
onModuleDestroy(): Promise<void>;
|
|
10
12
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type Type } from '@nestjs/common';
|
|
2
2
|
import { HttpAdapter } from '@opra/http';
|
|
3
|
-
import type { OpraHttpModule } from './opra-http.module.js';
|
|
4
3
|
export declare class OpraHttpNestjsAdapter extends HttpAdapter {
|
|
5
4
|
readonly nestControllers: Type[];
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(options: HttpAdapter.Options & {
|
|
6
|
+
schemaIsPublic?: boolean;
|
|
7
|
+
controllers?: Type[];
|
|
8
|
+
});
|
|
8
9
|
close(): Promise<void>;
|
|
9
|
-
protected _addRootController(
|
|
10
|
+
protected _addRootController(isPublic?: boolean): void;
|
|
10
11
|
protected _addToNestControllers(sourceClass: Type, currentPath: string, parentTree: Type[]): void;
|
|
11
12
|
static copyDecoratorMetadataToChild(target: Type, parentTree: Type[]): void;
|
|
12
13
|
}
|
|
@@ -1,22 +1,35 @@
|
|
|
1
|
-
import { type DynamicModule, type Type } from '@nestjs/common';
|
|
1
|
+
import { type DynamicModule, Logger, type Type } from '@nestjs/common';
|
|
2
2
|
import { ApiDocumentFactory } from '@opra/common';
|
|
3
3
|
import { HttpAdapter } from '@opra/http';
|
|
4
4
|
export declare namespace OpraHttpModule {
|
|
5
|
-
interface
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export interface ModuleOptions extends BaseModuleOptions, ApiConfig {
|
|
6
|
+
}
|
|
7
|
+
export interface AsyncModuleOptions extends BaseModuleOptions {
|
|
8
|
+
inject?: any[];
|
|
9
|
+
useFactory?: (...args: any[]) => Promise<ApiConfig> | ApiConfig;
|
|
9
10
|
}
|
|
10
|
-
interface
|
|
11
|
+
interface BaseModuleOptions extends Pick<DynamicModule, 'imports' | 'providers' | 'exports' | 'controllers' | 'global'> {
|
|
12
|
+
token?: any;
|
|
11
13
|
basePath?: string;
|
|
12
|
-
|
|
14
|
+
schemaIsPublic?: boolean;
|
|
13
15
|
interceptors?: (HttpAdapter.InterceptorFunction | HttpAdapter.IHttpInterceptor | Type<HttpAdapter.IHttpInterceptor>)[];
|
|
14
16
|
}
|
|
17
|
+
export interface ApiConfig extends Pick<ApiDocumentFactory.InitArguments, 'types' | 'references' | 'info'> {
|
|
18
|
+
name: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
logger?: Logger;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
15
23
|
}
|
|
16
24
|
export declare class OpraHttpModule {
|
|
17
25
|
/**
|
|
18
26
|
*
|
|
19
27
|
* @param init
|
|
20
28
|
*/
|
|
21
|
-
static forRoot(init: OpraHttpModule.
|
|
29
|
+
static forRoot(init: OpraHttpModule.ModuleOptions): DynamicModule;
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @param options
|
|
33
|
+
*/
|
|
34
|
+
static forRootAsync(options: OpraHttpModule.AsyncModuleOptions): DynamicModule;
|
|
22
35
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { type NestMiddleware } from '@nestjs/common';
|
|
2
2
|
import type { NextFunction, Request, Response } from 'express';
|
|
3
|
-
import type { OpraHttpModule } from '../opra-http.module.js';
|
|
4
3
|
import { OpraHttpNestjsAdapter } from '../opra-http-nestjs-adapter.js';
|
|
5
4
|
export declare class OpraMiddleware implements NestMiddleware {
|
|
6
5
|
protected opraAdapter: OpraHttpNestjsAdapter;
|
|
7
|
-
|
|
8
|
-
constructor(opraAdapter: OpraHttpNestjsAdapter, options: OpraHttpModule.Options);
|
|
6
|
+
constructor(opraAdapter: OpraHttpNestjsAdapter);
|
|
9
7
|
use(req: Request, res: Response, next: NextFunction): void;
|
|
10
8
|
}
|
package/types/index.d.cts
CHANGED
|
@@ -4,5 +4,5 @@ export * from './constants.js';
|
|
|
4
4
|
export * from './decorators/public.decorator.js';
|
|
5
5
|
export * from './http/opra-http.module.js';
|
|
6
6
|
export * from './http/opra-http-nestjs-adapter.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
7
|
+
export * from './kafka/opra-kafka.module.js';
|
|
8
|
+
export * from './kafka/opra-kafka-nestjs-adapter.js';
|
package/types/index.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ export * from './constants.js';
|
|
|
4
4
|
export * from './decorators/public.decorator.js';
|
|
5
5
|
export * from './http/opra-http.module.js';
|
|
6
6
|
export * from './http/opra-http-nestjs-adapter.js';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './
|
|
7
|
+
export * from './kafka/opra-kafka.module.js';
|
|
8
|
+
export * from './kafka/opra-kafka-nestjs-adapter.js';
|
|
@@ -3,9 +3,11 @@ import type { OpraKafkaModule } from './opra-kafka.module.js';
|
|
|
3
3
|
import { OpraKafkaNestjsAdapter } from './opra-kafka-nestjs-adapter.js';
|
|
4
4
|
export declare class OpraKafkaCoreModule implements OnModuleInit, OnApplicationBootstrap, OnApplicationShutdown {
|
|
5
5
|
protected adapter: OpraKafkaNestjsAdapter;
|
|
6
|
-
protected init: OpraKafkaModule.
|
|
7
|
-
constructor(adapter: OpraKafkaNestjsAdapter, init: OpraKafkaModule.
|
|
8
|
-
static forRoot(
|
|
6
|
+
protected init: OpraKafkaModule.ApiConfig;
|
|
7
|
+
constructor(adapter: OpraKafkaNestjsAdapter, init: OpraKafkaModule.ApiConfig);
|
|
8
|
+
static forRoot(moduleOptions: OpraKafkaModule.ModuleOptions): DynamicModule;
|
|
9
|
+
static forRootAsync(moduleOptions: OpraKafkaModule.AsyncModuleOptions): DynamicModule;
|
|
10
|
+
protected static _getDynamicModule(moduleOptions: OpraKafkaModule.ModuleOptions | OpraKafkaModule.AsyncModuleOptions): DynamicModule;
|
|
9
11
|
onModuleInit(): Promise<void>;
|
|
10
12
|
onApplicationBootstrap(): Promise<void>;
|
|
11
13
|
onApplicationShutdown(): Promise<void>;
|
|
@@ -14,6 +14,6 @@ export declare class OpraKafkaNestjsAdapter {
|
|
|
14
14
|
get adapter(): KafkaAdapter;
|
|
15
15
|
start(): Promise<void>;
|
|
16
16
|
stop(): Promise<void | undefined>;
|
|
17
|
-
initialize(init: OpraKafkaModule.
|
|
17
|
+
initialize(init: OpraKafkaModule.ApiConfig): Promise<void>;
|
|
18
18
|
protected _scanControllers(): any[];
|
|
19
19
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type DynamicModule, Logger, type Type } from '@nestjs/common';
|
|
2
|
+
import { ApiDocumentFactory } from '@opra/common';
|
|
3
|
+
import { KafkaAdapter } from '@opra/kafka';
|
|
4
|
+
export declare namespace OpraKafkaModule {
|
|
5
|
+
export interface ModuleOptions extends BaseModuleOptions, ApiConfig {
|
|
6
|
+
}
|
|
7
|
+
export interface AsyncModuleOptions extends BaseModuleOptions {
|
|
8
|
+
inject?: any[];
|
|
9
|
+
useFactory?: (...args: any[]) => Promise<ApiConfig> | ApiConfig;
|
|
10
|
+
}
|
|
11
|
+
interface BaseModuleOptions extends Pick<DynamicModule, 'imports' | 'providers' | 'exports' | 'controllers' | 'global'> {
|
|
12
|
+
id?: any;
|
|
13
|
+
interceptors?: (KafkaAdapter.InterceptorFunction | KafkaAdapter.IKafkaInterceptor | Type<KafkaAdapter.IKafkaInterceptor>)[];
|
|
14
|
+
}
|
|
15
|
+
export interface ApiConfig extends Pick<ApiDocumentFactory.InitArguments, 'types' | 'references' | 'info'>, Pick<KafkaAdapter.Config, 'client' | 'consumers' | 'logExtra'> {
|
|
16
|
+
name: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
logger?: Logger;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
}
|
|
22
|
+
export declare class OpraKafkaModule {
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @param options
|
|
26
|
+
*/
|
|
27
|
+
static forRoot(options: OpraKafkaModule.ModuleOptions): DynamicModule;
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @param options
|
|
31
|
+
*/
|
|
32
|
+
static forRootAsync(options: OpraKafkaModule.AsyncModuleOptions): DynamicModule;
|
|
33
|
+
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var OpraKafkaCoreModule_1;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.OpraKafkaCoreModule = void 0;
|
|
5
|
-
const tslib_1 = require("tslib");
|
|
6
|
-
const common_1 = require("@nestjs/common");
|
|
7
|
-
const core_1 = require("@nestjs/core");
|
|
8
|
-
const constants_js_1 = require("../../constants.js");
|
|
9
|
-
const opra_kafka_nestjs_adapter_js_1 = require("./opra-kafka-nestjs-adapter.js");
|
|
10
|
-
const opraKafkaNestjsAdapterToken = Symbol('OpraKafkaNestjsAdapter');
|
|
11
|
-
let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
|
|
12
|
-
constructor(adapter, init) {
|
|
13
|
-
this.adapter = adapter;
|
|
14
|
-
this.init = init;
|
|
15
|
-
}
|
|
16
|
-
static forRoot(init) {
|
|
17
|
-
const adapterProvider = {
|
|
18
|
-
provide: init.id || opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter,
|
|
19
|
-
inject: [core_1.ModuleRef],
|
|
20
|
-
useFactory: (moduleRef) => new opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter(moduleRef),
|
|
21
|
-
};
|
|
22
|
-
const providers = [
|
|
23
|
-
...(init?.providers || []),
|
|
24
|
-
{
|
|
25
|
-
provide: constants_js_1.OPRA_KAFKA_MODULE_OPTIONS,
|
|
26
|
-
useValue: { ...init },
|
|
27
|
-
},
|
|
28
|
-
adapterProvider,
|
|
29
|
-
{
|
|
30
|
-
provide: opraKafkaNestjsAdapterToken,
|
|
31
|
-
useExisting: adapterProvider.provide,
|
|
32
|
-
},
|
|
33
|
-
];
|
|
34
|
-
return {
|
|
35
|
-
global: true,
|
|
36
|
-
module: OpraKafkaCoreModule_1,
|
|
37
|
-
controllers: init.controllers,
|
|
38
|
-
providers,
|
|
39
|
-
imports: [...(init?.imports || [])],
|
|
40
|
-
exports: [...(init?.exports || []), adapterProvider],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
async onModuleInit() {
|
|
44
|
-
await this.adapter.initialize(this.init);
|
|
45
|
-
}
|
|
46
|
-
async onApplicationBootstrap() {
|
|
47
|
-
await this.adapter.start();
|
|
48
|
-
}
|
|
49
|
-
async onApplicationShutdown() {
|
|
50
|
-
await this.adapter.stop();
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
exports.OpraKafkaCoreModule = OpraKafkaCoreModule;
|
|
54
|
-
exports.OpraKafkaCoreModule = OpraKafkaCoreModule = OpraKafkaCoreModule_1 = tslib_1.__decorate([
|
|
55
|
-
(0, common_1.Module)({}),
|
|
56
|
-
(0, common_1.Global)(),
|
|
57
|
-
tslib_1.__param(0, (0, common_1.Inject)(opraKafkaNestjsAdapterToken)),
|
|
58
|
-
tslib_1.__param(1, (0, common_1.Inject)(constants_js_1.OPRA_KAFKA_MODULE_OPTIONS)),
|
|
59
|
-
tslib_1.__metadata("design:paramtypes", [opra_kafka_nestjs_adapter_js_1.OpraKafkaNestjsAdapter, Object])
|
|
60
|
-
], OpraKafkaCoreModule);
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
var OpraKafkaCoreModule_1;
|
|
2
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
3
|
-
import { Global, Inject, Module, } from '@nestjs/common';
|
|
4
|
-
import { ModuleRef } from '@nestjs/core';
|
|
5
|
-
import { OPRA_KAFKA_MODULE_OPTIONS } from '../../constants.js';
|
|
6
|
-
import { OpraKafkaNestjsAdapter } from './opra-kafka-nestjs-adapter.js';
|
|
7
|
-
const opraKafkaNestjsAdapterToken = Symbol('OpraKafkaNestjsAdapter');
|
|
8
|
-
let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
|
|
9
|
-
constructor(adapter, init) {
|
|
10
|
-
this.adapter = adapter;
|
|
11
|
-
this.init = init;
|
|
12
|
-
}
|
|
13
|
-
static forRoot(init) {
|
|
14
|
-
const adapterProvider = {
|
|
15
|
-
provide: init.id || OpraKafkaNestjsAdapter,
|
|
16
|
-
inject: [ModuleRef],
|
|
17
|
-
useFactory: (moduleRef) => new OpraKafkaNestjsAdapter(moduleRef),
|
|
18
|
-
};
|
|
19
|
-
const providers = [
|
|
20
|
-
...(init?.providers || []),
|
|
21
|
-
{
|
|
22
|
-
provide: OPRA_KAFKA_MODULE_OPTIONS,
|
|
23
|
-
useValue: { ...init },
|
|
24
|
-
},
|
|
25
|
-
adapterProvider,
|
|
26
|
-
{
|
|
27
|
-
provide: opraKafkaNestjsAdapterToken,
|
|
28
|
-
useExisting: adapterProvider.provide,
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
return {
|
|
32
|
-
global: true,
|
|
33
|
-
module: OpraKafkaCoreModule_1,
|
|
34
|
-
controllers: init.controllers,
|
|
35
|
-
providers,
|
|
36
|
-
imports: [...(init?.imports || [])],
|
|
37
|
-
exports: [...(init?.exports || []), adapterProvider],
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
async onModuleInit() {
|
|
41
|
-
await this.adapter.initialize(this.init);
|
|
42
|
-
}
|
|
43
|
-
async onApplicationBootstrap() {
|
|
44
|
-
await this.adapter.start();
|
|
45
|
-
}
|
|
46
|
-
async onApplicationShutdown() {
|
|
47
|
-
await this.adapter.stop();
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
OpraKafkaCoreModule = OpraKafkaCoreModule_1 = __decorate([
|
|
51
|
-
Module({}),
|
|
52
|
-
Global(),
|
|
53
|
-
__param(0, Inject(opraKafkaNestjsAdapterToken)),
|
|
54
|
-
__param(1, Inject(OPRA_KAFKA_MODULE_OPTIONS)),
|
|
55
|
-
__metadata("design:paramtypes", [OpraKafkaNestjsAdapter, Object])
|
|
56
|
-
], OpraKafkaCoreModule);
|
|
57
|
-
export { OpraKafkaCoreModule };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type DynamicModule, Logger, type Type } from '@nestjs/common';
|
|
2
|
-
import { ApiDocumentFactory } from '@opra/common';
|
|
3
|
-
import { KafkaAdapter } from '@opra/kafka';
|
|
4
|
-
import type { StrictOmit } from 'ts-gems';
|
|
5
|
-
export declare namespace OpraKafkaModule {
|
|
6
|
-
interface Initiator extends Pick<DynamicModule, 'imports' | 'providers' | 'exports' | 'controllers'>, Pick<ApiDocumentFactory.InitArguments, 'types' | 'references' | 'info'>, StrictOmit<KafkaAdapter.Config, 'document' | 'logger' | 'interceptors'> {
|
|
7
|
-
id?: any;
|
|
8
|
-
name: string;
|
|
9
|
-
description?: string;
|
|
10
|
-
types?: ApiDocumentFactory.InitArguments['types'];
|
|
11
|
-
logger?: Logger;
|
|
12
|
-
interceptors?: (KafkaAdapter.InterceptorFunction | KafkaAdapter.IKafkaInterceptor | Type<KafkaAdapter.IKafkaInterceptor>)[];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export declare class OpraKafkaModule {
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* @param init
|
|
19
|
-
*/
|
|
20
|
-
static forRoot(init: OpraKafkaModule.Initiator): DynamicModule;
|
|
21
|
-
}
|
|
File without changes
|
|
File without changes
|