@fecommunity/reactpress-server 1.0.3-beta.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 (233) hide show
  1. package/dist/app.module.d.ts +2 -0
  2. package/dist/app.module.js +80 -0
  3. package/dist/app.module.js.map +1 -0
  4. package/dist/bootstrap.d.ts +10 -0
  5. package/dist/bootstrap.js +57 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/filters/http-exception.filter.d.ts +4 -0
  8. package/dist/filters/http-exception.filter.js +36 -0
  9. package/dist/filters/http-exception.filter.js.map +1 -0
  10. package/dist/interceptors/transform.interceptor.d.ts +9 -0
  11. package/dist/interceptors/transform.interceptor.js +36 -0
  12. package/dist/interceptors/transform.interceptor.js.map +1 -0
  13. package/dist/logger/index.d.ts +4 -0
  14. package/dist/logger/index.js +33 -0
  15. package/dist/logger/index.js.map +1 -0
  16. package/dist/main.d.ts +1 -0
  17. package/dist/main.js +44 -0
  18. package/dist/main.js.map +1 -0
  19. package/dist/modules/article/article.controller.d.ts +27 -0
  20. package/dist/modules/article/article.controller.js +198 -0
  21. package/dist/modules/article/article.controller.js.map +1 -0
  22. package/dist/modules/article/article.entity.d.ts +23 -0
  23. package/dist/modules/article/article.entity.js +128 -0
  24. package/dist/modules/article/article.entity.js.map +1 -0
  25. package/dist/modules/article/article.module.d.ts +2 -0
  26. package/dist/modules/article/article.module.js +30 -0
  27. package/dist/modules/article/article.module.js.map +1 -0
  28. package/dist/modules/article/article.service.d.ts +30 -0
  29. package/dist/modules/article/article.service.js +303 -0
  30. package/dist/modules/article/article.service.js.map +1 -0
  31. package/dist/modules/article/article.util.d.ts +1 -0
  32. package/dist/modules/article/article.util.js +9 -0
  33. package/dist/modules/article/article.util.js.map +1 -0
  34. package/dist/modules/auth/auth.controller.d.ts +12 -0
  35. package/dist/modules/auth/auth.controller.js +66 -0
  36. package/dist/modules/auth/auth.controller.js.map +1 -0
  37. package/dist/modules/auth/auth.module.d.ts +2 -0
  38. package/dist/modules/auth/auth.module.js +41 -0
  39. package/dist/modules/auth/auth.module.js.map +1 -0
  40. package/dist/modules/auth/auth.service.d.ts +26 -0
  41. package/dist/modules/auth/auth.service.js +127 -0
  42. package/dist/modules/auth/auth.service.js.map +1 -0
  43. package/dist/modules/auth/jwt-auth.guard.d.ts +7 -0
  44. package/dist/modules/auth/jwt-auth.guard.js +29 -0
  45. package/dist/modules/auth/jwt-auth.guard.js.map +1 -0
  46. package/dist/modules/auth/jwt.strategy.d.ts +9 -0
  47. package/dist/modules/auth/jwt.strategy.js +38 -0
  48. package/dist/modules/auth/jwt.strategy.js.map +1 -0
  49. package/dist/modules/auth/roles.guard.d.ts +10 -0
  50. package/dist/modules/auth/roles.guard.js +46 -0
  51. package/dist/modules/auth/roles.guard.js.map +1 -0
  52. package/dist/modules/category/category.controller.d.ts +11 -0
  53. package/dist/modules/category/category.controller.js +91 -0
  54. package/dist/modules/category/category.controller.js.map +1 -0
  55. package/dist/modules/category/category.entity.d.ts +9 -0
  56. package/dist/modules/category/category.entity.js +60 -0
  57. package/dist/modules/category/category.entity.js.map +1 -0
  58. package/dist/modules/category/category.module.d.ts +2 -0
  59. package/dist/modules/category/category.module.js +27 -0
  60. package/dist/modules/category/category.module.js.map +1 -0
  61. package/dist/modules/category/category.service.d.ts +12 -0
  62. package/dist/modules/category/category.service.js +89 -0
  63. package/dist/modules/category/category.service.js.map +1 -0
  64. package/dist/modules/comment/comment.controller.d.ts +12 -0
  65. package/dist/modules/comment/comment.controller.js +100 -0
  66. package/dist/modules/comment/comment.controller.js.map +1 -0
  67. package/dist/modules/comment/comment.entity.d.ts +17 -0
  68. package/dist/modules/comment/comment.entity.js +104 -0
  69. package/dist/modules/comment/comment.entity.js.map +1 -0
  70. package/dist/modules/comment/comment.module.d.ts +2 -0
  71. package/dist/modules/comment/comment.module.js +30 -0
  72. package/dist/modules/comment/comment.module.js.map +1 -0
  73. package/dist/modules/comment/comment.service.d.ts +24 -0
  74. package/dist/modules/comment/comment.service.js +172 -0
  75. package/dist/modules/comment/comment.service.js.map +1 -0
  76. package/dist/modules/comment/html.d.ts +15 -0
  77. package/dist/modules/comment/html.js +632 -0
  78. package/dist/modules/comment/html.js.map +1 -0
  79. package/dist/modules/file/file.controller.d.ts +10 -0
  80. package/dist/modules/file/file.controller.js +84 -0
  81. package/dist/modules/file/file.controller.js.map +1 -0
  82. package/dist/modules/file/file.entity.d.ts +9 -0
  83. package/dist/modules/file/file.entity.js +60 -0
  84. package/dist/modules/file/file.entity.js.map +1 -0
  85. package/dist/modules/file/file.module.d.ts +2 -0
  86. package/dist/modules/file/file.module.js +27 -0
  87. package/dist/modules/file/file.module.js.map +1 -0
  88. package/dist/modules/file/file.service.d.ts +17 -0
  89. package/dist/modules/file/file.service.js +111 -0
  90. package/dist/modules/file/file.service.js.map +1 -0
  91. package/dist/modules/install/install.controller.d.ts +11 -0
  92. package/dist/modules/install/install.controller.js +49 -0
  93. package/dist/modules/install/install.controller.js.map +1 -0
  94. package/dist/modules/install/install.module.d.ts +2 -0
  95. package/dist/modules/install/install.module.js +26 -0
  96. package/dist/modules/install/install.module.js.map +1 -0
  97. package/dist/modules/install/install.service.d.ts +12 -0
  98. package/dist/modules/install/install.service.js +63 -0
  99. package/dist/modules/install/install.service.js.map +1 -0
  100. package/dist/modules/knowledge/knowledge.controller.d.ts +14 -0
  101. package/dist/modules/knowledge/knowledge.controller.js +128 -0
  102. package/dist/modules/knowledge/knowledge.controller.js.map +1 -0
  103. package/dist/modules/knowledge/knowledge.entity.d.ts +18 -0
  104. package/dist/modules/knowledge/knowledge.entity.js +109 -0
  105. package/dist/modules/knowledge/knowledge.entity.js.map +1 -0
  106. package/dist/modules/knowledge/knowledge.module.d.ts +2 -0
  107. package/dist/modules/knowledge/knowledge.module.js +27 -0
  108. package/dist/modules/knowledge/knowledge.module.js.map +1 -0
  109. package/dist/modules/knowledge/knowledge.service.d.ts +14 -0
  110. package/dist/modules/knowledge/knowledge.service.js +143 -0
  111. package/dist/modules/knowledge/knowledge.service.js.map +1 -0
  112. package/dist/modules/page/page.controller.d.ts +12 -0
  113. package/dist/modules/page/page.controller.js +102 -0
  114. package/dist/modules/page/page.controller.js.map +1 -0
  115. package/dist/modules/page/page.entity.d.ts +15 -0
  116. package/dist/modules/page/page.entity.js +94 -0
  117. package/dist/modules/page/page.entity.js.map +1 -0
  118. package/dist/modules/page/page.module.d.ts +2 -0
  119. package/dist/modules/page/page.module.js +27 -0
  120. package/dist/modules/page/page.module.js.map +1 -0
  121. package/dist/modules/page/page.service.d.ts +12 -0
  122. package/dist/modules/page/page.service.js +97 -0
  123. package/dist/modules/page/page.service.js.map +1 -0
  124. package/dist/modules/search/search.controller.d.ts +8 -0
  125. package/dist/modules/search/search.controller.js +67 -0
  126. package/dist/modules/search/search.controller.js.map +1 -0
  127. package/dist/modules/search/search.entity.d.ts +8 -0
  128. package/dist/modules/search/search.entity.js +59 -0
  129. package/dist/modules/search/search.entity.js.map +1 -0
  130. package/dist/modules/search/search.module.d.ts +2 -0
  131. package/dist/modules/search/search.module.js +27 -0
  132. package/dist/modules/search/search.module.js.map +1 -0
  133. package/dist/modules/search/search.service.d.ts +12 -0
  134. package/dist/modules/search/search.service.js +84 -0
  135. package/dist/modules/search/search.service.js.map +1 -0
  136. package/dist/modules/setting/setting.constant.d.ts +4 -0
  137. package/dist/modules/setting/setting.constant.js +24 -0
  138. package/dist/modules/setting/setting.constant.js.map +1 -0
  139. package/dist/modules/setting/setting.controller.d.ts +12 -0
  140. package/dist/modules/setting/setting.controller.js +77 -0
  141. package/dist/modules/setting/setting.controller.js.map +1 -0
  142. package/dist/modules/setting/setting.entity.d.ts +26 -0
  143. package/dist/modules/setting/setting.entity.js +149 -0
  144. package/dist/modules/setting/setting.entity.js.map +1 -0
  145. package/dist/modules/setting/setting.module.d.ts +2 -0
  146. package/dist/modules/setting/setting.module.js +28 -0
  147. package/dist/modules/setting/setting.module.js.map +1 -0
  148. package/dist/modules/setting/setting.service.d.ts +10 -0
  149. package/dist/modules/setting/setting.service.js +83 -0
  150. package/dist/modules/setting/setting.service.js.map +1 -0
  151. package/dist/modules/smtp/mail.util.d.ts +6 -0
  152. package/dist/modules/smtp/mail.util.js +33 -0
  153. package/dist/modules/smtp/mail.util.js.map +1 -0
  154. package/dist/modules/smtp/smtp.controller.d.ts +9 -0
  155. package/dist/modules/smtp/smtp.controller.js +69 -0
  156. package/dist/modules/smtp/smtp.controller.js.map +1 -0
  157. package/dist/modules/smtp/smtp.entity.d.ts +9 -0
  158. package/dist/modules/smtp/smtp.entity.js +60 -0
  159. package/dist/modules/smtp/smtp.entity.js.map +1 -0
  160. package/dist/modules/smtp/smtp.module.d.ts +2 -0
  161. package/dist/modules/smtp/smtp.module.js +28 -0
  162. package/dist/modules/smtp/smtp.module.js.map +1 -0
  163. package/dist/modules/smtp/smtp.service.d.ts +11 -0
  164. package/dist/modules/smtp/smtp.service.js +82 -0
  165. package/dist/modules/smtp/smtp.service.js.map +1 -0
  166. package/dist/modules/tag/tag.controller.d.ts +12 -0
  167. package/dist/modules/tag/tag.controller.js +101 -0
  168. package/dist/modules/tag/tag.controller.js.map +1 -0
  169. package/dist/modules/tag/tag.entity.d.ts +9 -0
  170. package/dist/modules/tag/tag.entity.js +59 -0
  171. package/dist/modules/tag/tag.entity.js.map +1 -0
  172. package/dist/modules/tag/tag.module.d.ts +2 -0
  173. package/dist/modules/tag/tag.module.js +27 -0
  174. package/dist/modules/tag/tag.module.js.map +1 -0
  175. package/dist/modules/tag/tag.service.d.ts +13 -0
  176. package/dist/modules/tag/tag.service.js +103 -0
  177. package/dist/modules/tag/tag.service.js.map +1 -0
  178. package/dist/modules/user/user.controller.d.ts +13 -0
  179. package/dist/modules/user/user.controller.js +114 -0
  180. package/dist/modules/user/user.controller.js.map +1 -0
  181. package/dist/modules/user/user.entity.d.ts +15 -0
  182. package/dist/modules/user/user.entity.js +96 -0
  183. package/dist/modules/user/user.entity.js.map +1 -0
  184. package/dist/modules/user/user.module.d.ts +2 -0
  185. package/dist/modules/user/user.module.js +28 -0
  186. package/dist/modules/user/user.module.js.map +1 -0
  187. package/dist/modules/user/user.service.d.ts +16 -0
  188. package/dist/modules/user/user.service.js +151 -0
  189. package/dist/modules/user/user.service.js.map +1 -0
  190. package/dist/modules/view/view.controller.d.ts +11 -0
  191. package/dist/modules/view/view.controller.js +92 -0
  192. package/dist/modules/view/view.controller.js.map +1 -0
  193. package/dist/modules/view/view.entity.d.ts +14 -0
  194. package/dist/modules/view/view.entity.js +88 -0
  195. package/dist/modules/view/view.entity.js.map +1 -0
  196. package/dist/modules/view/view.module.d.ts +2 -0
  197. package/dist/modules/view/view.module.js +27 -0
  198. package/dist/modules/view/view.module.js.map +1 -0
  199. package/dist/modules/view/view.service.d.ts +11 -0
  200. package/dist/modules/view/view.service.js +89 -0
  201. package/dist/modules/view/view.service.js.map +1 -0
  202. package/dist/tsconfig.build.tsbuildinfo +15722 -0
  203. package/dist/utils/date.util.d.ts +1 -0
  204. package/dist/utils/date.util.js +13 -0
  205. package/dist/utils/date.util.js.map +1 -0
  206. package/dist/utils/ip.util.d.ts +2 -0
  207. package/dist/utils/ip.util.js +27 -0
  208. package/dist/utils/ip.util.js.map +1 -0
  209. package/dist/utils/markdown.util.d.ts +4 -0
  210. package/dist/utils/markdown.util.js +42 -0
  211. package/dist/utils/markdown.util.js.map +1 -0
  212. package/dist/utils/oss/aliyun-oss-client.d.ts +6 -0
  213. package/dist/utils/oss/aliyun-oss-client.js +28 -0
  214. package/dist/utils/oss/aliyun-oss-client.js.map +1 -0
  215. package/dist/utils/oss/oss-client.d.ts +6 -0
  216. package/dist/utils/oss/oss-client.js +10 -0
  217. package/dist/utils/oss/oss-client.js.map +1 -0
  218. package/dist/utils/oss.util.d.ts +13 -0
  219. package/dist/utils/oss.util.js +48 -0
  220. package/dist/utils/oss.util.js.map +1 -0
  221. package/dist/utils/ua.util.d.ts +9 -0
  222. package/dist/utils/ua.util.js +36 -0
  223. package/dist/utils/ua.util.js.map +1 -0
  224. package/dist/utils/uniqueid.util.d.ts +1 -0
  225. package/dist/utils/uniqueid.util.js +9 -0
  226. package/dist/utils/uniqueid.util.js.map +1 -0
  227. package/dist/utils/upload.util.d.ts +5 -0
  228. package/dist/utils/upload.util.js +34 -0
  229. package/dist/utils/upload.util.js.map +1 -0
  230. package/dist/utils/user.util.d.ts +1 -0
  231. package/dist/utils/user.util.js +18 -0
  232. package/dist/utils/user.util.js.map +1 -0
  233. package/package.json +139 -0
