@impactor/nest 3.0.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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/index.d.ts +40 -0
  4. package/nx.json +190 -0
  5. package/package.json +102 -0
  6. package/src/configs/app.d.ts +21 -0
  7. package/src/configs/app.js +65 -0
  8. package/src/configs/app.js.map +1 -0
  9. package/src/configs/database.d.ts +2 -0
  10. package/src/configs/database.js +23 -0
  11. package/src/configs/database.js.map +1 -0
  12. package/src/configs/microservice.d.ts +7 -0
  13. package/src/configs/microservice.js +26 -0
  14. package/src/configs/microservice.js.map +1 -0
  15. package/src/configs/multi-queue-rabbitmq-server.d.ts +24 -0
  16. package/src/configs/multi-queue-rabbitmq-server.js +91 -0
  17. package/src/configs/multi-queue-rabbitmq-server.js.map +1 -0
  18. package/src/configs/redis-config.d.ts +5 -0
  19. package/src/configs/redis-config.js +16 -0
  20. package/src/configs/redis-config.js.map +1 -0
  21. package/src/create-app.d.ts +3 -0
  22. package/src/create-app.js +104 -0
  23. package/src/create-app.js.map +1 -0
  24. package/src/create-microservice.d.ts +2 -0
  25. package/src/create-microservice.js +43 -0
  26. package/src/create-microservice.js.map +1 -0
  27. package/src/create-testing-microservice.d.ts +3 -0
  28. package/src/create-testing-microservice.js +30 -0
  29. package/src/create-testing-microservice.js.map +1 -0
  30. package/src/decorators/controller/add-decorators/add-controller-path.d.ts +2 -0
  31. package/src/decorators/controller/add-decorators/add-controller-path.js +22 -0
  32. package/src/decorators/controller/add-decorators/add-controller-path.js.map +1 -0
  33. package/src/decorators/controller/add-decorators/add-controller-tags.d.ts +2 -0
  34. package/src/decorators/controller/add-decorators/add-controller-tags.js +28 -0
  35. package/src/decorators/controller/add-decorators/add-controller-tags.js.map +1 -0
  36. package/src/decorators/controller/add-decorators/add-http-method.d.ts +3 -0
  37. package/src/decorators/controller/add-decorators/add-http-method.js +27 -0
  38. package/src/decorators/controller/add-decorators/add-http-method.js.map +1 -0
  39. package/src/decorators/controller/add-decorators/add-swagger-body.d.ts +3 -0
  40. package/src/decorators/controller/add-decorators/add-swagger-body.js +30 -0
  41. package/src/decorators/controller/add-decorators/add-swagger-body.js.map +1 -0
  42. package/src/decorators/controller/add-decorators/add-swagger-operation.d.ts +3 -0
  43. package/src/decorators/controller/add-decorators/add-swagger-operation.js +21 -0
  44. package/src/decorators/controller/add-decorators/add-swagger-operation.js.map +1 -0
  45. package/src/decorators/controller/add-decorators/add-swagger-params.d.ts +3 -0
  46. package/src/decorators/controller/add-decorators/add-swagger-params.js +50 -0
  47. package/src/decorators/controller/add-decorators/add-swagger-params.js.map +1 -0
  48. package/src/decorators/controller/add-decorators/add-swagger-response.d.ts +3 -0
  49. package/src/decorators/controller/add-decorators/add-swagger-response.js +33 -0
  50. package/src/decorators/controller/add-decorators/add-swagger-response.js.map +1 -0
  51. package/src/decorators/controller/controller.decorator.d.ts +2 -0
  52. package/src/decorators/controller/controller.decorator.js +18 -0
  53. package/src/decorators/controller/controller.decorator.js.map +1 -0
  54. package/src/decorators/controller/controller.factory.d.ts +11 -0
  55. package/src/decorators/controller/controller.factory.js +261 -0
  56. package/src/decorators/controller/controller.factory.js.map +1 -0
  57. package/src/decorators/controller/default-options.d.ts +2 -0
  58. package/src/decorators/controller/default-options.js +181 -0
  59. package/src/decorators/controller/default-options.js.map +1 -0
  60. package/src/decorators/controller/dto/empty.dto.d.ts +2 -0
  61. package/src/decorators/controller/dto/empty.dto.js +18 -0
  62. package/src/decorators/controller/dto/empty.dto.js.map +1 -0
  63. package/src/decorators/controller/dto/update-response.dto.d.ts +3 -0
  64. package/src/decorators/controller/dto/update-response.dto.js +16 -0
  65. package/src/decorators/controller/dto/update-response.dto.js.map +1 -0
  66. package/src/decorators/controller/interceptors/query.interceptor.d.ts +8 -0
  67. package/src/decorators/controller/interceptors/query.interceptor.js +59 -0
  68. package/src/decorators/controller/interceptors/query.interceptor.js.map +1 -0
  69. package/src/decorators/controller/route-handler.d.ts +3 -0
  70. package/src/decorators/controller/route-handler.js +44 -0
  71. package/src/decorators/controller/route-handler.js.map +1 -0
  72. package/src/decorators/controller/route.decorator.d.ts +2 -0
  73. package/src/decorators/controller/route.decorator.js +17 -0
  74. package/src/decorators/controller/route.decorator.js.map +1 -0
  75. package/src/decorators/controller/services/crud-typeorm.service.d.ts +46 -0
  76. package/src/decorators/controller/services/crud-typeorm.service.js +232 -0
  77. package/src/decorators/controller/services/crud-typeorm.service.js.map +1 -0
  78. package/src/decorators/controller/types/index.d.ts +54 -0
  79. package/src/decorators/controller/types/index.js +6 -0
  80. package/src/decorators/controller/types/index.js.map +1 -0
  81. package/src/decorators/controller/utils/merge-options.d.ts +2 -0
  82. package/src/decorators/controller/utils/merge-options.js +37 -0
  83. package/src/decorators/controller/utils/merge-options.js.map +1 -0
  84. package/src/decorators/controller/utils/reflect.d.ts +10 -0
  85. package/src/decorators/controller/utils/reflect.js +86 -0
  86. package/src/decorators/controller/utils/reflect.js.map +1 -0
  87. package/src/decorators/prop.decorator.d.ts +9 -0
  88. package/src/decorators/prop.decorator.js +80 -0
  89. package/src/decorators/prop.decorator.js.map +1 -0
  90. package/src/exceptions/rpc-bad-request.exception.d.ts +4 -0
  91. package/src/exceptions/rpc-bad-request.exception.js +19 -0
  92. package/src/exceptions/rpc-bad-request.exception.js.map +1 -0
  93. package/src/exceptions/rpc-base.exception.d.ts +6 -0
  94. package/src/exceptions/rpc-base.exception.js +22 -0
  95. package/src/exceptions/rpc-base.exception.js.map +1 -0
  96. package/src/exceptions/rpc-conflict.exception.d.ts +4 -0
  97. package/src/exceptions/rpc-conflict.exception.js +19 -0
  98. package/src/exceptions/rpc-conflict.exception.js.map +1 -0
  99. package/src/exceptions/rpc-internal-server-error.exception.d.ts +4 -0
  100. package/src/exceptions/rpc-internal-server-error.exception.js +19 -0
  101. package/src/exceptions/rpc-internal-server-error.exception.js.map +1 -0
  102. package/src/exceptions/rpc-method-not-allowed.exception.d.ts +4 -0
  103. package/src/exceptions/rpc-method-not-allowed.exception.js +19 -0
  104. package/src/exceptions/rpc-method-not-allowed.exception.js.map +1 -0
  105. package/src/exceptions/rpc-not-found.exception.d.ts +4 -0
  106. package/src/exceptions/rpc-not-found.exception.js +19 -0
  107. package/src/exceptions/rpc-not-found.exception.js.map +1 -0
  108. package/src/exceptions/rpc-not-implemented.exception.d.ts +4 -0
  109. package/src/exceptions/rpc-not-implemented.exception.js +19 -0
  110. package/src/exceptions/rpc-not-implemented.exception.js.map +1 -0
  111. package/src/exceptions/rpc-unauthorized.exception.d.ts +4 -0
  112. package/src/exceptions/rpc-unauthorized.exception.js +19 -0
  113. package/src/exceptions/rpc-unauthorized.exception.js.map +1 -0
  114. package/src/filters/error-to-rpc-exception.filter.d.ts +4 -0
  115. package/src/filters/error-to-rpc-exception.filter.js +48 -0
  116. package/src/filters/error-to-rpc-exception.filter.js.map +1 -0
  117. package/src/filters/error-to-ws-exception.filter.d.ts +4 -0
  118. package/src/filters/error-to-ws-exception.filter.js +47 -0
  119. package/src/filters/error-to-ws-exception.filter.js.map +1 -0
  120. package/src/filters/typeorm-exception.filter.d.ts +6 -0
  121. package/src/filters/typeorm-exception.filter.js +44 -0
  122. package/src/filters/typeorm-exception.filter.js.map +1 -0
  123. package/src/filters/ws-exception.filter.d.ts +5 -0
  124. package/src/filters/ws-exception.filter.js +39 -0
  125. package/src/filters/ws-exception.filter.js.map +1 -0
  126. package/src/generate-metadata.d.ts +10 -0
  127. package/src/generate-metadata.js +97 -0
  128. package/src/generate-metadata.js.map +1 -0
  129. package/src/guards/auth.guard.d.ts +14 -0
  130. package/src/guards/auth.guard.js +92 -0
  131. package/src/guards/auth.guard.js.map +1 -0
  132. package/src/modules/basic/basic.controller.d.ts +3 -0
  133. package/src/modules/basic/basic.controller.js +33 -0
  134. package/src/modules/basic/basic.controller.js.map +1 -0
  135. package/src/modules/basic/basic.module.d.ts +2 -0
  136. package/src/modules/basic/basic.module.js +45 -0
  137. package/src/modules/basic/basic.module.js.map +1 -0
  138. package/src/modules/basic/basic.service.d.ts +2 -0
  139. package/src/modules/basic/basic.service.js +24 -0
  140. package/src/modules/basic/basic.service.js.map +1 -0
  141. package/src/nest-swagger-metadata.js +553 -0
  142. package/src/nest-swagger-metadata.js.map +1 -0
  143. package/src/utils/logger.d.ts +2 -0
  144. package/src/utils/logger.js +14 -0
  145. package/src/utils/logger.js.map +1 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TypeORMExceptionFilter", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TypeORMExceptionFilter;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _typeorm = require("typeorm");
