yingzios-platform-backend-shared 1.0.1

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 (194) hide show
  1. package/README.md +51 -0
  2. package/dist/apollo/apollo.config.d.ts +26 -0
  3. package/dist/apollo/apollo.config.d.ts.map +1 -0
  4. package/dist/apollo/apollo.config.js +2 -0
  5. package/dist/apollo/apollo.module.d.ts +13 -0
  6. package/dist/apollo/apollo.module.d.ts.map +1 -0
  7. package/dist/apollo/apollo.module.js +61 -0
  8. package/dist/apollo/apollo.service.d.ts +17 -0
  9. package/dist/apollo/apollo.service.d.ts.map +1 -0
  10. package/dist/apollo/apollo.service.js +35 -0
  11. package/dist/apollo/index.d.ts +5 -0
  12. package/dist/apollo/index.d.ts.map +1 -0
  13. package/dist/apollo/index.js +17 -0
  14. package/dist/cache/cache.config.d.ts +28 -0
  15. package/dist/cache/cache.config.d.ts.map +1 -0
  16. package/dist/cache/cache.config.js +2 -0
  17. package/dist/cache/cache.module.d.ts +39 -0
  18. package/dist/cache/cache.module.d.ts.map +1 -0
  19. package/dist/cache/cache.module.js +75 -0
  20. package/dist/cache/cache.service.d.ts +49 -0
  21. package/dist/cache/cache.service.d.ts.map +1 -0
  22. package/dist/cache/cache.service.js +208 -0
  23. package/dist/cache/index.d.ts +4 -0
  24. package/dist/cache/index.d.ts.map +1 -0
  25. package/dist/cache/index.js +19 -0
  26. package/dist/env/env-loader.d.ts +50 -0
  27. package/dist/env/env-loader.d.ts.map +1 -0
  28. package/dist/env/env-loader.js +159 -0
  29. package/dist/env/env.module.d.ts +11 -0
  30. package/dist/env/env.module.d.ts.map +1 -0
  31. package/dist/env/env.module.js +47 -0
  32. package/dist/env/env.service.d.ts +31 -0
  33. package/dist/env/env.service.d.ts.map +1 -0
  34. package/dist/env/env.service.js +195 -0
  35. package/dist/env/index.d.ts +4 -0
  36. package/dist/env/index.d.ts.map +1 -0
  37. package/dist/env/index.js +19 -0
  38. package/dist/index.d.ts +12 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +27 -0
  41. package/dist/internal-auth/decorators/caller.decorator.d.ts +29 -0
  42. package/dist/internal-auth/decorators/caller.decorator.d.ts.map +1 -0
  43. package/dist/internal-auth/decorators/caller.decorator.js +37 -0
  44. package/dist/internal-auth/decorators/index.d.ts +3 -0
  45. package/dist/internal-auth/decorators/index.d.ts.map +1 -0
  46. package/dist/internal-auth/decorators/index.js +18 -0
  47. package/dist/internal-auth/decorators/use-either-guard.decorator.d.ts +31 -0
  48. package/dist/internal-auth/decorators/use-either-guard.decorator.d.ts.map +1 -0
  49. package/dist/internal-auth/decorators/use-either-guard.decorator.js +79 -0
  50. package/dist/internal-auth/guards/index.d.ts +2 -0
  51. package/dist/internal-auth/guards/index.d.ts.map +1 -0
  52. package/dist/internal-auth/guards/index.js +17 -0
  53. package/dist/internal-auth/guards/service-key.guard.d.ts +36 -0
  54. package/dist/internal-auth/guards/service-key.guard.d.ts.map +1 -0
  55. package/dist/internal-auth/guards/service-key.guard.js +86 -0
  56. package/dist/internal-auth/index.d.ts +43 -0
  57. package/dist/internal-auth/index.d.ts.map +1 -0
  58. package/dist/internal-auth/index.js +62 -0
  59. package/dist/internal-auth/internal-auth.module.d.ts +62 -0
  60. package/dist/internal-auth/internal-auth.module.d.ts.map +1 -0
  61. package/dist/internal-auth/internal-auth.module.js +118 -0
  62. package/dist/internal-auth/internal-http.service.d.ts +72 -0
  63. package/dist/internal-auth/internal-http.service.d.ts.map +1 -0
  64. package/dist/internal-auth/internal-http.service.js +119 -0
  65. package/dist/jwt/auto-fill-user.pipe.d.ts +43 -0
  66. package/dist/jwt/auto-fill-user.pipe.d.ts.map +1 -0
  67. package/dist/jwt/auto-fill-user.pipe.js +166 -0
  68. package/dist/jwt/decorators/current-user.decorator.d.ts +37 -0
  69. package/dist/jwt/decorators/current-user.decorator.d.ts.map +1 -0
  70. package/dist/jwt/decorators/current-user.decorator.js +29 -0
  71. package/dist/jwt/decorators/public.decorator.d.ts +8 -0
  72. package/dist/jwt/decorators/public.decorator.d.ts.map +1 -0
  73. package/dist/jwt/decorators/public.decorator.js +12 -0
  74. package/dist/jwt/guards/jwt-auth.guard.d.ts +20 -0
  75. package/dist/jwt/guards/jwt-auth.guard.d.ts.map +1 -0
  76. package/dist/jwt/guards/jwt-auth.guard.js +88 -0
  77. package/dist/jwt/index.d.ts +8 -0
  78. package/dist/jwt/index.d.ts.map +1 -0
  79. package/dist/jwt/index.js +26 -0
  80. package/dist/jwt/jwt-config.service.d.ts +10 -0
  81. package/dist/jwt/jwt-config.service.d.ts.map +1 -0
  82. package/dist/jwt/jwt-config.service.js +40 -0
  83. package/dist/jwt/jwt.config.d.ts +15 -0
  84. package/dist/jwt/jwt.config.d.ts.map +1 -0
  85. package/dist/jwt/jwt.config.js +2 -0
  86. package/dist/jwt/jwt.module.d.ts +19 -0
  87. package/dist/jwt/jwt.module.d.ts.map +1 -0
  88. package/dist/jwt/jwt.module.js +100 -0
  89. package/dist/jwt/jwt.service.d.ts +31 -0
  90. package/dist/jwt/jwt.service.d.ts.map +1 -0
  91. package/dist/jwt/jwt.service.js +71 -0
  92. package/dist/jwt/strategies/jwt.strategy.d.ts +25 -0
  93. package/dist/jwt/strategies/jwt.strategy.d.ts.map +1 -0
  94. package/dist/jwt/strategies/jwt.strategy.js +150 -0
  95. package/dist/jwt/user-aware-axios.service.d.ts +17 -0
  96. package/dist/jwt/user-aware-axios.service.d.ts.map +1 -0
  97. package/dist/jwt/user-aware-axios.service.js +105 -0
  98. package/dist/jwt/utils/jwt.utils.d.ts +24 -0
  99. package/dist/jwt/utils/jwt.utils.d.ts.map +1 -0
  100. package/dist/jwt/utils/jwt.utils.js +40 -0
  101. package/dist/logger/index.d.ts +4 -0
  102. package/dist/logger/index.d.ts.map +1 -0
  103. package/dist/logger/index.js +19 -0
  104. package/dist/logger/logger.config.d.ts +41 -0
  105. package/dist/logger/logger.config.d.ts.map +1 -0
  106. package/dist/logger/logger.config.js +13 -0
  107. package/dist/logger/logger.module.d.ts +17 -0
  108. package/dist/logger/logger.module.d.ts.map +1 -0
  109. package/dist/logger/logger.module.js +49 -0
  110. package/dist/logger/logger.service.d.ts +62 -0
  111. package/dist/logger/logger.service.d.ts.map +1 -0
  112. package/dist/logger/logger.service.js +124 -0
  113. package/dist/logger/winston.config.d.ts +43 -0
  114. package/dist/logger/winston.config.d.ts.map +1 -0
  115. package/dist/logger/winston.config.js +183 -0
  116. package/dist/nacos/index.d.ts +4 -0
  117. package/dist/nacos/index.d.ts.map +1 -0
  118. package/dist/nacos/index.js +19 -0
  119. package/dist/nacos/nacos.config.d.ts +10 -0
  120. package/dist/nacos/nacos.config.d.ts.map +1 -0
  121. package/dist/nacos/nacos.config.js +2 -0
  122. package/dist/nacos/nacos.module.d.ts +9 -0
  123. package/dist/nacos/nacos.module.d.ts.map +1 -0
  124. package/dist/nacos/nacos.module.js +42 -0
  125. package/dist/nacos/nacos.service.d.ts +43 -0
  126. package/dist/nacos/nacos.service.d.ts.map +1 -0
  127. package/dist/nacos/nacos.service.js +212 -0
  128. package/dist/nacos/utils.d.ts +10 -0
  129. package/dist/nacos/utils.d.ts.map +1 -0
  130. package/dist/nacos/utils.js +65 -0
  131. package/dist/restful/current-request.util.d.ts +16 -0
  132. package/dist/restful/current-request.util.d.ts.map +1 -0
  133. package/dist/restful/current-request.util.js +34 -0
  134. package/dist/restful/http-exception.filter.d.ts +24 -0
  135. package/dist/restful/http-exception.filter.d.ts.map +1 -0
  136. package/dist/restful/http-exception.filter.js +126 -0
  137. package/dist/restful/index.d.ts +8 -0
  138. package/dist/restful/index.d.ts.map +1 -0
  139. package/dist/restful/index.js +23 -0
  140. package/dist/restful/request-context.middleware.d.ts +6 -0
  141. package/dist/restful/request-context.middleware.d.ts.map +1 -0
  142. package/dist/restful/request-context.middleware.js +25 -0
  143. package/dist/restful/response-codes.d.ts +104 -0
  144. package/dist/restful/response-codes.d.ts.map +1 -0
  145. package/dist/restful/response-codes.js +163 -0
  146. package/dist/restful/response.dto.d.ts +52 -0
  147. package/dist/restful/response.dto.d.ts.map +1 -0
  148. package/dist/restful/response.dto.js +146 -0
  149. package/dist/restful/response.interceptor.d.ts +17 -0
  150. package/dist/restful/response.interceptor.d.ts.map +1 -0
  151. package/dist/restful/response.interceptor.js +86 -0
  152. package/dist/restful/restful.module.d.ts +5 -0
  153. package/dist/restful/restful.module.d.ts.map +1 -0
  154. package/dist/restful/restful.module.js +26 -0
  155. package/dist/sequelize/index.d.ts +4 -0
  156. package/dist/sequelize/index.d.ts.map +1 -0
  157. package/dist/sequelize/index.js +19 -0
  158. package/dist/sequelize/sequelize.config.d.ts +24 -0
  159. package/dist/sequelize/sequelize.config.d.ts.map +1 -0
  160. package/dist/sequelize/sequelize.config.js +5 -0
  161. package/dist/sequelize/sequelize.module.d.ts +28 -0
  162. package/dist/sequelize/sequelize.module.d.ts.map +1 -0
  163. package/dist/sequelize/sequelize.module.js +50 -0
  164. package/dist/sequelize/sequelize.provider.d.ts +7 -0
  165. package/dist/sequelize/sequelize.provider.d.ts.map +1 -0
  166. package/dist/sequelize/sequelize.provider.js +154 -0
  167. package/dist/snowflake/index.d.ts +4 -0
  168. package/dist/snowflake/index.d.ts.map +1 -0
  169. package/dist/snowflake/index.js +19 -0
  170. package/dist/snowflake/snowflake.config.d.ts +30 -0
  171. package/dist/snowflake/snowflake.config.d.ts.map +1 -0
  172. package/dist/snowflake/snowflake.config.js +12 -0
  173. package/dist/snowflake/snowflake.module.d.ts +17 -0
  174. package/dist/snowflake/snowflake.module.d.ts.map +1 -0
  175. package/dist/snowflake/snowflake.module.js +58 -0
  176. package/dist/snowflake/snowflake.service.d.ts +21 -0
  177. package/dist/snowflake/snowflake.service.d.ts.map +1 -0
  178. package/dist/snowflake/snowflake.service.js +44 -0
  179. package/dist/swagger/index.d.ts +6 -0
  180. package/dist/swagger/index.d.ts.map +1 -0
  181. package/dist/swagger/index.js +19 -0
  182. package/dist/swagger/swagger.config.d.ts +45 -0
  183. package/dist/swagger/swagger.config.d.ts.map +1 -0
  184. package/dist/swagger/swagger.config.js +19 -0
  185. package/dist/swagger/swagger.decorators.d.ts +21 -0
  186. package/dist/swagger/swagger.decorators.d.ts.map +1 -0
  187. package/dist/swagger/swagger.decorators.js +112 -0
  188. package/dist/swagger/swagger.module.d.ts +15 -0
  189. package/dist/swagger/swagger.module.d.ts.map +1 -0
  190. package/dist/swagger/swagger.module.js +49 -0
  191. package/dist/swagger/swagger.service.d.ts +44 -0
  192. package/dist/swagger/swagger.service.d.ts.map +1 -0
  193. package/dist/swagger/swagger.service.js +202 -0
  194. package/package.json +75 -0