@@ -0,0 +1,2 @@
1
+ export declare class AppModule {
2
+ }
@@ -0,0 +1,80 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AppModule = void 0;
10
+ const reactpress_config_1 = require("@fecommunity/reactpress-config");
11
+ const common_1 = require("@nestjs/common");
12
+ const config_1 = require("@nestjs/config");
13
+ const typeorm_1 = require("@nestjs/typeorm");
14
+ const article_entity_1 = require("./modules/article/article.entity");
15
+ const article_module_1 = require("./modules/article/article.module");
16
+ const auth_module_1 = require("./modules/auth/auth.module");
17
+ const category_entity_1 = require("./modules/category/category.entity");
18
+ const category_module_1 = require("./modules/category/category.module");
19
+ const comment_entity_1 = require("./modules/comment/comment.entity");
20
+ const comment_module_1 = require("./modules/comment/comment.module");
21
+ const file_entity_1 = require("./modules/file/file.entity");
22
+ const file_module_1 = require("./modules/file/file.module");
23
+ const knowledge_entity_1 = require("./modules/knowledge/knowledge.entity");
24
+ const knowledge_module_1 = require("./modules/knowledge/knowledge.module");
25
+ const page_entity_1 = require("./modules/page/page.entity");
26
+ const page_module_1 = require("./modules/page/page.module");
27
+ const search_entity_1 = require("./modules/search/search.entity");
28
+ const search_module_1 = require("./modules/search/search.module");
29
+ const setting_entity_1 = require("./modules/setting/setting.entity");
30
+ const setting_module_1 = require("./modules/setting/setting.module");
31
+ const smtp_entity_1 = require("./modules/smtp/smtp.entity");
32
+ const smtp_module_1 = require("./modules/smtp/smtp.module");
33
+ const tag_entity_1 = require("./modules/tag/tag.entity");
34
+ const tag_module_1 = require("./modules/tag/tag.module");
35
+ const user_entity_1 = require("./modules/user/user.entity");
36
+ const user_module_1 = require("./modules/user/user.module");
37
+ const view_entity_1 = require("./modules/view/view.entity");
38
+ const view_module_1 = require("./modules/view/view.module");
39
+ let AppModule = class AppModule {
40
+ };
41
+ AppModule = __decorate([
42
+ common_1.Module({
43
+ imports: [
44
+ config_1.ConfigModule.forRoot({ isGlobal: true, envFilePath: [reactpress_config_1.file] }),
45
+ typeorm_1.TypeOrmModule.forRootAsync({
46
+ imports: [config_1.ConfigModule],
47
+ inject: [config_1.ConfigService],
48
+ useFactory: async (configService) => ({
49
+ type: 'mysql',
50
+ entities: [user_entity_1.User, file_entity_1.File, knowledge_entity_1.Knowledge, article_entity_1.Article, category_entity_1.Category, tag_entity_1.Tag, comment_entity_1.Comment, setting_entity_1.Setting, smtp_entity_1.SMTP, page_entity_1.Page, view_entity_1.View, search_entity_1.Search],
51
+ host: configService.get('DB_HOST', '0.0.0.0'),
52
+ port: configService.get('DB_PORT', 3306),
53
+ username: configService.get('DB_USER', 'root'),
54
+ password: configService.get('DB_PASSWD', 'root'),
55
+ database: configService.get('DB_DATABASE', 'reactpress'),
56
+ charset: 'utf8mb4',
57
+ timezone: '+08:00',
58
+ synchronize: true,
59
+ }),
60
+ }),
61
+ user_module_1.UserModule,
62
+ file_module_1.FileModule,
63
+ tag_module_1.TagModule,
64
+ article_module_1.ArticleModule,
65
+ knowledge_module_1.KnowledgeModule,
66
+ category_module_1.CategoryModule,
67
+ comment_module_1.CommentModule,
68
+ setting_module_1.SettingModule,
69
+ smtp_module_1.SMTPModule,
70
+ auth_module_1.AuthModule,
71
+ page_module_1.PageModule,
72
+ view_module_1.ViewModule,
73
+ search_module_1.SearchModule,
74
+ ],
75
+ controllers: [],
76
+ providers: [],
77
+ })
78
+ ], AppModule);
79
+ exports.AppModule = AppModule;
80
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AACA,sEAAqE;AACrE,2CAAwC;AACxC,2CAA6D;AAC7D,6CAAgD;AAEhD,qEAA2D;AAE3D,qEAAiE;AAEjE,4DAAwD;AACxD,wEAA8D;AAE9D,wEAAoE;AACpE,qEAA2D;AAE3D,qEAAiE;AACjE,4DAAkD;AAElD,4DAAwD;AACxD,2EAAiE;AAEjE,2EAAuE;AACvE,4DAAkD;AAElD,4DAAwD;AAExD,kEAAwD;AACxD,kEAA8D;AAC9D,qEAA2D;AAE3D,qEAAiE;AACjE,4DAAkD;AAElD,4DAAwD;AACxD,yDAA+C;AAE/C,yDAAqD;AACrD,4DAAkD;AAElD,4DAAwD;AACxD,4DAAkD;AAElD,4DAAwD;AAsCxD,IAAa,SAAS,GAAtB,MAAa,SAAS;CAAG,CAAA;AAAZ,SAAS;IApCrB,eAAM,CAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,wBAAW,CAAC,EAAE,CAAC;YACpE,uBAAa,CAAC,YAAY,CAAC;gBACzB,OAAO,EAAE,CAAC,qBAAY,CAAC;gBACvB,MAAM,EAAE,CAAC,sBAAa,CAAC;gBACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,CAAC,kBAAI,EAAE,kBAAI,EAAE,4BAAS,EAAE,wBAAO,EAAE,0BAAQ,EAAE,gBAAG,EAAE,wBAAO,EAAE,wBAAO,EAAE,kBAAI,EAAE,kBAAI,EAAE,kBAAI,EAAE,sBAAM,CAAC;oBACrG,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;oBAC7C,IAAI,EAAE,aAAa,CAAC,GAAG,CAAS,SAAS,EAAE,IAAI,CAAC;oBAChD,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;oBAC9C,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;oBAChD,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;oBACxD,OAAO,EAAE,SAAS;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,WAAW,EAAE,IAAI;iBAClB,CAAC;aACH,CAAC;YACF,wBAAU;YACV,wBAAU;YACV,sBAAS;YACT,8BAAa;YACb,kCAAe;YACf,gCAAc;YACd,8BAAa;YACb,8BAAa;YACb,wBAAU;YACV,wBAAU;YACV,wBAAU;YACV,wBAAU;YACV,4BAAY;SACb;QACD,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;KACd,CAAC;GACW,SAAS,CAAG;AAAZ,8BAAS"}
@@ -0,0 +1,10 @@
1
+ interface BootstrapOptions {
2
+ port?: number;
3
+ apiPrefix?: string;
4
+ enableSwagger?: boolean;
5
+ enableCors?: boolean;
6
+ staticPath?: string;
7
+ openBrowser?: boolean;
8
+ }
9
+ export declare function bootstrap(options?: BootstrapOptions): Promise<import("@nestjs/common").INestApplication>;
10
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrap = void 0;
4
+ const core_1 = require("@nestjs/core");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const bodyParser = require("body-parser");
7
+ const compression = require("compression");
8
+ const express = require("express");
9
+ const rateLimit = require("express-rate-limit");
10
+ const helmet = require("helmet");
11
+ const path_1 = require("path");
12
+ const app_module_1 = require("./app.module");
13
+ const http_exception_filter_1 = require("./filters/http-exception.filter");
14
+ const transform_interceptor_1 = require("./interceptors/transform.interceptor");
15
+ async function bootstrap(options = {}) {
16
+ const app = await core_1.NestFactory.create(app_module_1.AppModule);
17
+ const configService = app.get('ConfigService');
18
+ const { port = configService.get('SERVER_PORT', 3002), apiPrefix = configService.get('SERVER_API_PREFIX', '/api'), enableSwagger = true, enableCors = true, staticPath = path_1.join(__dirname, '../public'), openBrowser = false } = options;
19
+ if (enableCors) {
20
+ app.enableCors();
21
+ }
22
+ app.setGlobalPrefix(apiPrefix);
23
+ app.use(rateLimit({
24
+ windowMs: 60 * 1000,
25
+ max: 10000,
26
+ }));
27
+ app.use('/public', express.static(staticPath));
28
+ app.use(compression());
29
+ app.use(helmet());
30
+ app.useGlobalInterceptors(new transform_interceptor_1.TransformInterceptor());
31
+ app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter());
32
+ app.use(bodyParser.json({ limit: '10mb' }));
33
+ app.use(bodyParser.urlencoded({ limit: '10mb', extended: true }));
34
+ if (enableSwagger) {
35
+ const swaggerConfig = new swagger_1.DocumentBuilder()
36
+ .setTitle('ReactPress Open Api')
37
+ .setDescription('ReactPress Open Api Document')
38
+ .setVersion('1.0')
39
+ .build();
40
+ const document = swagger_1.SwaggerModule.createDocument(app, swaggerConfig);
41
+ swagger_1.SwaggerModule.setup('api', app, document);
42
+ }
43
+ await app.listen(port);
44
+ if (openBrowser) {
45
+ try {
46
+ const open = require('open');
47
+ await open(`http://localhost:${port}${apiPrefix}`);
48
+ }
49
+ catch (error) {
50
+ console.log(`[ReactPress] Could not open browser. Visit: http://localhost:${port}${apiPrefix}`);
51
+ }
52
+ }
53
+ console.log(`[ReactPress] 服务启动成功 - Port: ${port}`);
54
+ return app;
55
+ }
56
+ exports.bootstrap = bootstrap;
57
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAC3C,6CAAiE;AACjE,0CAA0C;AAC1C,2CAA2C;AAC3C,mCAAmC;AACnC,gDAAgD;AAChD,iCAAiC;AACjC,+BAA4B;AAE5B,6CAAyC;AACzC,2EAAsE;AACtE,gFAA4E;AAWrE,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAG/C,MAAM,EACJ,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,EAC7C,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAC1D,aAAa,GAAG,IAAI,EACpB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,WAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACzC,WAAW,GAAG,KAAK,EACpB,GAAG,OAAO,CAAC;IAEZ,IAAI,UAAU,EAAE;QACd,GAAG,CAAC,UAAU,EAAE,CAAC;KAClB;IAED,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/B,GAAG,CAAC,GAAG,CACL,SAAS,CAAC;QACR,QAAQ,EAAE,EAAE,GAAG,IAAI;QACnB,GAAG,EAAE,KAAK;KACX,CAAC,CACH,CAAC;IAGF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACvB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAClB,GAAG,CAAC,qBAAqB,CAAC,IAAI,4CAAoB,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,gBAAgB,CAAC,IAAI,2CAAmB,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAElE,IAAI,aAAa,EAAE;QACjB,MAAM,aAAa,GAAG,IAAI,yBAAe,EAAE;aACxC,QAAQ,CAAC,qBAAqB,CAAC;aAC/B,cAAc,CAAC,8BAA8B,CAAC;aAC9C,UAAU,CAAC,KAAK,CAAC;aACjB,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAClE,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC3C;IAED,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,WAAW,EAAE;QACf,IAAI;YACF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,IAAI,CAAC,oBAAoB,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,gEAAgE,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;SACjG;KACF;IAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACb,CAAC;AA5DD,8BA4DC"}
@@ -0,0 +1,4 @@
1
+ import { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
2
+ export declare class HttpExceptionFilter implements ExceptionFilter {
3
+ catch(exception: HttpException, host: ArgumentsHost): void;
4
+ }
@@ -0,0 +1,36 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HttpExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const logger_1 = require("../logger");
12
+ let HttpExceptionFilter = class HttpExceptionFilter {
13
+ catch(exception, host) {
14
+ const ctx = host.switchToHttp();
15
+ const response = ctx.getResponse();
16
+ const request = ctx.getRequest();
17
+ const url = request.originalUrl;
18
+ const status = exception instanceof common_1.HttpException ? exception.getStatus() : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
19
+ const msg = exception.message.message || exception.message;
20
+ const errorResponse = {
21
+ statusCode: status,
22
+ msg,
23
+ success: false,
24
+ data: null,
25
+ };
26
+ response.status(status);
27
+ response.header('Content-Type', 'application/json; charset=utf-8');
28
+ response.send(errorResponse);
29
+ logger_1.errorLogger.error(url, errorResponse);
30
+ }
31
+ };
32
+ HttpExceptionFilter = __decorate([
33
+ common_1.Catch(common_1.HttpException)
34
+ ], HttpExceptionFilter);
35
+ exports.HttpExceptionFilter = HttpExceptionFilter;
36
+ //# sourceMappingURL=http-exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../src/filters/http-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAkG;AAElG,sCAAwC;AAGxC,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;QAChC,MAAM,MAAM,GAAG,SAAS,YAAY,sBAAa,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;QAC7G,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;QAC3D,MAAM,aAAa,GAAG;YACpB,UAAU,EAAE,MAAM;YAClB,GAAG;YACH,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,IAAI;SACX,CAAC;QAGF,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,oBAAW,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAtBY,mBAAmB;IAD/B,cAAK,CAAC,sBAAa,CAAC;GACR,mBAAmB,CAsB/B;AAtBY,kDAAmB"}
@@ -0,0 +1,9 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ interface Response<T> {
4
+ data: T;
5
+ }
6
+ export declare class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
7
+ intercept(context: ExecutionContext, next: CallHandler<T>): Observable<Response<T>>;
8
+ }
9
+ export {};
@@ -0,0 +1,36 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TransformInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const operators_1 = require("rxjs/operators");
12
+ const logger_1 = require("../logger");
13
+ let TransformInterceptor = class TransformInterceptor {
14
+ intercept(context, next) {
15
+ return next.handle().pipe(operators_1.map((data) => {
16
+ const ctx = context.switchToHttp();
17
+ const response = ctx.getResponse();
18
+ const request = ctx.getRequest();
19
+ const statusCode = response.statusCode;
20
+ const url = request.originalUrl;
21
+ const res = {
22
+ statusCode,
23
+ msg: null,
24
+ success: true,
25
+ data,
26
+ };
27
+ logger_1.responseLogger.info(url, res);
28
+ return res;
29
+ }));
30
+ }
31
+ };
32
+ TransformInterceptor = __decorate([
33
+ common_1.Injectable()
34
+ ], TransformInterceptor);
35
+ exports.TransformInterceptor = TransformInterceptor;
36
+ //# sourceMappingURL=transform.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/transform.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4F;AAE5F,8CAAqC;AAErC,sCAA2C;AAO3C,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAC/B,SAAS,CAAC,OAAyB,EAAE,IAAoB;QACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,eAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YAEjC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;YACvC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAChC,MAAM,GAAG,GAAG;gBACV,UAAU;gBACV,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,IAAI;gBACb,IAAI;aACL,CAAC;YACF,uBAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,oBAAoB;IADhC,mBAAU,EAAE;GACA,oBAAoB,CAqBhC;AArBY,oDAAoB"}
@@ -0,0 +1,4 @@
1
+ import * as log4js from 'log4js';
2
+ export declare const requestLogger: log4js.Logger;
3
+ export declare const responseLogger: log4js.Logger;
4
+ export declare const errorLogger: log4js.Logger;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorLogger = exports.responseLogger = exports.requestLogger = void 0;
4
+ const fs = require("fs-extra");
5
+ const log4js = require("log4js");
6
+ const path_1 = require("path");
7
+ const LOG_DIR_NAME = '../../logs';
8
+ fs.ensureDirSync(path_1.join(__dirname, LOG_DIR_NAME));
9
+ void ['request', 'response', 'error'].forEach((t) => {
10
+ fs.ensureDirSync(path_1.join(__dirname, LOG_DIR_NAME, t));
11
+ });
12
+ const resolvePath = (dir, filename) => path_1.join(__dirname, LOG_DIR_NAME, dir, filename);
13
+ const commonCinfig = {
14
+ type: 'dateFile',
15
+ pattern: '-yyyy-MM-dd.log',
16
+ alwaysIncludePattern: true,
17
+ };
18
+ log4js.configure({
19
+ appenders: {
20
+ request: Object.assign(Object.assign({}, commonCinfig), { filename: resolvePath('request', 'request.log'), category: 'request' }),
21
+ response: Object.assign(Object.assign({}, commonCinfig), { filename: resolvePath('response', 'response.log'), category: 'response' }),
22
+ error: Object.assign(Object.assign({}, commonCinfig), { filename: resolvePath('error', 'error.log'), category: 'error' }),
23
+ },
24
+ categories: {
25
+ default: { appenders: ['request'], level: 'info' },
26
+ response: { appenders: ['response'], level: 'info' },
27
+ error: { appenders: ['error'], level: 'info' },
28
+ },
29
+ });
30
+ exports.requestLogger = log4js.getLogger('request');
31
+ exports.responseLogger = log4js.getLogger('response');
32
+ exports.errorLogger = log4js.getLogger('error');
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,iCAAiC;AACjC,+BAA4B;AAE5B,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,EAAE,CAAC,aAAa,CAAC,WAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAChD,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;IAClD,EAAE,CAAC,aAAa,CAAC,WAAI,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAI,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAEpF,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,iBAAiB;IAC1B,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAEF,MAAM,CAAC,SAAS,CAAC;IACf,SAAS,EAAE;QACT,OAAO,kCACF,YAAY,KACf,QAAQ,EAAE,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,EAC/C,QAAQ,EAAE,SAAS,GACpB;QACD,QAAQ,kCACH,YAAY,KACf,QAAQ,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,EACjD,QAAQ,EAAE,UAAU,GACrB;QACD,KAAK,kCACA,YAAY,KACf,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,EAC3C,QAAQ,EAAE,OAAO,GAClB;KACF;IACD,UAAU,EAAE;QACV,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAClD,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QACpD,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;KAC/C;CACF,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAA,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC9C,QAAA,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC"}
package/dist/main.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/main.js ADDED
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@nestjs/core");
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const bodyParser = require("body-parser");
6
+ const compression = require("compression");
7
+ const express = require("express");
8
+ const rateLimit = require("express-rate-limit");
9
+ const helmet = require("helmet");
10
+ const path_1 = require("path");
11
+ const open = require("open");
12
+ const app_module_1 = require("./app.module");
13
+ const http_exception_filter_1 = require("./filters/http-exception.filter");
14
+ const transform_interceptor_1 = require("./interceptors/transform.interceptor");
15
+ async function bootstrap() {
16
+ const app = await core_1.NestFactory.create(app_module_1.AppModule);
17
+ const configService = app.get('ConfigService');
18
+ app.enableCors();
19
+ app.setGlobalPrefix(configService.get('SERVER_API_PREFIX', '/api'));
20
+ app.use(rateLimit({
21
+ windowMs: 60 * 1000,
22
+ max: 10000,
23
+ }));
24
+ const rootDir = path_1.join(__dirname, '../public');
25
+ app.use('/public', express.static(rootDir));
26
+ app.use(compression());
27
+ app.use(helmet());
28
+ app.useGlobalInterceptors(new transform_interceptor_1.TransformInterceptor());
29
+ app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter());
30
+ app.use(bodyParser.json({ limit: '10mb' }));
31
+ app.use(bodyParser.urlencoded({ limit: '10mb', extended: true }));
32
+ const swaggerConfig = new swagger_1.DocumentBuilder()
33
+ .setTitle('ReactPress Open Api')
34
+ .setDescription('ReactPress Open Api Document')
35
+ .setVersion('1.0')
36
+ .build();
37
+ const document = swagger_1.SwaggerModule.createDocument(app, swaggerConfig);
38
+ swagger_1.SwaggerModule.setup('api', app, document);
39
+ await app.listen(configService.get('SERVER_PORT', 3002));
40
+ await open(`http://localhost:${configService.get('SERVER_PORT', 3002)}/api`);
41
+ console.log(`[ReactPress] 服务启动成功`);
42
+ }
43
+ bootstrap();
44
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAiE;AACjE,0CAA0C;AAC1C,2CAA2C;AAC3C,mCAAmC;AACnC,gDAAgD;AAChD,iCAAiC;AACjC,+BAA4B;AAC5B,6BAA6B;AAE7B,6CAAyC;AACzC,2EAAsE;AACtE,gFAA4E;AAE5E,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE/C,GAAG,CAAC,UAAU,EAAE,CAAC;IACjB,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,GAAG,CAAC,GAAG,CACL,SAAS,CAAC;QACR,QAAQ,EAAE,EAAE,GAAG,IAAI;QACnB,GAAG,EAAE,KAAK;KACX,CAAC,CACH,CAAC;IAGF,MAAM,OAAO,GAAG,WAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACvB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAClB,GAAG,CAAC,qBAAqB,CAAC,IAAI,4CAAoB,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,gBAAgB,CAAC,IAAI,2CAAmB,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,yBAAe,EAAE;SACxC,QAAQ,CAAC,qBAAqB,CAAC;SAC/B,cAAc,CAAC,8BAA8B,CAAC;SAC9C,UAAU,CAAC,KAAK,CAAC;SACjB,KAAK,EAAE,CAAC;IACX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClE,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE1C,MAAM,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,IAAI,CAAC,oBAAoB,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { JwtService } from '@nestjs/jwt';
2
+ import { UserService } from '../user/user.service';
3
+ import { Article } from './article.entity';
4
+ import { ArticleService } from './article.service';
5
+ export declare class ArticleController {
6
+ private readonly articleService;
7
+ private readonly jwtService;
8
+ private readonly userService;
9
+ constructor(articleService: ArticleService, jwtService: JwtService, userService: UserService);
10
+ create(article: any): Promise<Article>;
11
+ findAll(queryParams: any): Promise<[Article[], number]>;
12
+ findArticlesByCategory(category: any, queryParams: any): Promise<(number | Article[])[]>;
13
+ findArticlesByTag(tag: any, queryParams: any): Promise<(number | Article[])[]>;
14
+ getRecommendArticles(): Promise<Article[]>;
15
+ getArchives(): Promise<{
16
+ [key: string]: Article[];
17
+ }>;
18
+ recommend(articleId: any): Promise<Article[]>;
19
+ findById(req: any, id: any, status: any): Promise<Article>;
20
+ checkPassword(id: any, article: any): Promise<{
21
+ pass: boolean;
22
+ }>;
23
+ updateViewsById(id: any): Promise<Article>;
24
+ updateLikesById(id: any, type: any): Promise<Article>;
25
+ updateById(id: any, article: any): Promise<Article>;
26
+ deleteById(id: any): Promise<Article>;
27
+ }
@@ -0,0 +1,198 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ArticleController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const jwt_1 = require("@nestjs/jwt");
18
+ const swagger_1 = require("@nestjs/swagger");
19
+ const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
20
+ const roles_guard_1 = require("../auth/roles.guard");
21
+ const user_service_1 = require("../user/user.service");
22
+ const article_entity_1 = require("./article.entity");
23
+ const article_service_1 = require("./article.service");
24
+ let ArticleController = class ArticleController {
25
+ constructor(articleService, jwtService, userService) {
26
+ this.articleService = articleService;
27
+ this.jwtService = jwtService;
28
+ this.userService = userService;
29
+ }
30
+ create(article) {
31
+ return this.articleService.create(article);
32
+ }
33
+ findAll(queryParams) {
34
+ return this.articleService.findAll(queryParams);
35
+ }
36
+ findArticlesByCategory(category, queryParams) {
37
+ return this.articleService.findArticlesByCategory(category, queryParams);
38
+ }
39
+ findArticlesByTag(tag, queryParams) {
40
+ return this.articleService.findArticlesByTag(tag, queryParams);
41
+ }
42
+ getRecommendArticles() {
43
+ return this.articleService.getRecommendArticles();
44
+ }
45
+ getArchives() {
46
+ return this.articleService.getArchives();
47
+ }
48
+ recommend(articleId) {
49
+ return this.articleService.recommend(articleId);
50
+ }
51
+ async findById(req, id, status) {
52
+ let token = req.headers.authorization;
53
+ if (/Bearer/.test(token)) {
54
+ token = token.split(' ').pop();
55
+ }
56
+ try {
57
+ const tokenUser = this.jwtService.decode(token);
58
+ const userId = tokenUser.id;
59
+ const exist = await this.userService.findById(userId);
60
+ const isAdmin = userId && exist.role === 'admin';
61
+ return this.articleService.findById(id, status, isAdmin);
62
+ }
63
+ catch (e) {
64
+ return this.articleService.findById(id, status);
65
+ }
66
+ }
67
+ checkPassword(id, article) {
68
+ return this.articleService.checkPassword(id, article);
69
+ }
70
+ updateViewsById(id) {
71
+ return this.articleService.updateViewsById(id);
72
+ }
73
+ updateLikesById(id, type) {
74
+ return this.articleService.updateLikesById(id, type);
75
+ }
76
+ updateById(id, article) {
77
+ return this.articleService.updateById(id, article);
78
+ }
79
+ deleteById(id) {
80
+ return this.articleService.deleteById(id);
81
+ }
82
+ };
83
+ __decorate([
84
+ swagger_1.ApiResponse({ status: 200, description: '创建文章', type: [article_entity_1.Article] }),
85
+ common_1.Post(),
86
+ roles_guard_1.Roles('admin'),
87
+ common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
88
+ __param(0, common_1.Body()),
89
+ __metadata("design:type", Function),
90
+ __metadata("design:paramtypes", [Object]),
91
+ __metadata("design:returntype", void 0)
92
+ ], ArticleController.prototype, "create", null);
93
+ __decorate([
94
+ common_1.Get(),
95
+ common_1.HttpCode(common_1.HttpStatus.OK),
96
+ __param(0, common_1.Query()),
97
+ __metadata("design:type", Function),
98
+ __metadata("design:paramtypes", [Object]),
99
+ __metadata("design:returntype", void 0)
100
+ ], ArticleController.prototype, "findAll", null);
101
+ __decorate([
102
+ common_1.Get('/category/:id'),
103
+ common_1.HttpCode(common_1.HttpStatus.OK),
104
+ __param(0, common_1.Param('id')), __param(1, common_1.Query()),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", [Object, Object]),
107
+ __metadata("design:returntype", void 0)
108
+ ], ArticleController.prototype, "findArticlesByCategory", null);
109
+ __decorate([
110
+ common_1.Get('/tag/:id'),
111
+ common_1.HttpCode(common_1.HttpStatus.OK),
112
+ __param(0, common_1.Param('id')), __param(1, common_1.Query()),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [Object, Object]),
115
+ __metadata("design:returntype", void 0)
116
+ ], ArticleController.prototype, "findArticlesByTag", null);
117
+ __decorate([
118
+ common_1.Get('/all/recommend'),
119
+ common_1.HttpCode(common_1.HttpStatus.OK),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", []),
122
+ __metadata("design:returntype", void 0)
123
+ ], ArticleController.prototype, "getRecommendArticles", null);
124
+ __decorate([
125
+ common_1.Get('/archives'),
126
+ common_1.HttpCode(common_1.HttpStatus.OK),
127
+ __metadata("design:type", Function),
128
+ __metadata("design:paramtypes", []),
129
+ __metadata("design:returntype", Promise)
130
+ ], ArticleController.prototype, "getArchives", null);
131
+ __decorate([
132
+ common_1.Get('/recommend'),
133
+ common_1.HttpCode(common_1.HttpStatus.OK),
134
+ __param(0, common_1.Query('articleId')),
135
+ __metadata("design:type", Function),
136
+ __metadata("design:paramtypes", [Object]),
137
+ __metadata("design:returntype", void 0)
138
+ ], ArticleController.prototype, "recommend", null);
139
+ __decorate([
140
+ common_1.Get(':id'),
141
+ __param(0, common_1.Request()), __param(1, common_1.Param('id')), __param(2, common_1.Query('status')),
142
+ __metadata("design:type", Function),
143
+ __metadata("design:paramtypes", [Object, Object, Object]),
144
+ __metadata("design:returntype", Promise)
145
+ ], ArticleController.prototype, "findById", null);
146
+ __decorate([
147
+ common_1.Post(':id/checkPassword'),
148
+ common_1.HttpCode(common_1.HttpStatus.OK),
149
+ __param(0, common_1.Param('id')), __param(1, common_1.Body()),
150
+ __metadata("design:type", Function),
151
+ __metadata("design:paramtypes", [Object, Object]),
152
+ __metadata("design:returntype", void 0)
153
+ ], ArticleController.prototype, "checkPassword", null);
154
+ __decorate([
155
+ common_1.Post(':id/views'),
156
+ common_1.HttpCode(common_1.HttpStatus.OK),
157
+ __param(0, common_1.Param('id')),
158
+ __metadata("design:type", Function),
159
+ __metadata("design:paramtypes", [Object]),
160
+ __metadata("design:returntype", void 0)
161
+ ], ArticleController.prototype, "updateViewsById", null);
162
+ __decorate([
163
+ common_1.Post(':id/likes'),
164
+ common_1.HttpCode(common_1.HttpStatus.OK),
165
+ __param(0, common_1.Param('id')), __param(1, common_1.Body('type')),
166
+ __metadata("design:type", Function),
167
+ __metadata("design:paramtypes", [Object, Object]),
168
+ __metadata("design:returntype", void 0)
169
+ ], ArticleController.prototype, "updateLikesById", null);
170
+ __decorate([
171
+ common_1.Patch(':id'),
172
+ roles_guard_1.Roles('admin'),
173
+ common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
174
+ common_1.HttpCode(common_1.HttpStatus.OK),
175
+ __param(0, common_1.Param('id')), __param(1, common_1.Body()),
176
+ __metadata("design:type", Function),
177
+ __metadata("design:paramtypes", [Object, Object]),
178
+ __metadata("design:returntype", void 0)
179
+ ], ArticleController.prototype, "updateById", null);
180
+ __decorate([
181
+ common_1.Delete(':id'),
182
+ roles_guard_1.Roles('admin'),
183
+ common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
184
+ __param(0, common_1.Param('id')),
185
+ __metadata("design:type", Function),
186
+ __metadata("design:paramtypes", [Object]),
187
+ __metadata("design:returntype", void 0)
188
+ ], ArticleController.prototype, "deleteById", null);
189
+ ArticleController = __decorate([
190
+ swagger_1.ApiTags('Article'),
191
+ common_1.Controller('article'),
192
+ common_1.UseGuards(roles_guard_1.RolesGuard),
193
+ __metadata("design:paramtypes", [article_service_1.ArticleService,
194
+ jwt_1.JwtService,
195
+ user_service_1.UserService])
196
+ ], ArticleController);
197
+ exports.ArticleController = ArticleController;
198
+ //# sourceMappingURL=article.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"article.controller.js","sourceRoot":"","sources":["../../../src/modules/article/article.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Category } from '../category/category.entity';
2
+ import { Tag } from '../tag/tag.entity';
3
+ export declare class Article {
4
+ id: string;
5
+ title: string;
6
+ cover: string;
7
+ summary: string;
8
+ content: string;
9
+ html: string;
10
+ toc: string;
11
+ category: Category;
12
+ tags: Array<Tag>;
13
+ status: string;
14
+ views: number;
15
+ likes: number;
16
+ isRecommended: boolean;
17
+ password: string;
18
+ needPassword: boolean;
19
+ isCommentable: boolean;
20
+ publishAt: Date;
21
+ createAt: Date;
22
+ updateAt: Date;
23
+ }