13
+ const _rxjs = require("rxjs");
14
+ function _ts_decorate(decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ }
20
+ let TypeORMExceptionFilter = class TypeORMExceptionFilter {
21
+ catch(exception, _host) {
22
+ if (process.env.NODE_ENV === 'development') {
23
+ let logger = new _common.Logger('TypeORM');
24
+ logger.debug(exception);
25
+ }
26
+ return (0, _rxjs.throwError)(()=>({
27
+ statusCode: // if the error is "duplicate keys", set the status code to 409 conflict
28
+ // otherwise, set it to 400 bad request
29
+ exception.code === '23505' ? _common.HttpStatus.CONFLICT : _common.HttpStatus.BAD_REQUEST,
30
+ // example:
31
+ // message: duplicate key value violates unique constraint "UQ_8e1f623798118e629b46a9e6299"
32
+ // detail: Key (phone)=(+12345678900) already exists.
33
+ message: `${exception.message}${exception.detail ? `, ${exception.detail}` : ''}`,
34
+ query: exception.query,
35
+ parameters: exception.parameters,
36
+ code: exception.code
37
+ }));
38
+ }
39
+ };
40
+ TypeORMExceptionFilter = _ts_decorate([
41
+ (0, _common.Catch)(_typeorm.TypeORMError)
42
+ ], TypeORMExceptionFilter);
43
+
44
+ //# sourceMappingURL=typeorm-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/filters/typeorm-exception.filter.ts"],"sourcesContent":["import {\n type ArgumentsHost,\n Catch,\n type ExceptionFilter,\n HttpStatus,\n Logger,\n} from '@nestjs/common';\nimport { QueryFailedError, TypeORMError } from 'typeorm';\nimport { Observable, throwError } from 'rxjs';\n\n// todo: rename file to typeorm-exception.filter.ts\n@Catch(TypeORMError)\nexport class TypeORMExceptionFilter implements ExceptionFilter<TypeORMError> {\n catch(exception: TypeORMError, _host: ArgumentsHost): Observable<any> {\n if (process.env.NODE_ENV === 'development') {\n let logger = new Logger('TypeORM');\n logger.debug(exception);\n }\n\n return throwError(() => ({\n statusCode:\n // if the error is \"duplicate keys\", set the status code to 409 conflict\n // otherwise, set it to 400 bad request\n (<any>exception).code === '23505'\n ? HttpStatus.CONFLICT\n : HttpStatus.BAD_REQUEST,\n // example:\n // message: duplicate key value violates unique constraint \"UQ_8e1f623798118e629b46a9e6299\"\n // detail: Key (phone)=(+12345678900) already exists.\n message: `${exception.message}${(<any>exception).detail ? `, ${(<any>exception).detail}` : ''}`,\n query: (<QueryFailedError>exception).query,\n parameters: (<QueryFailedError>exception).parameters,\n code: (<any>exception).code,\n }));\n }\n}\n"],"names":["TypeORMExceptionFilter","catch","exception","_host","process","env","NODE_ENV","logger","Logger","debug","throwError","statusCode","code","HttpStatus","CONFLICT","BAD_REQUEST","message","detail","query","parameters"],"mappings":";;;;+BAYaA;;;eAAAA;;;wBANN;yBACwC;sBACR;;;;;;;AAIhC,IAAA,AAAMA,yBAAN,MAAMA;IACXC,MAAMC,SAAuB,EAAEC,KAAoB,EAAmB;QACpE,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;YAC1C,IAAIC,SAAS,IAAIC,cAAM,CAAC;YACxBD,OAAOE,KAAK,CAACP;QACf;QAEA,OAAOQ,IAAAA,gBAAU,EAAC,IAAO,CAAA;gBACvBC,YAGE,AAFA,wEAAwE;gBACxE,uCAAuC;gBACjCT,UAAWU,IAAI,KAAK,UACtBC,kBAAU,CAACC,QAAQ,GACnBD,kBAAU,CAACE,WAAW;gBAC5B,WAAW;gBACX,2FAA2F;gBAC3F,qDAAqD;gBACrDC,SAAS,GAAGd,UAAUc,OAAO,GAAG,AAAMd,UAAWe,MAAM,GAAG,CAAC,EAAE,EAAE,AAAMf,UAAWe,MAAM,EAAE,GAAG,IAAI;gBAC/FC,OAAO,AAAmBhB,UAAWgB,KAAK;gBAC1CC,YAAY,AAAmBjB,UAAWiB,UAAU;gBACpDP,MAAM,AAAMV,UAAWU,IAAI;YAC7B,CAAA;IACF;AACF"}
@@ -0,0 +1,5 @@
1
+ import { type ArgumentsHost, type WsExceptionFilter } from '@nestjs/common';
2
+ import { WsException } from '@nestjs/websockets';
3
+ export declare class WebSocketExceptionFilter implements WsExceptionFilter {
4
+ catch(exception: WsException, host: ArgumentsHost): void;
5
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "WebSocketExceptionFilter", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return WebSocketExceptionFilter;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _websockets = require("@nestjs/websockets");
13
+ function _ts_decorate(decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ }
19
+ let WebSocketExceptionFilter = class WebSocketExceptionFilter {
20
+ catch(exception, host) {
21
+ let ctx = host.switchToWs(), client = ctx.getClient(), pattern = ctx.getPattern(), data = ctx.getData();
22
+ client.emit('exception', {
23
+ pattern,
24
+ message: exception.message,
25
+ data
26
+ });
27
+ if (process.env.NODE_ENV === 'development') {
28
+ let logger = new _common.Logger(`WebSocket @${pattern}`);
29
+ logger.debug(`WS Error in ${pattern}`, exception, {
30
+ data
31
+ });
32
+ }
33
+ }
34
+ };
35
+ WebSocketExceptionFilter = _ts_decorate([
36
+ (0, _common.Catch)(_websockets.WsException)
37
+ ], WebSocketExceptionFilter);
38
+
39
+ //# sourceMappingURL=ws-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/filters/ws-exception.filter.ts"],"sourcesContent":["import {\n type ArgumentsHost,\n Catch,\n Logger,\n type WsExceptionFilter,\n} from '@nestjs/common';\nimport { WsException } from '@nestjs/websockets';\n@Catch(WsException)\nexport class WebSocketExceptionFilter implements WsExceptionFilter {\n catch(exception: WsException, host: ArgumentsHost) {\n let ctx = host.switchToWs(),\n client = ctx.getClient(),\n pattern = ctx.getPattern(),\n data = ctx.getData();\n\n client.emit('exception', {\n pattern,\n message: exception.message,\n data,\n });\n\n if (process.env.NODE_ENV === 'development') {\n let logger = new Logger(`WebSocket @${pattern}`);\n logger.debug(`WS Error in ${pattern}`, exception, {\n data,\n });\n }\n }\n}\n"],"names":["WebSocketExceptionFilter","catch","exception","host","ctx","switchToWs","client","getClient","pattern","getPattern","data","getData","emit","message","process","env","NODE_ENV","logger","Logger","debug"],"mappings":";;;;+BAQaA;;;eAAAA;;;wBAHN;4BACqB;;;;;;;AAErB,IAAA,AAAMA,2BAAN,MAAMA;IACXC,MAAMC,SAAsB,EAAEC,IAAmB,EAAE;QACjD,IAAIC,MAAMD,KAAKE,UAAU,IACvBC,SAASF,IAAIG,SAAS,IACtBC,UAAUJ,IAAIK,UAAU,IACxBC,OAAON,IAAIO,OAAO;QAEpBL,OAAOM,IAAI,CAAC,aAAa;YACvBJ;YACAK,SAASX,UAAUW,OAAO;YAC1BH;QACF;QAEA,IAAII,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;YAC1C,IAAIC,SAAS,IAAIC,cAAM,CAAC,CAAC,WAAW,EAAEV,SAAS;YAC/CS,OAAOE,KAAK,CAAC,CAAC,YAAY,EAAEX,SAAS,EAAEN,WAAW;gBAChDQ;YACF;QACF;IACF;AACF"}
@@ -0,0 +1,10 @@
1
+ import { type PluginMetadataGenerateOptions } from '@nestjs/cli/lib/compiler/plugins/plugin-metadata-generator';
2
+ import { ReadonlyVisitor } from '@nestjs/swagger/dist/plugin';
3
+ import type { PluginOptions } from '@nestjs/swagger/dist/plugin/merge-options';
4
+ export interface SwaggerMetadataOptions extends Omit<PluginMetadataGenerateOptions, 'visitors'> {
5
+ visitors?: ReadonlyVisitor[];
6
+ visitorOptions?: PluginOptions;
7
+ transform?: (metadata: string) => string;
8
+ }
9
+ export declare function generateSwaggerMetadata(options: SwaggerMetadataOptions): string;
10
+ export declare function loadSwaggerMetadata(file?: string): Promise<void>;
@@ -0,0 +1,97 @@
1
+ // todo: rename file to swagger-metadata.ts
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
+ });
11
+ }
12
+ _export(exports, {
13
+ get generateSwaggerMetadata () {
14
+ return generateSwaggerMetadata;
15
+ },
16
+ get loadSwaggerMetadata () {
17
+ return loadSwaggerMetadata;
18
+ }
19
+ });
20
+ const _pluginmetadatagenerator = require("@nestjs/cli/lib/compiler/plugins/plugin-metadata-generator");
21
+ const _plugin = require("@nestjs/swagger/dist/plugin");
22
+ const _nodefs = require("node:fs");
23
+ const _nodepath = require("node:path");
24
+ const _swagger = require("@nestjs/swagger");
25
+ function _getRequireWildcardCache(nodeInterop) {
26
+ if (typeof WeakMap !== "function") return null;
27
+ var cacheBabelInterop = new WeakMap();
28
+ var cacheNodeInterop = new WeakMap();
29
+ return (_getRequireWildcardCache = function(nodeInterop) {
30
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
31
+ })(nodeInterop);
32
+ }
33
+ function _interop_require_wildcard(obj, nodeInterop) {
34
+ if (!nodeInterop && obj && obj.__esModule) {
35
+ return obj;
36
+ }
37
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
38
+ return {
39
+ default: obj
40
+ };
41
+ }
42
+ var cache = _getRequireWildcardCache(nodeInterop);
43
+ if (cache && cache.has(obj)) {
44
+ return cache.get(obj);
45
+ }
46
+ var newObj = {
47
+ __proto__: null
48
+ };
49
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
+ for(var key in obj){
51
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
52
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
53
+ if (desc && (desc.get || desc.set)) {
54
+ Object.defineProperty(newObj, key, desc);
55
+ } else {
56
+ newObj[key] = obj[key];
57
+ }
58
+ }
59
+ }
60
+ newObj.default = obj;
61
+ if (cache) {
62
+ cache.set(obj, newObj);
63
+ }
64
+ return newObj;
65
+ }
66
+ function generateSwaggerMetadata(options) {
67
+ let generateOptions = {
68
+ filename: 'nest-swagger-metadata.js',
69
+ watch: false,
70
+ // ~ if this function is called in runtime, tsconfig must be copied into dist
71
+ tsconfigPath: './tsconfig.json',
72
+ visitors: options.visitors || [
73
+ new _plugin.ReadonlyVisitor({
74
+ introspectComments: true,
75
+ classValidatorShim: true,
76
+ pathToSource: options.outputDir,
77
+ ...options.visitorOptions
78
+ })
79
+ ],
80
+ ...options
81
+ };
82
+ let generator = new _pluginmetadatagenerator.PluginMetadataGenerator(), outFile = (0, _nodepath.resolve)(`${generateOptions.outputDir}/${generateOptions.filename}`);
83
+ if ((0, _nodefs.existsSync)(outFile)) (0, _nodefs.unlinkSync)(outFile);
84
+ generator.generate(generateOptions);
85
+ if (options.transform && (0, _nodefs.existsSync)(outFile)) {
86
+ let content = (0, _nodefs.readFileSync)(outFile, 'utf8');
87
+ (0, _nodefs.writeFileSync)(outFile, options.transform(content));
88
+ }
89
+ return outFile;
90
+ }
91
+ function loadSwaggerMetadata(file = './nest-swagger-metadata') {
92
+ return Promise.resolve(file).then((p)=>/*#__PURE__*/ _interop_require_wildcard(require(p))).catch(()=>{
93
+ throw new Error('Swagger metadata is not generated');
94
+ }).then((m)=>m.default).then((metadataFn)=>_swagger.SwaggerModule.loadPluginMetadata(metadataFn));
95
+ }
96
+
97
+ //# sourceMappingURL=generate-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/generate-metadata.ts"],"sourcesContent":["// todo: rename file to swagger-metadata.ts\nimport {\n type PluginMetadataGenerateOptions,\n PluginMetadataGenerator,\n} from '@nestjs/cli/lib/compiler/plugins/plugin-metadata-generator';\nimport { ReadonlyVisitor } from '@nestjs/swagger/dist/plugin';\nimport type { PluginOptions } from '@nestjs/swagger/dist/plugin/merge-options';\nimport { existsSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { SwaggerModule } from '@nestjs/swagger';\n\n/**\n * generate the metadata required for Swagger docs\n * when building the app with SWC, the metadata is not generated automatically\n * causing the docs don't appear in Swagger UI\n *\n * https://docs.nestjs.com/recipes/swc#monorepo-and-cli-plugins\n * @example generate the metadata in build time, add a \"prebuild\" script that calls generateSwaggerMetadata()\n * @example generate the metadata in runtime\n * src/main.ts\n * ```\n * import { generateSwaggerMetadata } from `@impactor/nestjs`\n * generateSwaggerMetadata({...})\n * loadSwaggerMetadata()\n * ```\n * @returns the generated file path\n */\nexport interface SwaggerMetadataOptions extends Omit<\n PluginMetadataGenerateOptions,\n 'visitors'\n> {\n visitors?: ReadonlyVisitor[];\n visitorOptions?: PluginOptions;\n /**\n * a function that transforms the generated metadata\n * @param metadata\n * @returns\n */\n transform?: (metadata: string) => string;\n}\n\nexport function generateSwaggerMetadata(options: SwaggerMetadataOptions) {\n let generateOptions: PluginMetadataGenerateOptions = {\n filename: 'nest-swagger-metadata.js',\n watch: false,\n // ~ if this function is called in runtime, tsconfig must be copied into dist\n tsconfigPath: './tsconfig.json',\n visitors: options.visitors || [\n new ReadonlyVisitor({\n introspectComments: true,\n classValidatorShim: true,\n pathToSource: options.outputDir,\n ...options.visitorOptions,\n }),\n ],\n ...options,\n };\n\n let generator = new PluginMetadataGenerator(),\n outFile = resolve(\n `${generateOptions.outputDir}/${generateOptions.filename}`,\n );\n\n if (existsSync(outFile)) unlinkSync(outFile);\n generator.generate(generateOptions);\n\n if (options.transform && existsSync(outFile)) {\n let content = readFileSync(outFile, 'utf8');\n writeFileSync(outFile, options.transform(content));\n }\n return outFile;\n}\n\n/**\n * Load the metadata that is generated by generateSwaggerMetadata()\n * @param file the generated metadata file\n */\nexport function loadSwaggerMetadata(file = './nest-swagger-metadata') {\n return import(file)\n .catch(() => {\n throw new Error('Swagger metadata is not generated');\n })\n .then((m) => m.default)\n .then((metadataFn) => SwaggerModule.loadPluginMetadata(metadataFn));\n}\n"],"names":["generateSwaggerMetadata","loadSwaggerMetadata","options","generateOptions","filename","watch","tsconfigPath","visitors","ReadonlyVisitor","introspectComments","classValidatorShim","pathToSource","outputDir","visitorOptions","generator","PluginMetadataGenerator","outFile","resolve","existsSync","unlinkSync","generate","transform","content","readFileSync","writeFileSync","file","catch","Error","then","m","default","metadataFn","SwaggerModule","loadPluginMetadata"],"mappings":"AAAA,2CAA2C;;;;;;;;;;;;QAyC3BA;eAAAA;;QAoCAC;eAAAA;;;yCAzET;wBACyB;wBAEoC;0BAC5C;yBACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCvB,SAASD,wBAAwBE,OAA+B;IACrE,IAAIC,kBAAiD;QACnDC,UAAU;QACVC,OAAO;QACP,6EAA6E;QAC7EC,cAAc;QACdC,UAAUL,QAAQK,QAAQ,IAAI;YAC5B,IAAIC,uBAAe,CAAC;gBAClBC,oBAAoB;gBACpBC,oBAAoB;gBACpBC,cAAcT,QAAQU,SAAS;gBAC/B,GAAGV,QAAQW,cAAc;YAC3B;SACD;QACD,GAAGX,OAAO;IACZ;IAEA,IAAIY,YAAY,IAAIC,gDAAuB,IACzCC,UAAUC,IAAAA,iBAAO,EACf,GAAGd,gBAAgBS,SAAS,CAAC,CAAC,EAAET,gBAAgBC,QAAQ,EAAE;IAG9D,IAAIc,IAAAA,kBAAU,EAACF,UAAUG,IAAAA,kBAAU,EAACH;IACpCF,UAAUM,QAAQ,CAACjB;IAEnB,IAAID,QAAQmB,SAAS,IAAIH,IAAAA,kBAAU,EAACF,UAAU;QAC5C,IAAIM,UAAUC,IAAAA,oBAAY,EAACP,SAAS;QACpCQ,IAAAA,qBAAa,EAACR,SAASd,QAAQmB,SAAS,CAACC;IAC3C;IACA,OAAON;AACT;AAMO,SAASf,oBAAoBwB,OAAO,yBAAyB;IAClE,OAAO,gBAAOA,wDAAP,aACJC,KAAK,CAAC;QACL,MAAM,IAAIC,MAAM;IAClB,GACCC,IAAI,CAAC,CAACC,IAAMA,EAAEC,OAAO,EACrBF,IAAI,CAAC,CAACG,aAAeC,sBAAa,CAACC,kBAAkB,CAACF;AAC3D"}
@@ -0,0 +1,14 @@
1
+ import { ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ export declare const Public: () => import("@nestjs/common").CustomDecorator<string>;
4
+ export declare const Private: () => import("@nestjs/common").CustomDecorator<string>;
5
+ export declare const Roles: (...roles: any[]) => import("@nestjs/common").CustomDecorator<string>;
6
+ export declare const Own: (field?: string | false) => import("@nestjs/common").CustomDecorator<string>;
7
+ declare const JwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
8
+ export declare class JwtAuthGuard extends JwtAuthGuard_base {
9
+ private reflector;
10
+ constructor(reflector: Reflector);
11
+ canActivate(context: ExecutionContext): Promise<any>;
12
+ handleRequest<UserEntity>(err: Error, user: UserEntity, _info: any): NonNullable<UserEntity>;
13
+ }
14
+ export {};
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get JwtAuthGuard () {
13
+ return JwtAuthGuard;
14
+ },
15
+ get Own () {
16
+ return Own;
17
+ },
18
+ get Private () {
19
+ return Private;
20
+ },
21
+ get Public () {
22
+ return Public;
23
+ },
24
+ get Roles () {
25
+ return Roles;
26
+ }
27
+ });
28
+ const _common = require("@nestjs/common");
29
+ const _core = require("@nestjs/core");
30
+ const _passport = require("@nestjs/passport");
31
+ function _ts_decorate(decorators, target, key, desc) {
32
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
35
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
36
+ }
37
+ function _ts_metadata(k, v) {
38
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
39
+ }
40
+ const Public = ()=>(0, _common.SetMetadata)('isPublic', true);
41
+ const Private = ()=>(0, _common.SetMetadata)('isPublic', false);
42
+ const Roles = (...roles)=>(0, _common.SetMetadata)('roles', roles);
43
+ const Own = (field = 'user')=>(0, _common.SetMetadata)('own', field);
44
+ let JwtAuthGuard = class JwtAuthGuard extends (0, _passport.AuthGuard)([
45
+ 'jwt'
46
+ ]) {
47
+ async canActivate(context) {
48
+ try {
49
+ // call canActivate() first to allow passport to set `req.user` for the logged in users
50
+ // and call handleRequest()
51
+ await super.canActivate(context);
52
+ } catch {
53
+ // allow non-logged in users to access public resources
54
+ let isPublic = this.reflector.getAllAndOverride('isPublic', [
55
+ context.getHandler(),
56
+ context.getClass()
57
+ ]);
58
+ return isPublic;
59
+ }
60
+ // check user roles
61
+ let roles = this.reflector.getAllAndOverride('roles', [
62
+ context.getClass(),
63
+ context.getHandler()
64
+ ]);
65
+ // if no role provided, then the resource access is not limited
66
+ if (!roles?.length) {
67
+ return true;
68
+ }
69
+ let req = context.switchToHttp().getRequest(), user = req.user;
70
+ return roles.includes(user?.role);
71
+ }
72
+ handleRequest(err, user, _info) {
73
+ if (err || !user) {
74
+ throw err || new _common.UnauthorizedException();
75
+ }
76
+ return user;
77
+ }
78
+ // todo: DI is not working here, so `this.reflector` is undefined
79
+ // https://github.com/its-dibo/dibo/issues/582
80
+ constructor(reflector){
81
+ super(), this.reflector = reflector;
82
+ }
83
+ };
84
+ JwtAuthGuard = _ts_decorate([
85
+ (0, _common.Injectable)(),
86
+ _ts_metadata("design:type", Function),
87
+ _ts_metadata("design:paramtypes", [
88
+ typeof _core.Reflector === "undefined" ? Object : _core.Reflector
89
+ ])
90
+ ], JwtAuthGuard);
91
+
92
+ //# sourceMappingURL=auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/guards/auth.guard.ts"],"sourcesContent":["import {\n ExecutionContext,\n Injectable,\n SetMetadata,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { Reflector } from '@nestjs/core';\nimport { AuthGuard } from '@nestjs/passport';\n\n/**\n * attach this decorator to public endpoints to exclude them from the auth guard\n * @example `@public() getPublicResource(){}`\n */\nexport const Public = () => SetMetadata('isPublic', true);\n/** use this decorator to remove the `@Public` mark from a route */\nexport const Private = () => SetMetadata('isPublic', false);\n\n/**\n * only provided roles can access the endpoint\n * the guard for each endpoint overrides the controller's guard\n *\n * @example @Roles('admin', 'moderator') -> user's that has role===\"admin\" can access\n *\n */\n// or use @SetMetadata('roles', values)\nexport const Roles = (...roles: any[]) => SetMetadata('roles', roles);\n\n/**\n * every user can access only his own data,\n * except the system admin who can access any data in this endpoint\n *\n * for example, if `@Own('author')` is set before `findAll()` it converted into `findAll({author: userId})`\n * to limit the results for data that he owns\n *\n * to disable this guard for a specific endpoint, i.e. to bypass the controller's value use `@Own(false)`\n *\n * @example @Own('user')\n *\n * @param field the field name that specify the document owner in the database, default=user.\n * if set to false, it disables the guard\n */\n// todo: @Limit('criteria' | {field: value})\n// todo: create an interceptor to add this condition to the controller's handler\n// todo: @Own(field, excludeRoles=['admin'])\nexport const Own = (field: string | false = 'user') =>\n SetMetadata('own', field);\n\n/**\n * a guard that limits the access to the authenticated users\n * or specific roles that are provided by @Roles()\n * only the users that have one of the provided roles can access the resource\n * to allow public access use `@public()`\n *\n * @example\n * @Get()\n * // limit the access to admins only\n * @Roles('admin', 'moderator')\n * findAll(){ return this.service.getAll(); }\n *\n * @Get()\n * // enable public access\n * @Public()\n * findAll(){ return this.service.getAll(); }\n *\n * @Get()\n * // allow the logged in users only to access the route\n * // by not providing any annotation\n * findAll(){ return this.service.getAll(); }\n */\n@Injectable()\nexport class JwtAuthGuard extends AuthGuard(['jwt']) {\n // todo: DI is not working here, so `this.reflector` is undefined\n // https://github.com/its-dibo/dibo/issues/582\n constructor(private reflector: Reflector) {\n super();\n }\n\n async canActivate(context: ExecutionContext) {\n try {\n // call canActivate() first to allow passport to set `req.user` for the logged in users\n // and call handleRequest()\n await super.canActivate(context);\n } catch {\n // allow non-logged in users to access public resources\n let isPublic = this.reflector.getAllAndOverride<boolean>('isPublic', [\n context.getHandler(),\n context.getClass(),\n ]);\n return isPublic;\n }\n\n // check user roles\n let roles = this.reflector.getAllAndOverride('roles', [\n context.getClass(),\n context.getHandler(),\n ]);\n\n // if no role provided, then the resource access is not limited\n if (!roles?.length) {\n return true;\n }\n\n let req = context.switchToHttp().getRequest(),\n user = req.user;\n return roles.includes(user?.role);\n }\n\n handleRequest<UserEntity>(err: Error, user: UserEntity, _info: any) {\n if (err || !user) {\n throw err || new UnauthorizedException();\n }\n return user;\n }\n}\n"],"names":["JwtAuthGuard","Own","Private","Public","Roles","SetMetadata","roles","field","AuthGuard","canActivate","context","isPublic","reflector","getAllAndOverride","getHandler","getClass","length","req","switchToHttp","getRequest","user","includes","role","handleRequest","err","_info","UnauthorizedException"],"mappings":";;;;;;;;;;;QAsEaA;eAAAA;;QA1BAC;eAAAA;;QA7BAC;eAAAA;;QAFAC;eAAAA;;QAYAC;eAAAA;;;wBApBN;sBACmB;0BACA;;;;;;;;;;AAMnB,MAAMD,SAAS,IAAME,IAAAA,mBAAW,EAAC,YAAY;AAE7C,MAAMH,UAAU,IAAMG,IAAAA,mBAAW,EAAC,YAAY;AAU9C,MAAMD,QAAQ,CAAC,GAAGE,QAAiBD,IAAAA,mBAAW,EAAC,SAASC;AAmBxD,MAAML,MAAM,CAACM,QAAwB,MAAM,GAChDF,IAAAA,mBAAW,EAAC,OAAOE;AAyBd,IAAA,AAAMP,eAAN,MAAMA,qBAAqBQ,IAAAA,mBAAS,EAAC;IAAC;CAAM;IAOjD,MAAMC,YAAYC,OAAyB,EAAE;QAC3C,IAAI;YACF,uFAAuF;YACvF,2BAA2B;YAC3B,MAAM,KAAK,CAACD,YAAYC;QAC1B,EAAE,OAAM;YACN,uDAAuD;YACvD,IAAIC,WAAW,IAAI,CAACC,SAAS,CAACC,iBAAiB,CAAU,YAAY;gBACnEH,QAAQI,UAAU;gBAClBJ,QAAQK,QAAQ;aACjB;YACD,OAAOJ;QACT;QAEA,mBAAmB;QACnB,IAAIL,QAAQ,IAAI,CAACM,SAAS,CAACC,iBAAiB,CAAC,SAAS;YACpDH,QAAQK,QAAQ;YAChBL,QAAQI,UAAU;SACnB;QAED,+DAA+D;QAC/D,IAAI,CAACR,OAAOU,QAAQ;YAClB,OAAO;QACT;QAEA,IAAIC,MAAMP,QAAQQ,YAAY,GAAGC,UAAU,IACzCC,OAAOH,IAAIG,IAAI;QACjB,OAAOd,MAAMe,QAAQ,CAACD,MAAME;IAC9B;IAEAC,cAA0BC,GAAU,EAAEJ,IAAgB,EAAEK,KAAU,EAAE;QAClE,IAAID,OAAO,CAACJ,MAAM;YAChB,MAAMI,OAAO,IAAIE,6BAAqB;QACxC;QACA,OAAON;IACT;IAzCA,iEAAiE;IACjE,8CAA8C;IAC9C,YAAY,AAAQR,SAAoB,CAAE;QACxC,KAAK,SADaA,YAAAA;IAEpB;AAsCF"}
@@ -0,0 +1,3 @@
1
+ export declare class BasicController {
2
+ healthCheck(): void;
3
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "BasicController", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return BasicController;
9
+ }
10
+ });
11
+ const _authguard = require("../../guards/auth.guard");
12
+ const _common = require("@nestjs/common");
13
+ function _ts_decorate(decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ }
19
+ let BasicController = class BasicController {
20
+ // http decorators like `@Get()` causes error:
21
+ // Reflect.defineMetadata(constants_1.PATH_METADATA, path, descriptor.value);
22
+ // https://github.com/its-dibo/dibo/issues/547
23
+ // @Get()
24
+ // @HttpCode(204)
25
+ // @Version(VERSION_NEUTRAL)
26
+ healthCheck() {}
27
+ };
28
+ BasicController = _ts_decorate([
29
+ (0, _common.Controller)(),
30
+ (0, _authguard.Public)()
31
+ ], BasicController);
32
+
33
+ //# sourceMappingURL=basic.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/basic/basic.controller.ts"],"sourcesContent":["import { Public } from '../../guards/auth.guard';\nimport {\n Controller,\n // Get,\n // HttpCode,\n // VERSION_NEUTRAL,\n // Version,\n} from '@nestjs/common';\n\n@Controller()\n@Public()\nexport class BasicController {\n // http decorators like `@Get()` causes error:\n // Reflect.defineMetadata(constants_1.PATH_METADATA, path, descriptor.value);\n // https://github.com/its-dibo/dibo/issues/547\n\n // @Get()\n // @HttpCode(204)\n // @Version(VERSION_NEUTRAL)\n healthCheck(): void {}\n}\n"],"names":["BasicController","healthCheck"],"mappings":";;;;+BAWaA;;;eAAAA;;;2BAXU;wBAOhB;;;;;;;AAIA,IAAA,AAAMA,kBAAN,MAAMA;IACX,8CAA8C;IAC9C,6EAA6E;IAC7E,8CAA8C;IAE9C,SAAS;IACT,iBAAiB;IACjB,4BAA4B;IAC5BC,cAAoB,CAAC;AACvB"}
@@ -0,0 +1,2 @@
1
+ export declare class BasicModule {
2
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "BasicModule", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return BasicModule;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ const _core = require("@nestjs/core");
13
+ const _basiccontroller = require("./basic.controller");
14
+ const _basicservice = require("./basic.service");
15
+ const _authguard = require("../../guards/auth.guard");
16
+ function _ts_decorate(decorators, target, key, desc) {
17
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
18
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
21
+ }
22
+ let BasicModule = class BasicModule {
23
+ };
24
+ BasicModule = _ts_decorate([
25
+ (0, _common.Module)({
26
+ imports: [],
27
+ controllers: [
28
+ _basiccontroller.BasicController
29
+ ],
30
+ providers: [
31
+ _basicservice.BasicService,
32
+ {
33
+ // use JWT auth guard globally to protect all routes
34
+ // unless a route is marked as public by `@Public()` decorator
35
+ provide: _core.APP_GUARD,
36
+ useClass: _authguard.JwtAuthGuard
37
+ }
38
+ ],
39
+ exports: [
40
+ _basicservice.BasicService
41
+ ]
42
+ })
43
+ ], BasicModule);
44
+
45
+ //# sourceMappingURL=basic.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/basic/basic.module.ts"],"sourcesContent":["import { Module } from '@nestjs/common';\nimport { APP_GUARD } from '@nestjs/core';\nimport { BasicController } from './basic.controller';\nimport { BasicService } from './basic.service';\n// todo: use alias paths\n// not works when building an app that depends on this package\nimport { JwtAuthGuard } from '../../guards/auth.guard';\n\n@Module({\n imports: [],\n controllers: [BasicController],\n providers: [\n BasicService,\n {\n // use JWT auth guard globally to protect all routes\n // unless a route is marked as public by `@Public()` decorator\n provide: APP_GUARD,\n useClass: JwtAuthGuard,\n },\n ],\n exports: [BasicService],\n})\nexport class BasicModule {}\n"],"names":["BasicModule","imports","controllers","BasicController","providers","BasicService","provide","APP_GUARD","useClass","JwtAuthGuard","exports"],"mappings":";;;;+BAsBaA;;;eAAAA;;;wBAtBU;sBACG;iCACM;8BACH;2BAGA;;;;;;;AAgBtB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QAbxBC,SAAS,EAAE;QACXC,aAAa;YAACC,gCAAe;SAAC;QAC9BC,WAAW;YACTC,0BAAY;YACZ;gBACE,oDAAoD;gBACpD,8DAA8D;gBAC9DC,SAASC,eAAS;gBAClBC,UAAUC,uBAAY;YACxB;SACD;QACDC,SAAS;YAACL,0BAAY;SAAC"}
@@ -0,0 +1,2 @@
1
+ export declare class BasicService {
2
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "BasicService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return BasicService;
9
+ }
10
+ });
11
+ const _common = require("@nestjs/common");
12
+ function _ts_decorate(decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ }
18
+ let BasicService = class BasicService {
19
+ };
20
+ BasicService = _ts_decorate([
21
+ (0, _common.Injectable)()
22
+ ], BasicService);
23
+
24
+ //# sourceMappingURL=basic.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/basic/basic.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class BasicService {}\n"],"names":["BasicService"],"mappings":";;;;+BAGaA;;;eAAAA;;;wBAHc;;;;;;;AAGpB,IAAA,AAAMA,eAAN,MAAMA;AAAc"}