@opra/nestjs 1.4.3 → 1.5.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.
@@ -7,12 +7,16 @@ class BaseOpraNestFactory {
7
7
  for (const parent of source) {
8
8
  const metadataKeys = Reflect.getOwnMetadataKeys(parent);
9
9
  for (const key of metadataKeys) {
10
- if (typeof key === 'string' && key.startsWith('opra.') && !Reflect.hasOwnMetadata(key, target)) {
10
+ if (typeof key === 'string' &&
11
+ key.startsWith('opra.') &&
12
+ !Reflect.hasOwnMetadata(key, target)) {
11
13
  const metadata = Reflect.getMetadata(key, parent);
12
14
  Reflect.defineMetadata(key, metadata, target);
13
15
  continue;
14
16
  }
15
- if (key === constants_1.GUARDS_METADATA || key === constants_1.INTERCEPTORS_METADATA || key === constants_1.EXCEPTION_FILTERS_METADATA) {
17
+ if (key === constants_1.GUARDS_METADATA ||
18
+ key === constants_1.INTERCEPTORS_METADATA ||
19
+ key === constants_1.EXCEPTION_FILTERS_METADATA) {
16
20
  const m1 = Reflect.getMetadata(key, target) || [];
17
21
  const metadata = [...m1];
18
22
  const m2 = Reflect.getOwnMetadata(key, parent) || [];
@@ -59,16 +59,18 @@ let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
59
59
  provide: token,
60
60
  inject: [core_1.ModuleRef, constants_js_1.OPRA_HTTP_API_CONFIG],
61
61
  useFactory: async (moduleRef, apiConfig) => {
62
- opraNestAdapter.logger = opraNestAdapter.logger || new common_1.Logger(apiConfig.name);
63
- 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
- });
62
+ opraNestAdapter.logger =
63
+ opraNestAdapter.logger || new common_1.Logger(apiConfig.name);
64
+ opraNestAdapter._document =
65
+ await common_2.ApiDocumentFactory.createDocument({
66
+ ...apiConfig,
67
+ api: {
68
+ transport: 'http',
69
+ name: apiConfig.name,
70
+ description: apiConfig.description,
71
+ controllers: moduleOptions.controllers,
72
+ },
73
+ });
72
74
  if (moduleOptions.interceptors) {
73
75
  opraNestAdapter.interceptors = moduleOptions.interceptors.map(x => {
74
76
  if ((0, objects_1.isConstructor)(x)) {
@@ -61,7 +61,9 @@ class OpraHttpNestjsAdapter extends http_1.HttpAdapter {
61
61
  /** Copy metadata keys from source class to new one */
62
62
  base_opra_nest_factory_js_1.BaseOpraNestFactory.copyDecoratorMetadata(newClass, ...parentTree);
63
63
  (0, common_1.Controller)()(newClass);
64
- const newPath = metadata.path ? node_path_1.default.join(currentPath, metadata.path) : currentPath;
64
+ const newPath = metadata.path
65
+ ? node_path_1.default.join(currentPath, metadata.path)
66
+ : currentPath;
65
67
  const adapter = this;
66
68
  // adapter.logger =
67
69
  /** Disable default error handler. Errors will be handled by OpraExceptionFilter */
@@ -110,7 +112,9 @@ class OpraHttpNestjsAdapter extends http_1.HttpAdapter {
110
112
  (0, common_1.Req)()(newClass.prototype, k, 0);
111
113
  (0, common_1.Res)()(newClass.prototype, k, 1);
112
114
  const descriptor = Object.getOwnPropertyDescriptor(newClass.prototype, k);
113
- const operationPath = v.mergePath ? newPath + (v.path || '') : node_path_1.default.posix.join(newPath, v.path || '');
115
+ const operationPath = v.mergePath
116
+ ? newPath + (v.path || '')
117
+ : node_path_1.default.posix.join(newPath, v.path || '');
114
118
  switch (v.method || 'GET') {
115
119
  case 'DELETE':
116
120
  /** Call @Delete decorator over new property */
@@ -153,7 +157,10 @@ class OpraHttpNestjsAdapter extends http_1.HttpAdapter {
153
157
  for (const child of metadata.controllers) {
154
158
  if (!(0, objects_1.isConstructor)(child))
155
159
  throw new TypeError('Controllers should be injectable a class');
156
- this._addToNestControllers(child, newPath, [...parentTree, sourceClass]);
160
+ this._addToNestControllers(child, newPath, [
161
+ ...parentTree,
162
+ sourceClass,
163
+ ]);
157
164
  }
158
165
  }
159
166
  }
@@ -57,11 +57,14 @@ let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
57
57
  provide: token,
58
58
  inject: [rpc_controller_factory_service_js_1.RpcControllerFactory, core_1.ModuleRef, constants_js_1.OPRA_KAFKA_MODULE_CONFIG],
59
59
  useFactory: async (controllerFactory, moduleRef, config) => {
60
- const controllers = controllerFactory.exploreControllers().map(x => x.wrapper.instance.constructor);
60
+ const controllers = controllerFactory
61
+ .exploreControllers()
62
+ .map(x => x.wrapper.instance.constructor);
61
63
  const document = await common_2.ApiDocumentFactory.createDocument({
62
64
  info: config.info,
63
65
  types: config.types,
64
66
  references: config.references,
67
+ scopes: config.scopes,
65
68
  api: {
66
69
  name: config.name,
67
70
  description: config.description,
@@ -107,7 +110,9 @@ let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
107
110
  * So we should update instance properties */
108
111
  const rpcApi = this.adapter.document.rpcApi;
109
112
  const controllers = Array.from(rpcApi.controllers.values());
110
- for (const { wrapper } of this.controllerFactory.exploreControllers().values()) {
113
+ for (const { wrapper } of this.controllerFactory
114
+ .exploreControllers()
115
+ .values()) {
111
116
  const ctor = wrapper.instance.constructor;
112
117
  const controller = controllers.find(x => x.ctor === ctor);
113
118
  if (controller) {
@@ -1,15 +1,19 @@
1
- import { EXCEPTION_FILTERS_METADATA, GUARDS_METADATA, INTERCEPTORS_METADATA } from '@nestjs/common/constants';
1
+ import { EXCEPTION_FILTERS_METADATA, GUARDS_METADATA, INTERCEPTORS_METADATA, } from '@nestjs/common/constants';
2
2
  export class BaseOpraNestFactory {
3
3
  static copyDecoratorMetadata(target, ...source) {
4
4
  for (const parent of source) {
5
5
  const metadataKeys = Reflect.getOwnMetadataKeys(parent);
6
6
  for (const key of metadataKeys) {
7
- if (typeof key === 'string' && key.startsWith('opra.') && !Reflect.hasOwnMetadata(key, target)) {
7
+ if (typeof key === 'string' &&
8
+ key.startsWith('opra.') &&
9
+ !Reflect.hasOwnMetadata(key, target)) {
8
10
  const metadata = Reflect.getMetadata(key, parent);
9
11
  Reflect.defineMetadata(key, metadata, target);
10
12
  continue;
11
13
  }
12
- if (key === GUARDS_METADATA || key === INTERCEPTORS_METADATA || key === EXCEPTION_FILTERS_METADATA) {
14
+ if (key === GUARDS_METADATA ||
15
+ key === INTERCEPTORS_METADATA ||
16
+ key === EXCEPTION_FILTERS_METADATA) {
13
17
  const m1 = Reflect.getMetadata(key, target) || [];
14
18
  const metadata = [...m1];
15
19
  const m2 = Reflect.getOwnMetadata(key, parent) || [];
@@ -1,8 +1,8 @@
1
1
  var RpcControllerFactory_1;
2
2
  import { __decorate, __metadata, __param } from "tslib";
3
- import { Controller, Inject, Injectable } from '@nestjs/common';
3
+ import { Controller, Inject, Injectable, } from '@nestjs/common';
4
4
  import { createContextId, ModulesContainer, REQUEST } from '@nestjs/core';
5
- import { ExternalContextCreator } from '@nestjs/core/helpers/external-context-creator';
5
+ import { ExternalContextCreator, } from '@nestjs/core/helpers/external-context-creator';
6
6
  import { Injector } from '@nestjs/core/injector/injector';
7
7
  import { InternalCoreModule } from '@nestjs/core/injector/internal-core-module';
8
8
  import { REQUEST_CONTEXT_ID } from '@nestjs/core/router/request/request-constants';
@@ -56,16 +56,18 @@ let OpraHttpCoreModule = OpraHttpCoreModule_1 = class OpraHttpCoreModule {
56
56
  provide: token,
57
57
  inject: [ModuleRef, OPRA_HTTP_API_CONFIG],
58
58
  useFactory: async (moduleRef, apiConfig) => {
59
- opraNestAdapter.logger = opraNestAdapter.logger || new Logger(apiConfig.name);
60
- 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
- });
59
+ opraNestAdapter.logger =
60
+ opraNestAdapter.logger || new Logger(apiConfig.name);
61
+ opraNestAdapter._document =
62
+ await ApiDocumentFactory.createDocument({
63
+ ...apiConfig,
64
+ api: {
65
+ transport: 'http',
66
+ name: apiConfig.name,
67
+ description: apiConfig.description,
68
+ controllers: moduleOptions.controllers,
69
+ },
70
+ });
69
71
  if (moduleOptions.interceptors) {
70
72
  opraNestAdapter.interceptors = moduleOptions.interceptors.map(x => {
71
73
  if (isConstructor(x)) {
@@ -2,7 +2,7 @@ import { __decorate, __metadata, __param } from "tslib";
2
2
  import nodePath from 'node:path';
3
3
  import { isConstructor } from '@jsopen/objects';
4
4
  import { Controller, Delete, Get, Head, Next, Options, Patch, Post, Put, Req, Res, Search, } from '@nestjs/common';
5
- import { HTTP_CONTROLLER_METADATA, NotFoundError } from '@opra/common';
5
+ import { HTTP_CONTROLLER_METADATA, NotFoundError, } from '@opra/common';
6
6
  import { HttpAdapter } from '@opra/http';
7
7
  import { asMutable } from 'ts-gems';
8
8
  import { Public } from '../decorators/public.decorator.js';
@@ -58,7 +58,9 @@ export class OpraHttpNestjsAdapter extends HttpAdapter {
58
58
  /** Copy metadata keys from source class to new one */
59
59
  BaseOpraNestFactory.copyDecoratorMetadata(newClass, ...parentTree);
60
60
  Controller()(newClass);
61
- const newPath = metadata.path ? nodePath.join(currentPath, metadata.path) : currentPath;
61
+ const newPath = metadata.path
62
+ ? nodePath.join(currentPath, metadata.path)
63
+ : currentPath;
62
64
  const adapter = this;
63
65
  // adapter.logger =
64
66
  /** Disable default error handler. Errors will be handled by OpraExceptionFilter */
@@ -107,7 +109,9 @@ export class OpraHttpNestjsAdapter extends HttpAdapter {
107
109
  Req()(newClass.prototype, k, 0);
108
110
  Res()(newClass.prototype, k, 1);
109
111
  const descriptor = Object.getOwnPropertyDescriptor(newClass.prototype, k);
110
- const operationPath = v.mergePath ? newPath + (v.path || '') : nodePath.posix.join(newPath, v.path || '');
112
+ const operationPath = v.mergePath
113
+ ? newPath + (v.path || '')
114
+ : nodePath.posix.join(newPath, v.path || '');
111
115
  switch (v.method || 'GET') {
112
116
  case 'DELETE':
113
117
  /** Call @Delete decorator over new property */
@@ -150,7 +154,10 @@ export class OpraHttpNestjsAdapter extends HttpAdapter {
150
154
  for (const child of metadata.controllers) {
151
155
  if (!isConstructor(child))
152
156
  throw new TypeError('Controllers should be injectable a class');
153
- this._addToNestControllers(child, newPath, [...parentTree, sourceClass]);
157
+ this._addToNestControllers(child, newPath, [
158
+ ...parentTree,
159
+ sourceClass,
160
+ ]);
154
161
  }
155
162
  }
156
163
  }
@@ -54,11 +54,14 @@ let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
54
54
  provide: token,
55
55
  inject: [RpcControllerFactory, ModuleRef, OPRA_KAFKA_MODULE_CONFIG],
56
56
  useFactory: async (controllerFactory, moduleRef, config) => {
57
- const controllers = controllerFactory.exploreControllers().map(x => x.wrapper.instance.constructor);
57
+ const controllers = controllerFactory
58
+ .exploreControllers()
59
+ .map(x => x.wrapper.instance.constructor);
58
60
  const document = await ApiDocumentFactory.createDocument({
59
61
  info: config.info,
60
62
  types: config.types,
61
63
  references: config.references,
64
+ scopes: config.scopes,
62
65
  api: {
63
66
  name: config.name,
64
67
  description: config.description,
@@ -104,7 +107,9 @@ let OpraKafkaCoreModule = OpraKafkaCoreModule_1 = class OpraKafkaCoreModule {
104
107
  * So we should update instance properties */
105
108
  const rpcApi = this.adapter.document.rpcApi;
106
109
  const controllers = Array.from(rpcApi.controllers.values());
107
- for (const { wrapper } of this.controllerFactory.exploreControllers().values()) {
110
+ for (const { wrapper } of this.controllerFactory
111
+ .exploreControllers()
112
+ .values()) {
108
113
  const ctor = wrapper.instance.constructor;
109
114
  const controller = controllers.find(x => x.ctor === ctor);
110
115
  if (controller) {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@opra/nestjs",
3
- "version": "1.4.3",
3
+ "version": "1.5.0",
4
4
  "description": "Opra NestJS module",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
8
  "@jsopen/objects": "^1.5.0",
9
- "@opra/common": "^1.4.3",
10
- "@opra/core": "^1.4.3",
9
+ "@opra/common": "^1.5.0",
10
+ "@opra/core": "^1.5.0",
11
11
  "fast-tokenizer": "^1.7.0",
12
12
  "putil-promisify": "^1.10.1",
13
13
  "reflect-metadata": "^0.2.2",
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "optionalDependencies": {
21
21
  "@nestjs/microservices": "^10.4.13",
22
- "@opra/http": "^1.4.3",
23
- "@opra/kafka": "^1.4.3"
22
+ "@opra/http": "^1.5.0",
23
+ "@opra/kafka": "^1.5.0"
24
24
  },
25
25
  "type": "module",
26
26
  "exports": {
@@ -17,6 +17,7 @@ export declare namespace OpraHttpModule {
17
17
  export interface ApiConfig extends Pick<ApiDocumentFactory.InitArguments, 'types' | 'references' | 'info'> {
18
18
  name: string;
19
19
  description?: string;
20
+ scopes?: string[];
20
21
  logger?: Logger;
21
22
  }
22
23
  export {};
@@ -15,6 +15,7 @@ export declare namespace OpraKafkaModule {
15
15
  export interface ApiConfig extends Pick<ApiDocumentFactory.InitArguments, 'types' | 'references' | 'info'>, Pick<KafkaAdapter.Config, 'client' | 'consumers' | 'logExtra' | 'defaults'> {
16
16
  name: string;
17
17
  description?: string;
18
+ scopes?: string[];
18
19
  logger?: Logger;
19
20
  }
20
21
  export {};