@@ -0,0 +1,21 @@
1
+ import { Type } from '@nestjs/common';
2
+ /**
3
+ * 用于处理 PaginatedResponseDto<T> 泛型的 Swagger 装饰器
4
+ * 解决 TypeScript 泛型在运行时丢失导致 Swagger 无法正确显示泛型类型的问题
5
+ *
6
+ * @param model 泛型类型,如 Plugin
7
+ */
8
+ export declare const ApiPaginatedResponse: <TModel extends Type<any>>(model: TModel) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
9
+ /**
10
+ * 用于处理 ApiResponseDto<T> 泛型的 Swagger 装饰器
11
+ *
12
+ * @param model 泛型类型,如 Plugin
13
+ */
14
+ export declare const ApiDataResponse: <TModel extends Type<any>>(model: TModel) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
15
+ /**
16
+ * 用于创建操作的响应装饰器
17
+ *
18
+ * @param model 泛型类型,如 Plugin
19
+ */
20
+ export declare const ApiCreatedDataResponse: <TModel extends Type<any>>(model: TModel) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
21
+ //# sourceMappingURL=swagger.decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.decorators.d.ts","sourceRoot":"","sources":["../../src/swagger/swagger.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,gBAAgB,CAAC;AAIvD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,MAAM,gJA6D3E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,MAAM,gJAgBtE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,MAAM,gJAgB7E,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiCreatedDataResponse = exports.ApiDataResponse = exports.ApiPaginatedResponse = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const response_dto_1 = require("../restful/response.dto");
7
+ /**
8
+ * 用于处理 PaginatedResponseDto<T> 泛型的 Swagger 装饰器
9
+ * 解决 TypeScript 泛型在运行时丢失导致 Swagger 无法正确显示泛型类型的问题
10
+ *
11
+ * @param model 泛型类型,如 Plugin
12
+ */
13
+ const ApiPaginatedResponse = (model) => {
14
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(model), (0, swagger_1.ApiOkResponse)({
15
+ schema: {
16
+ allOf: [
17
+ { $ref: (0, swagger_1.getSchemaPath)(response_dto_1.PaginatedResponseDto) },
18
+ {
19
+ properties: {
20
+ code: {
21
+ type: 'string',
22
+ example: '000000',
23
+ description: '响应码',
24
+ },
25
+ msg: {
26
+ type: 'string',
27
+ example: 'Success',
28
+ description: '响应消息',
29
+ },
30
+ traceId: {
31
+ type: 'string',
32
+ description: '追踪ID',
33
+ example: 'trace-id-example',
34
+ },
35
+ data: {
36
+ type: 'object',
37
+ properties: {
38
+ totalCount: {
39
+ type: 'string',
40
+ example: '100',
41
+ description: '总记录数',
42
+ },
43
+ pageSize: {
44
+ type: 'string',
45
+ example: '10',
46
+ description: '每页记录数',
47
+ },
48
+ totalPage: {
49
+ type: 'string',
50
+ example: '10',
51
+ description: '总页数',
52
+ },
53
+ currentPage: {
54
+ type: 'string',
55
+ example: '1',
56
+ description: '当前页码',
57
+ },
58
+ list: {
59
+ type: 'array',
60
+ items: { $ref: (0, swagger_1.getSchemaPath)(model) },
61
+ description: '数据列表',
62
+ },
63
+ },
64
+ description: '分页数据',
65
+ },
66
+ },
67
+ },
68
+ ],
69
+ },
70
+ }));
71
+ };
72
+ exports.ApiPaginatedResponse = ApiPaginatedResponse;
73
+ /**
74
+ * 用于处理 ApiResponseDto<T> 泛型的 Swagger 装饰器
75
+ *
76
+ * @param model 泛型类型,如 Plugin
77
+ */
78
+ const ApiDataResponse = (model) => {
79
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(response_dto_1.ApiResponseDto, model), (0, swagger_1.ApiOkResponse)({
80
+ schema: {
81
+ allOf: [
82
+ { $ref: (0, swagger_1.getSchemaPath)(response_dto_1.ApiResponseDto) },
83
+ {
84
+ properties: {
85
+ data: { $ref: (0, swagger_1.getSchemaPath)(model) },
86
+ },
87
+ },
88
+ ],
89
+ },
90
+ }));
91
+ };
92
+ exports.ApiDataResponse = ApiDataResponse;
93
+ /**
94
+ * 用于创建操作的响应装饰器
95
+ *
96
+ * @param model 泛型类型,如 Plugin
97
+ */
98
+ const ApiCreatedDataResponse = (model) => {
99
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(response_dto_1.ApiResponseDto, model), (0, swagger_1.ApiCreatedResponse)({
100
+ schema: {
101
+ allOf: [
102
+ { $ref: (0, swagger_1.getSchemaPath)(response_dto_1.ApiResponseDto) },
103
+ {
104
+ properties: {
105
+ data: { $ref: (0, swagger_1.getSchemaPath)(model) },
106
+ },
107
+ },
108
+ ],
109
+ },
110
+ }));
111
+ };
112
+ exports.ApiCreatedDataResponse = ApiCreatedDataResponse;
@@ -0,0 +1,15 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { ISwaggerConfig } from './swagger.config';
3
+ /**
4
+ * Swagger模块
5
+ * 支持 forRoot() 模式进行配置
6
+ */
7
+ export declare class SwaggerModule {
8
+ /**
9
+ * 静态方法:配置Swagger模块
10
+ * 用于根模块注册
11
+ * @param options Swagger配置选项
12
+ */
13
+ static forRoot(options?: ISwaggerConfig): DynamicModule;
14
+ }
15
+ //# sourceMappingURL=swagger.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.module.d.ts","sourceRoot":"","sources":["../../src/swagger/swagger.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAkB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE;;;GAGG;AACH,qBAEa,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa;CAoB5D"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var SwaggerModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SwaggerModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const swagger_service_1 = require("./swagger.service");
13
+ const swagger_config_1 = require("./swagger.config");
14
+ /**
15
+ * Swagger模块
16
+ * 支持 forRoot() 模式进行配置
17
+ */
18
+ let SwaggerModule = SwaggerModule_1 = class SwaggerModule {
19
+ /**
20
+ * 静态方法:配置Swagger模块
21
+ * 用于根模块注册
22
+ * @param options Swagger配置选项
23
+ */
24
+ static forRoot(options = {}) {
25
+ const mergedConfig = {
26
+ ...swagger_config_1.SWAGGER_CONFIG,
27
+ ...options,
28
+ };
29
+ return {
30
+ module: SwaggerModule_1,
31
+ providers: [
32
+ {
33
+ provide: 'SWAGGER_OPTIONS',
34
+ useValue: mergedConfig,
35
+ },
36
+ {
37
+ provide: 'SWAGGER_SERVICE',
38
+ useClass: swagger_service_1.SwaggerService,
39
+ },
40
+ ],
41
+ exports: ['SWAGGER_SERVICE'],
42
+ };
43
+ }
44
+ };
45
+ exports.SwaggerModule = SwaggerModule;
46
+ exports.SwaggerModule = SwaggerModule = SwaggerModule_1 = __decorate([
47
+ (0, common_1.Global)(),
48
+ (0, common_1.Module)({})
49
+ ], SwaggerModule);
@@ -0,0 +1,44 @@
1
+ import { INestApplication } from '@nestjs/common';
2
+ import type { ISwaggerConfig } from './swagger.config';
3
+ export interface ISwaggerService {
4
+ configure(app: INestApplication): void;
5
+ }
6
+ /**
7
+ * Swagger服务
8
+ * 用于配置和设置Swagger文档
9
+ *
10
+ * 功能:
11
+ * 1. 为当前服务生成独立的 Swagger 文档
12
+ * 2. (可选) 启用文档聚合功能,汇总多个微服务的文档
13
+ */
14
+ export declare class SwaggerService implements ISwaggerService {
15
+ private readonly logger;
16
+ private options;
17
+ constructor(options?: ISwaggerConfig);
18
+ /**
19
+ * 配置Swagger文档
20
+ * 执行顺序:
21
+ * 1. 生成当前服务的独立文档 (必选)
22
+ * 2. 启用文档聚合功能 (可选,基于配置)
23
+ */
24
+ configure(app: INestApplication): void;
25
+ /**
26
+ * 设置独立的 Swagger 文档
27
+ * 为当前服务生成 /swagger 和 /swagger-json 端点
28
+ */
29
+ private setupStandaloneSwagger;
30
+ /**
31
+ * 设置文档聚合功能
32
+ * 注册一个聚合路由,展示配置中所有服务的文档
33
+ *
34
+ * 依据: Swagger UI 官方多 URL 配置
35
+ * https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md
36
+ */
37
+ private setupAggregation;
38
+ /**
39
+ * 生成聚合文档的 HTML 页面
40
+ * 使用 Swagger UI 原生的多 URL 配置
41
+ */
42
+ private generateAggregationHtml;
43
+ }
44
+ //# sourceMappingURL=swagger.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger.service.d.ts","sourceRoot":"","sources":["../../src/swagger/swagger.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,qBACa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,OAAO,CAAiB;gBAEO,OAAO,CAAC,EAAE,cAAc;IAI/D;;;;;OAKG;IACH,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUtC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA6C9B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CAiEhC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var SwaggerService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.SwaggerService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ // 导入常用的模型
20
+ const response_dto_1 = require("../restful/response.dto");
21
+ /**
22
+ * Swagger服务
23
+ * 用于配置和设置Swagger文档
24
+ *
25
+ * 功能:
26
+ * 1. 为当前服务生成独立的 Swagger 文档
27
+ * 2. (可选) 启用文档聚合功能,汇总多个微服务的文档
28
+ */
29
+ let SwaggerService = SwaggerService_1 = class SwaggerService {
30
+ logger = new common_1.Logger(SwaggerService_1.name);
31
+ options;
32
+ constructor(options) {
33
+ this.options = options || {};
34
+ }
35
+ /**
36
+ * 配置Swagger文档
37
+ * 执行顺序:
38
+ * 1. 生成当前服务的独立文档 (必选)
39
+ * 2. 启用文档聚合功能 (可选,基于配置)
40
+ */
41
+ configure(app) {
42
+ // 1. 生成独立文档
43
+ this.setupStandaloneSwagger(app);
44
+ // 2. 如果配置了聚合功能,则注册聚合路由
45
+ if (this.options.aggregation?.enabled) {
46
+ this.setupAggregation(app);
47
+ }
48
+ }
49
+ /**
50
+ * 设置独立的 Swagger 文档
51
+ * 为当前服务生成 /swagger 和 /swagger-json 端点
52
+ */
53
+ setupStandaloneSwagger(app) {
54
+ const config = new swagger_1.DocumentBuilder()
55
+ .setTitle(this.options.title || 'API文档')
56
+ .setDescription(this.options.description || 'API接口文档')
57
+ .setVersion(this.options.version || '1.0')
58
+ .addBearerAuth()
59
+ .addTag('default', '默认接口');
60
+ // 添加自定义标签
61
+ if (this.options.tags && this.options.tags.length > 0) {
62
+ this.options.tags.forEach((tag) => {
63
+ config.addTag(tag.name, tag.description);
64
+ });
65
+ }
66
+ // 构建基础文档
67
+ const documentBuilder = config.build();
68
+ // 添加额外的模型定义,确保PaginatedResponseDto等模型被正确注册
69
+ documentBuilder.components = documentBuilder.components || {};
70
+ documentBuilder.components.schemas = documentBuilder.components.schemas || {};
71
+ // 生成文档
72
+ const document = swagger_1.SwaggerModule.createDocument(app, documentBuilder, {
73
+ extraModels: [response_dto_1.ApiResponseDto, response_dto_1.PaginatedResponseDto], // 自动注册常用模型
74
+ });
75
+ // 修复Fastify环境下PaginatedResponseDto引用问题
76
+ // 确保所有额外模型都被正确添加到文档中
77
+ if (!document.components) {
78
+ document.components = {};
79
+ }
80
+ if (!document.components.schemas) {
81
+ document.components.schemas = {};
82
+ }
83
+ swagger_1.SwaggerModule.setup(this.options.path, app, document, {
84
+ customSiteTitle: this.options.customSiteTitle,
85
+ customfavIcon: this.options.customfavIcon,
86
+ customCss: this.options.customCss,
87
+ });
88
+ this.logger.log(`Swagger文档已配置,访问地址: ${this.options.path || 'api'}`);
89
+ }
90
+ /**
91
+ * 设置文档聚合功能
92
+ * 注册一个聚合路由,展示配置中所有服务的文档
93
+ *
94
+ * 依据: Swagger UI 官方多 URL 配置
95
+ * https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md
96
+ */
97
+ setupAggregation(app) {
98
+ const aggConfig = this.options.aggregation;
99
+ const aggPath = aggConfig.path || 'api-docs';
100
+ // 验证配置
101
+ if (!aggConfig.services || aggConfig.services.length === 0) {
102
+ this.logger.warn('文档聚合已启用,但未配置任何服务,跳过聚合路由注册');
103
+ return;
104
+ }
105
+ // 生成 Swagger UI HTML
106
+ const html = this.generateAggregationHtml(aggConfig);
107
+ // 使用底层 HTTP adapter 注册路由
108
+ // 兼容 Express 和 Fastify
109
+ const httpAdapter = app.getHttpAdapter();
110
+ const instance = httpAdapter.getInstance();
111
+ // 注册聚合文档路由
112
+ // Express: app.get(path, handler)
113
+ // Fastify: app.get(path, handler)
114
+ instance.get(`/${aggPath}`, (_req, res) => {
115
+ // Express
116
+ if (res.setHeader && res.send) {
117
+ res.setHeader('Content-Type', 'text/html; charset=utf-8');
118
+ res.send(html);
119
+ }
120
+ // Fastify
121
+ else if (res.header && res.send) {
122
+ res.header('Content-Type', 'text/html; charset=utf-8');
123
+ res.send(html);
124
+ }
125
+ });
126
+ this.logger.log(`文档聚合已启用,访问地址: ${aggPath} (聚合 ${aggConfig.services.length} 个服务)`);
127
+ }
128
+ /**
129
+ * 生成聚合文档的 HTML 页面
130
+ * 使用 Swagger UI 原生的多 URL 配置
131
+ */
132
+ generateAggregationHtml(aggConfig) {
133
+ const services = aggConfig.services;
134
+ const primaryName = aggConfig.primaryName || services[0]?.name;
135
+ return `
136
+ <!DOCTYPE html>
137
+ <html lang="zh-CN">
138
+ <head>
139
+ <meta charset="UTF-8">
140
+ <title>YingziOS API 文档中心</title>
141
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css">
142
+ <link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/favicon-32x32.png" sizes="32x32">
143
+ <style>
144
+ html {
145
+ box-sizing: border-box;
146
+ overflow: -moz-scrollbars-vertical;
147
+ overflow-y: scroll;
148
+ }
149
+ *, *:before, *:after {
150
+ box-sizing: inherit;
151
+ }
152
+ body {
153
+ margin: 0;
154
+ padding: 0;
155
+ }
156
+ .topbar {
157
+ background-color: #1f1f1f !important;
158
+ }
159
+ .topbar-wrapper .link {
160
+ color: #fff !important;
161
+ }
162
+ </style>
163
+ </head>
164
+ <body>
165
+ <div id="swagger-ui"></div>
166
+ <script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js" charset="UTF-8"></script>
167
+ <script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-standalone-preset.js" charset="UTF-8"></script>
168
+ <script>
169
+ window.onload = function() {
170
+ const ui = SwaggerUIBundle({
171
+ urls: ${JSON.stringify(services, null, 10)},
172
+ "urls.primaryName": ${JSON.stringify(primaryName)},
173
+ dom_id: '#swagger-ui',
174
+ deepLinking: true,
175
+ presets: [
176
+ SwaggerUIBundle.presets.apis,
177
+ SwaggerUIStandalonePreset
178
+ ],
179
+ plugins: [
180
+ SwaggerUIBundle.plugins.DownloadUrl
181
+ ],
182
+ layout: "StandaloneLayout",
183
+ docExpansion: "list",
184
+ displayRequestDuration: true,
185
+ filter: true,
186
+ tryItOutEnabled: false,
187
+ persistAuthorization: true
188
+ });
189
+ window.ui = ui;
190
+ };
191
+ </script>
192
+ </body>
193
+ </html>
194
+ `.trim();
195
+ }
196
+ };
197
+ exports.SwaggerService = SwaggerService;
198
+ exports.SwaggerService = SwaggerService = SwaggerService_1 = __decorate([
199
+ (0, common_1.Injectable)(),
200
+ __param(0, (0, common_1.Inject)('SWAGGER_OPTIONS')),
201
+ __metadata("design:paramtypes", [Object])
202
+ ], SwaggerService);
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "yingzios-platform-backend-shared",
3
+ "version": "1.0.1",
4
+ "description": "NestJS 共享模块库",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "LICENSE"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "publishConfig": {
19
+ "access": "public",
20
+ "registry": "https://registry.npmjs.org/"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/your-org/yingzios-platform-portal.git",
25
+ "directory": "libs/backend-shared"
26
+ },
27
+ "keywords": [
28
+ "nestjs",
29
+ "nest",
30
+ "shared",
31
+ "modules",
32
+ "sequelize",
33
+ "jwt",
34
+ "swagger",
35
+ "apollo",
36
+ "nacos"
37
+ ],
38
+ "license": "MIT",
39
+ "dependencies": {
40
+ "@keyv/redis": "^5.1.6",
41
+ "@keyv/sqlite": "^4.0.8",
42
+ "@nestjs/common": "^11.1.17",
43
+ "@nestjs/core": "^11.1.17",
44
+ "@nestjs/jwt": "^11.0.2",
45
+ "@nestjs/passport": "^11.0.5",
46
+ "@nestjs/swagger": "^11.2.3",
47
+ "@sapphire/snowflake": "^3.5.5",
48
+ "@vodyani/apollo-client": "^1.5.0",
49
+ "axios": "^1.14.0",
50
+ "ctrip-apollo": "^4.5.1",
51
+ "dotenv": "^16.4.5",
52
+ "express": "^4.18.2",
53
+ "json-bigint": "^1.0.0",
54
+ "keyv": "^5.6.0",
55
+ "lodash": "^4.17.21",
56
+ "nacos": "^2.6.0",
57
+ "passport": "^0.7.0",
58
+ "passport-jwt": "^4.0.1",
59
+ "pg": "^8.16.3",
60
+ "rxjs": "^7.8.1",
61
+ "sequelize": "^6.37.8",
62
+ "tslib": "^2.8.1",
63
+ "umzug": "^3.8.2",
64
+ "winston": "^3.19.0",
65
+ "winston-daily-rotate-file": "^5.0.0"
66
+ },
67
+ "devDependencies": {
68
+ "@types/express": "^4.17.21",
69
+ "@types/json-bigint": "^1.0.4",
70
+ "@types/lodash": "^4.17.21",
71
+ "@types/node": "^24.10.2",
72
+ "@types/passport-jwt": "^4.0.1",
73
+ "@types/pg": "^8.15.6"
74
+ }
75
+ }