@fecommunity/reactpress-server 4.0.0-beta.9 → 4.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 (334) hide show
  1. package/README.md +327 -45
  2. package/bin/reactpress-server.js +6 -14
  3. package/dist/app.module.js +27 -15
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/filters/http-exception.filter.js +1 -1
  6. package/dist/filters/http-exception.filter.js.map +1 -1
  7. package/dist/generate-swagger.d.ts +1 -1
  8. package/dist/generate-swagger.js +11 -12
  9. package/dist/generate-swagger.js.map +1 -1
  10. package/dist/interceptors/transform.interceptor.d.ts +6 -2
  11. package/dist/interceptors/transform.interceptor.js +5 -10
  12. package/dist/interceptors/transform.interceptor.js.map +1 -1
  13. package/dist/logger/index.js +4 -5
  14. package/dist/logger/index.js.map +1 -1
  15. package/dist/main.d.ts +1 -1
  16. package/dist/main.js +23 -45
  17. package/dist/main.js.map +1 -1
  18. package/dist/modules/article/article.controller.d.ts +2 -7
  19. package/dist/modules/article/article.controller.js +48 -103
  20. package/dist/modules/article/article.controller.js.map +1 -1
  21. package/dist/modules/article/article.entity.d.ts +0 -4
  22. package/dist/modules/article/article.entity.js +41 -61
  23. package/dist/modules/article/article.entity.js.map +1 -1
  24. package/dist/modules/article/article.module.js +3 -18
  25. package/dist/modules/article/article.module.js.map +1 -1
  26. package/dist/modules/article/article.service.d.ts +2 -16
  27. package/dist/modules/article/article.service.js +29 -151
  28. package/dist/modules/article/article.service.js.map +1 -1
  29. package/dist/modules/auth/auth.controller.js +11 -11
  30. package/dist/modules/auth/auth.controller.js.map +1 -1
  31. package/dist/modules/auth/auth.module.js +4 -4
  32. package/dist/modules/auth/auth.module.js.map +1 -1
  33. package/dist/modules/auth/auth.service.js +7 -8
  34. package/dist/modules/auth/auth.service.js.map +1 -1
  35. package/dist/modules/auth/jwt-auth.guard.js +3 -4
  36. package/dist/modules/auth/jwt-auth.guard.js.map +1 -1
  37. package/dist/modules/auth/jwt.strategy.js +3 -4
  38. package/dist/modules/auth/jwt.strategy.js.map +1 -1
  39. package/dist/modules/auth/roles.guard.js +2 -2
  40. package/dist/modules/auth/roles.guard.js.map +1 -1
  41. package/dist/modules/category/category.controller.js +20 -21
  42. package/dist/modules/category/category.controller.js.map +1 -1
  43. package/dist/modules/category/category.entity.js +13 -13
  44. package/dist/modules/category/category.entity.js.map +1 -1
  45. package/dist/modules/category/category.module.js +1 -1
  46. package/dist/modules/category/category.module.js.map +1 -1
  47. package/dist/modules/category/category.service.js +4 -5
  48. package/dist/modules/category/category.service.js.map +1 -1
  49. package/dist/modules/comment/comment.controller.js +20 -24
  50. package/dist/modules/comment/comment.controller.js.map +1 -1
  51. package/dist/modules/comment/comment.entity.js +31 -31
  52. package/dist/modules/comment/comment.entity.js.map +1 -1
  53. package/dist/modules/comment/comment.module.js +2 -11
  54. package/dist/modules/comment/comment.module.js.map +1 -1
  55. package/dist/modules/comment/comment.service.d.ts +1 -5
  56. package/dist/modules/comment/comment.service.js +16 -43
  57. package/dist/modules/comment/comment.service.js.map +1 -1
  58. package/dist/modules/comment/html.d.ts +1 -1
  59. package/dist/modules/comment/html.js +3 -3
  60. package/dist/modules/comment/html.js.map +1 -1
  61. package/dist/modules/file/file.controller.d.ts +1 -1
  62. package/dist/modules/file/file.controller.js +20 -22
  63. package/dist/modules/file/file.controller.js.map +1 -1
  64. package/dist/modules/file/file.entity.d.ts +0 -7
  65. package/dist/modules/file/file.entity.js +15 -20
  66. package/dist/modules/file/file.entity.js.map +1 -1
  67. package/dist/modules/file/file.module.js +4 -16
  68. package/dist/modules/file/file.module.js.map +1 -1
  69. package/dist/modules/file/file.service.d.ts +1 -5
  70. package/dist/modules/file/file.service.js +24 -70
  71. package/dist/modules/file/file.service.js.map +1 -1
  72. package/dist/modules/install/install.controller.js +5 -5
  73. package/dist/modules/install/install.controller.js.map +1 -1
  74. package/dist/modules/install/install.module.js +1 -1
  75. package/dist/modules/install/install.module.js.map +1 -1
  76. package/dist/modules/install/install.service.js +2 -2
  77. package/dist/modules/install/install.service.js.map +1 -1
  78. package/dist/modules/knowledge/knowledge.controller.js +33 -35
  79. package/dist/modules/knowledge/knowledge.controller.js.map +1 -1
  80. package/dist/modules/knowledge/knowledge.entity.js +33 -33
  81. package/dist/modules/knowledge/knowledge.entity.js.map +1 -1
  82. package/dist/modules/knowledge/knowledge.module.js +1 -1
  83. package/dist/modules/knowledge/knowledge.module.js.map +1 -1
  84. package/dist/modules/knowledge/knowledge.service.js +11 -12
  85. package/dist/modules/knowledge/knowledge.service.js.map +1 -1
  86. package/dist/modules/page/page.controller.js +23 -24
  87. package/dist/modules/page/page.controller.js.map +1 -1
  88. package/dist/modules/page/page.entity.js +27 -27
  89. package/dist/modules/page/page.entity.js.map +1 -1
  90. package/dist/modules/page/page.module.js +1 -1
  91. package/dist/modules/page/page.module.js.map +1 -1
  92. package/dist/modules/page/page.service.js +12 -12
  93. package/dist/modules/page/page.service.js.map +1 -1
  94. package/dist/modules/search/search.controller.js +12 -12
  95. package/dist/modules/search/search.controller.js.map +1 -1
  96. package/dist/modules/search/search.entity.js +13 -13
  97. package/dist/modules/search/search.entity.js.map +1 -1
  98. package/dist/modules/search/search.module.js +1 -1
  99. package/dist/modules/search/search.module.js.map +1 -1
  100. package/dist/modules/search/search.service.js +2 -2
  101. package/dist/modules/search/search.service.js.map +1 -1
  102. package/dist/modules/setting/setting.constant.d.ts +4 -5
  103. package/dist/modules/setting/setting.constant.js +20 -5
  104. package/dist/modules/setting/setting.constant.js.map +1 -1
  105. package/dist/modules/setting/setting.controller.js +11 -11
  106. package/dist/modules/setting/setting.controller.js.map +1 -1
  107. package/dist/modules/setting/setting.entity.d.ts +0 -3
  108. package/dist/modules/setting/setting.entity.js +49 -64
  109. package/dist/modules/setting/setting.entity.js.map +1 -1
  110. package/dist/modules/setting/setting.module.js +2 -2
  111. package/dist/modules/setting/setting.module.js.map +1 -1
  112. package/dist/modules/setting/setting.service.d.ts +2 -13
  113. package/dist/modules/setting/setting.service.js +24 -169
  114. package/dist/modules/setting/setting.service.js.map +1 -1
  115. package/dist/modules/smtp/mail.util.d.ts +6 -7
  116. package/dist/modules/smtp/mail.util.js +9 -5
  117. package/dist/modules/smtp/mail.util.js.map +1 -1
  118. package/dist/modules/smtp/smtp.controller.d.ts +0 -3
  119. package/dist/modules/smtp/smtp.controller.js +14 -27
  120. package/dist/modules/smtp/smtp.controller.js.map +1 -1
  121. package/dist/modules/smtp/smtp.entity.js +15 -15
  122. package/dist/modules/smtp/smtp.entity.js.map +1 -1
  123. package/dist/modules/smtp/smtp.module.js +2 -2
  124. package/dist/modules/smtp/smtp.module.js.map +1 -1
  125. package/dist/modules/smtp/smtp.service.d.ts +0 -14
  126. package/dist/modules/smtp/smtp.service.js +12 -40
  127. package/dist/modules/smtp/smtp.service.js.map +1 -1
  128. package/dist/modules/tag/tag.controller.js +22 -24
  129. package/dist/modules/tag/tag.controller.js.map +1 -1
  130. package/dist/modules/tag/tag.entity.js +12 -12
  131. package/dist/modules/tag/tag.entity.js.map +1 -1
  132. package/dist/modules/tag/tag.module.js +1 -1
  133. package/dist/modules/tag/tag.module.js.map +1 -1
  134. package/dist/modules/tag/tag.service.js +4 -5
  135. package/dist/modules/tag/tag.service.js.map +1 -1
  136. package/dist/modules/user/user.controller.js +28 -39
  137. package/dist/modules/user/user.controller.js.map +1 -1
  138. package/dist/modules/user/user.entity.js +22 -22
  139. package/dist/modules/user/user.entity.js.map +1 -1
  140. package/dist/modules/user/user.module.js +2 -2
  141. package/dist/modules/user/user.module.js.map +1 -1
  142. package/dist/modules/user/user.service.js +12 -16
  143. package/dist/modules/user/user.service.js.map +1 -1
  144. package/dist/modules/view/view.controller.js +19 -20
  145. package/dist/modules/view/view.controller.js.map +1 -1
  146. package/dist/modules/view/view.entity.js +24 -24
  147. package/dist/modules/view/view.entity.js.map +1 -1
  148. package/dist/modules/view/view.module.js +1 -1
  149. package/dist/modules/view/view.module.js.map +1 -1
  150. package/dist/modules/view/view.service.js +4 -4
  151. package/dist/modules/view/view.service.js.map +1 -1
  152. package/dist/public/favicon.png +0 -0
  153. package/dist/starter.d.ts +1 -3
  154. package/dist/starter.js +14 -202
  155. package/dist/starter.js.map +1 -1
  156. package/dist/tsconfig.build.tsbuildinfo +15957 -1
  157. package/dist/utils/date.util.js +1 -1
  158. package/dist/utils/date.util.js.map +1 -1
  159. package/dist/utils/markdown.util.js +1 -1
  160. package/dist/utils/markdown.util.js.map +1 -1
  161. package/dist/utils/oss/aliyun-oss-client.d.ts +1 -3
  162. package/dist/utils/oss/aliyun-oss-client.js +0 -5
  163. package/dist/utils/oss/aliyun-oss-client.js.map +1 -1
  164. package/dist/utils/oss/oss-client.d.ts +1 -3
  165. package/dist/utils/oss/oss-client.js.map +1 -1
  166. package/dist/utils/oss.util.d.ts +1 -3
  167. package/dist/utils/oss.util.js +1 -6
  168. package/dist/utils/oss.util.js.map +1 -1
  169. package/dist/utils/uniqueid.util.js +1 -1
  170. package/dist/utils/uniqueid.util.js.map +1 -1
  171. package/dist/utils/upload.util.d.ts +2 -6
  172. package/dist/utils/upload.util.js +8 -23
  173. package/dist/utils/upload.util.js.map +1 -1
  174. package/dist/utils/user.util.d.ts +0 -1
  175. package/dist/utils/user.util.js +2 -6
  176. package/dist/utils/user.util.js.map +1 -1
  177. package/package.json +28 -21
  178. package/public/favicon.png +0 -0
  179. package/dist/common/api-messages.d.ts +0 -41
  180. package/dist/common/api-messages.js +0 -45
  181. package/dist/common/api-messages.js.map +0 -1
  182. package/dist/database/typeorm-options.d.ts +0 -3
  183. package/dist/database/typeorm-options.js +0 -60
  184. package/dist/database/typeorm-options.js.map +0 -1
  185. package/dist/modules/api-key/api-key.controller.d.ts +0 -14
  186. package/dist/modules/api-key/api-key.controller.js +0 -63
  187. package/dist/modules/api-key/api-key.controller.js.map +0 -1
  188. package/dist/modules/api-key/api-key.entity.d.ts +0 -11
  189. package/dist/modules/api-key/api-key.entity.js +0 -63
  190. package/dist/modules/api-key/api-key.entity.js.map +0 -1
  191. package/dist/modules/api-key/api-key.guard.d.ts +0 -7
  192. package/dist/modules/api-key/api-key.guard.js +0 -39
  193. package/dist/modules/api-key/api-key.guard.js.map +0 -1
  194. package/dist/modules/api-key/api-key.module.d.ts +0 -2
  195. package/dist/modules/api-key/api-key.module.js +0 -28
  196. package/dist/modules/api-key/api-key.module.js.map +0 -1
  197. package/dist/modules/api-key/api-key.service.d.ts +0 -15
  198. package/dist/modules/api-key/api-key.service.js +0 -81
  199. package/dist/modules/api-key/api-key.service.js.map +0 -1
  200. package/dist/modules/article/article-revision.entity.d.ts +0 -11
  201. package/dist/modules/article/article-revision.entity.js +0 -53
  202. package/dist/modules/article/article-revision.entity.js.map +0 -1
  203. package/dist/modules/article/article-slug.util.d.ts +0 -2
  204. package/dist/modules/article/article-slug.util.js +0 -19
  205. package/dist/modules/article/article-slug.util.js.map +0 -1
  206. package/dist/modules/article/scheduled-publish.service.d.ts +0 -13
  207. package/dist/modules/article/scheduled-publish.service.js +0 -65
  208. package/dist/modules/article/scheduled-publish.service.js.map +0 -1
  209. package/dist/modules/bootstrap/bootstrap.constants.d.ts +0 -20
  210. package/dist/modules/bootstrap/bootstrap.constants.js +0 -171
  211. package/dist/modules/bootstrap/bootstrap.constants.js.map +0 -1
  212. package/dist/modules/bootstrap/bootstrap.service.d.ts +0 -22
  213. package/dist/modules/bootstrap/bootstrap.service.js +0 -183
  214. package/dist/modules/bootstrap/bootstrap.service.js.map +0 -1
  215. package/dist/modules/bootstrap/install-locale.d.ts +0 -2
  216. package/dist/modules/bootstrap/install-locale.js +0 -11
  217. package/dist/modules/bootstrap/install-locale.js.map +0 -1
  218. package/dist/modules/extension/extension.module.d.ts +0 -9
  219. package/dist/modules/extension/extension.module.js +0 -50
  220. package/dist/modules/extension/extension.module.js.map +0 -1
  221. package/dist/modules/extension/plugin-loader.service.d.ts +0 -12
  222. package/dist/modules/extension/plugin-loader.service.js +0 -96
  223. package/dist/modules/extension/plugin-loader.service.js.map +0 -1
  224. package/dist/modules/extension/plugin-registry.bridge.d.ts +0 -3
  225. package/dist/modules/extension/plugin-registry.bridge.js +0 -44
  226. package/dist/modules/extension/plugin-registry.bridge.js.map +0 -1
  227. package/dist/modules/extension/plugin.controller.d.ts +0 -22
  228. package/dist/modules/extension/plugin.controller.js +0 -155
  229. package/dist/modules/extension/plugin.controller.js.map +0 -1
  230. package/dist/modules/extension/plugin.service.d.ts +0 -52
  231. package/dist/modules/extension/plugin.service.js +0 -391
  232. package/dist/modules/extension/plugin.service.js.map +0 -1
  233. package/dist/modules/extension/preview-draft.store.d.ts +0 -13
  234. package/dist/modules/extension/preview-draft.store.js +0 -41
  235. package/dist/modules/extension/preview-draft.store.js.map +0 -1
  236. package/dist/modules/extension/theme-registry.bridge.d.ts +0 -56
  237. package/dist/modules/extension/theme-registry.bridge.js +0 -46
  238. package/dist/modules/extension/theme-registry.bridge.js.map +0 -1
  239. package/dist/modules/extension/theme.controller.d.ts +0 -66
  240. package/dist/modules/extension/theme.controller.js +0 -301
  241. package/dist/modules/extension/theme.controller.js.map +0 -1
  242. package/dist/modules/extension/theme.service.d.ts +0 -140
  243. package/dist/modules/extension/theme.service.js +0 -1039
  244. package/dist/modules/extension/theme.service.js.map +0 -1
  245. package/dist/modules/file/file-optimization.controller.d.ts +0 -12
  246. package/dist/modules/file/file-optimization.controller.js +0 -79
  247. package/dist/modules/file/file-optimization.controller.js.map +0 -1
  248. package/dist/modules/file/file-optimization.service.d.ts +0 -36
  249. package/dist/modules/file/file-optimization.service.js +0 -385
  250. package/dist/modules/file/file-optimization.service.js.map +0 -1
  251. package/dist/modules/file/file-optimization.types.d.ts +0 -66
  252. package/dist/modules/file/file-optimization.types.js +0 -5
  253. package/dist/modules/file/file-optimization.types.js.map +0 -1
  254. package/dist/modules/file/image-optimizer-plugin.guard.d.ts +0 -7
  255. package/dist/modules/file/image-optimizer-plugin.guard.js +0 -33
  256. package/dist/modules/file/image-optimizer-plugin.guard.js.map +0 -1
  257. package/dist/modules/health/health.controller.d.ts +0 -11
  258. package/dist/modules/health/health.controller.js +0 -55
  259. package/dist/modules/health/health.controller.js.map +0 -1
  260. package/dist/modules/health/health.module.d.ts +0 -2
  261. package/dist/modules/health/health.module.js +0 -20
  262. package/dist/modules/health/health.module.js.map +0 -1
  263. package/dist/modules/hook/hook.module.d.ts +0 -2
  264. package/dist/modules/hook/hook.module.js +0 -22
  265. package/dist/modules/hook/hook.module.js.map +0 -1
  266. package/dist/modules/hook/hook.service.d.ts +0 -26
  267. package/dist/modules/hook/hook.service.js +0 -105
  268. package/dist/modules/hook/hook.service.js.map +0 -1
  269. package/dist/modules/webhook/webhook.controller.d.ts +0 -12
  270. package/dist/modules/webhook/webhook.controller.js +0 -63
  271. package/dist/modules/webhook/webhook.controller.js.map +0 -1
  272. package/dist/modules/webhook/webhook.entity.d.ts +0 -9
  273. package/dist/modules/webhook/webhook.entity.js +0 -54
  274. package/dist/modules/webhook/webhook.entity.js.map +0 -1
  275. package/dist/modules/webhook/webhook.module.d.ts +0 -2
  276. package/dist/modules/webhook/webhook.module.js +0 -27
  277. package/dist/modules/webhook/webhook.module.js.map +0 -1
  278. package/dist/modules/webhook/webhook.service.d.ts +0 -16
  279. package/dist/modules/webhook/webhook.service.js +0 -100
  280. package/dist/modules/webhook/webhook.service.js.map +0 -1
  281. package/dist/node-polyfills.d.ts +0 -18
  282. package/dist/node-polyfills.js +0 -24
  283. package/dist/node-polyfills.js.map +0 -1
  284. package/dist/public/apple-touch-icon.png +0 -0
  285. package/dist/public/favicon-16.png +0 -0
  286. package/dist/public/favicon-32.png +0 -0
  287. package/dist/public/favicon-48.png +0 -0
  288. package/dist/public/favicon.ico +0 -0
  289. package/dist/public/icon-192.png +0 -0
  290. package/dist/public/icon-512.png +0 -0
  291. package/dist/public/logo-200.png +0 -0
  292. package/dist/public/logo-400.png +0 -0
  293. package/dist/public/logo.png +0 -0
  294. package/dist/public/logo.svg +0 -7
  295. package/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  296. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  297. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  298. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  299. package/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
  300. package/dist/tsconfig.tsbuildinfo +0 -1
  301. package/dist/utils/html-sanitize.util.d.ts +0 -1
  302. package/dist/utils/html-sanitize.util.js +0 -33
  303. package/dist/utils/html-sanitize.util.js.map +0 -1
  304. package/dist/utils/image-processor.util.d.ts +0 -23
  305. package/dist/utils/image-processor.util.js +0 -88
  306. package/dist/utils/image-processor.util.js.map +0 -1
  307. package/dist/utils/local-api-quiet.util.d.ts +0 -1
  308. package/dist/utils/local-api-quiet.util.js +0 -8
  309. package/dist/utils/local-api-quiet.util.js.map +0 -1
  310. package/dist/utils/project-root.util.d.ts +0 -2
  311. package/dist/utils/project-root.util.js +0 -42
  312. package/dist/utils/project-root.util.js.map +0 -1
  313. package/dist/utils/query-whitelist.util.d.ts +0 -1
  314. package/dist/utils/query-whitelist.util.js +0 -100
  315. package/dist/utils/query-whitelist.util.js.map +0 -1
  316. package/dist/utils/theme-placeholder-cover.d.ts +0 -8
  317. package/dist/utils/theme-placeholder-cover.js +0 -94
  318. package/dist/utils/theme-placeholder-cover.js.map +0 -1
  319. package/public/apple-touch-icon.png +0 -0
  320. package/public/favicon-16.png +0 -0
  321. package/public/favicon-32.png +0 -0
  322. package/public/favicon-48.png +0 -0
  323. package/public/favicon.ico +0 -0
  324. package/public/icon-192.png +0 -0
  325. package/public/icon-512.png +0 -0
  326. package/public/logo-200.png +0 -0
  327. package/public/logo-400.png +0 -0
  328. package/public/logo.png +0 -0
  329. package/public/logo.svg +0 -7
  330. package/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  331. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  332. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  333. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  334. package/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
@@ -1,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSystemSettingSeedDefaults = exports.getHelloWorldSeed = exports.HELLO_WORLD_LEGACY_TITLES = exports.HELLO_WORLD_SEED_MARKER = void 0;
4
- exports.HELLO_WORLD_SEED_MARKER = 'reactpress-seed:v4';
5
- exports.HELLO_WORLD_LEGACY_TITLES = ['Hello World', '世界,您好!'];
6
- const SHARED_QUICK_START = `\`\`\`bash
7
- npm i -g @fecommunity/reactpress@3
8
- mkdir my-blog && cd my-blog
9
- reactpress init
10
- reactpress dev
11
- \`\`\``;
12
- const SEED_BY_LOCALE = {
13
- zh: {
14
- systemTitle: 'ReactPress',
15
- systemSubTitle: '又一个 ReactPress 站点',
16
- seoKeyword: 'React,博客,CMS,ReactPress',
17
- seoDesc: '又一个 ReactPress 站点。',
18
- articleTitle: '世界,您好!',
19
- category: { label: '未分类', value: 'uncategorized' },
20
- tags: [
21
- { label: 'ReactPress', value: 'reactpress' },
22
- { label: '入门', value: 'getting-started' },
23
- { label: 'CMS', value: 'cms' },
24
- ],
25
- markdown: `# 世界,您好!
26
-
27
- 欢迎光临 ReactPress。这是您的第一篇示例文章,同时演示 Markdown 常用写法。编辑或删掉它,然后开始写作吧!
28
-
29
- 这是一个普通段落。段落之间用**空行**分隔,行内可以写 **粗体**、*斜体*、~~删除线~~ 和 \`行内代码\`。
30
-
31
- ## 什么是 ReactPress?
32
-
33
- **ReactPress 3.0** 是基于 React、Next.js 与 NestJS 的现代化全栈发布平台。安装 CLI 后执行 \`init\` 与 \`dev\`,即可获得前台站点、管理后台与 API,无需手写复杂配置或手动接数据库。
34
-
35
- > **一个内容中心,多种呈现方式。** 在同一后台发布内容,通过 Web、管理端或 Headless API 展示。
36
-
37
- ### 列表示例
38
-
39
- 无序列表:
40
-
41
- - 编辑或删除本篇示例文章
42
- - 在「外观」中切换主题
43
- - 在「设置」中配置站点信息
44
-
45
- 有序列表:
46
-
47
- 1. 安装 CLI 并初始化项目
48
- 2. 运行 \`reactpress dev\` 启动开发环境
49
- 3. 运行 \`reactpress doctor\` 做环境诊断
50
-
51
- #### 图片与链接
52
-
53
- 站点 Logo 示例(可将 \`/logo.png\` 换成媒体库中的地址):
54
-
55
- ![ReactPress 示例图片](/logo.png)
56
-
57
- 项目链接:[ReactPress 项目主页](https://github.com/fecommunity/reactpress)
58
-
59
- ---
60
-
61
- ## 快速开始
62
-
63
- ${SHARED_QUICK_START}
64
-
65
- | 服务 | 说明 |
66
- | :--- | :--- |
67
- | 前台站点 | \`http://localhost:3001\` |
68
- | 管理后台 | \`http://localhost:3001/admin\` |
69
- | API | \`http://localhost:3002/api\` |
70
-
71
- 代码块示例:
72
-
73
- \`\`\`js
74
- console.log('Hello ReactPress');
75
- \`\`\`
76
-
77
- > 提示:使用后台编辑器工具栏可快速插入标题、图片、表格与代码块;右侧栏可设置分类、标签与发布选项。
78
-
79
- 祝您使用愉快!`,
80
- },
81
- en: {
82
- systemTitle: 'ReactPress',
83
- systemSubTitle: 'Just another ReactPress site',
84
- seoKeyword: 'React,blog,CMS,ReactPress',
85
- seoDesc: 'Just another ReactPress site.',
86
- articleTitle: 'Hello World',
87
- category: { label: 'Uncategorized', value: 'uncategorized' },
88
- tags: [
89
- { label: 'ReactPress', value: 'reactpress' },
90
- { label: 'Getting Started', value: 'getting-started' },
91
- { label: 'CMS', value: 'cms' },
92
- ],
93
- markdown: `# Hello World
94
-
95
- Welcome to ReactPress. This is your first sample post and a quick tour of common Markdown syntax. Edit or delete it, then start writing!
96
-
97
- This is a normal paragraph. Separate paragraphs with a **blank line**. Inline styles: **bold**, *italic*, ~~strikethrough~~, and \`inline code\`.
98
-
99
- ## What is ReactPress?
100
-
101
- **ReactPress** is a modern publishing platform built with React, Next.js, and NestJS. Run \`init\` and \`dev\` after installing the CLI to get a public site, admin console, and API — without hand-writing config or wiring a database yourself.
102
-
103
- > **One backend, many fronts.** Publish in one place; show content on the web, in admin, or through your own apps via the API.
104
-
105
- ### Lists
106
-
107
- Bullet list:
108
-
109
- - Edit or delete this sample post
110
- - Switch themes under Appearance
111
- - Configure your site under Settings
112
-
113
- Numbered list:
114
-
115
- 1. Install the CLI and initialize a project
116
- 2. Run \`reactpress dev\` to start developing
117
- 3. Run \`reactpress doctor\` for environment diagnostics
118
-
119
- #### Images and links
120
-
121
- Site logo example (replace \`/logo.png\` with a URL from the media library):
122
-
123
- ![ReactPress sample image](/logo.png)
124
-
125
- Project link: [ReactPress on GitHub](https://github.com/fecommunity/reactpress)
126
-
127
- ---
128
-
129
- ## Quick start
130
-
131
- ${SHARED_QUICK_START}
132
-
133
- | Service | URL |
134
- | :------ | :-- |
135
- | Public site | \`http://localhost:3001\` |
136
- | Admin | \`http://localhost:3001/admin\` |
137
- | API | \`http://localhost:3002/api\` |
138
-
139
- Code block example:
140
-
141
- \`\`\`js
142
- console.log('Hello ReactPress');
143
- \`\`\`
144
-
145
- > Tip: Use the admin editor toolbar for headings, images, tables, and code blocks. Set category, tags, and publish options in the sidebar.
146
-
147
- Happy publishing!`,
148
- },
149
- };
150
- function getHelloWorldSeed(locale) {
151
- const seed = SEED_BY_LOCALE[locale];
152
- const marker = `<!-- ${exports.HELLO_WORLD_SEED_MARKER}:${locale} -->`;
153
- return Object.assign(Object.assign({}, seed), { markdown: `${marker}\n${seed.markdown}` });
154
- }
155
- exports.getHelloWorldSeed = getHelloWorldSeed;
156
- function getSystemSettingSeedDefaults(locale) {
157
- const seed = SEED_BY_LOCALE[locale];
158
- return {
159
- systemTitle: seed.systemTitle,
160
- systemSubTitle: seed.systemSubTitle,
161
- systemLogo: '/logo.png',
162
- systemFavicon: '/favicon.png',
163
- systemNoticeInfo: '[]',
164
- seoKeyword: seed.seoKeyword,
165
- seoDesc: seed.seoDesc,
166
- baiduAnalyticsId: '',
167
- googleAnalyticsId: '',
168
- };
169
- }
170
- exports.getSystemSettingSeedDefaults = getSystemSettingSeedDefaults;
171
- //# sourceMappingURL=bootstrap.constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.constants.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/bootstrap.constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAG,oBAAoB,CAAC;AAE/C,QAAA,yBAAyB,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAU,CAAC;AAE5E,MAAM,kBAAkB,GAAG;;;;;OAKpB,CAAC;AAER,MAAM,cAAc,GAYhB;IACF,EAAE,EAAE;QACF,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,mBAAmB;QACnC,UAAU,EAAE,yBAAyB;QACrC,OAAO,EAAE,oBAAoB;QAC7B,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE;QAClD,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE;YACzC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAC/B;QACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCZ,kBAAkB;;;;;;;;;;;;;;;;QAgBZ;KACL;IACD,EAAE,EAAE;QACF,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,8BAA8B;QAC9C,UAAU,EAAE,2BAA2B;QACvC,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,aAAa;QAC3B,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;QAC5D,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;YACtD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAC/B;QACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCZ,kBAAkB;;;;;;;;;;;;;;;;kBAgBF;KACf;CACF,CAAC;AAEF,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,+BAAuB,IAAI,MAAM,MAAM,CAAC;IAC/D,uCACK,IAAI,KACP,QAAQ,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,IACvC;AACJ,CAAC;AAPD,8CAOC;AAED,SAAgB,4BAA4B,CAAC,MAAqB;IAChE,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,EAAE;QACpB,iBAAiB,EAAE,EAAE;KACtB,CAAC;AACJ,CAAC;AAbD,oEAaC"}
@@ -1,22 +0,0 @@
1
- import { OnModuleInit } from '@nestjs/common';
2
- import { ConfigService } from '@nestjs/config';
3
- import { Repository } from 'typeorm';
4
- import { ArticleService } from '../article/article.service';
5
- import { Article } from '../article/article.entity';
6
- import { Category } from '../category/category.entity';
7
- import { Tag } from '../tag/tag.entity';
8
- export declare class BootstrapService implements OnModuleInit {
9
- private readonly articleRepository;
10
- private readonly categoryRepository;
11
- private readonly tagRepository;
12
- private readonly articleService;
13
- private readonly configService;
14
- private readonly logger;
15
- constructor(articleRepository: Repository<Article>, categoryRepository: Repository<Category>, tagRepository: Repository<Tag>, articleService: ArticleService, configService: ConfigService);
16
- onModuleInit(): void;
17
- private resolveLocale;
18
- private runFirstRunBootstrap;
19
- seedHelloWorldArticle(): Promise<void>;
20
- private findOrCreateCategory;
21
- private findOrCreateTag;
22
- }
@@ -1,183 +0,0 @@
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 BootstrapService_1;
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.BootstrapService = void 0;
17
- const common_1 = require("@nestjs/common");
18
- const config_1 = require("@nestjs/config");
19
- const typeorm_1 = require("@nestjs/typeorm");
20
- const typeorm_2 = require("typeorm");
21
- const markdown_util_1 = require("../../utils/markdown.util");
22
- const article_service_1 = require("../article/article.service");
23
- const article_entity_1 = require("../article/article.entity");
24
- const category_entity_1 = require("../category/category.entity");
25
- const tag_entity_1 = require("../tag/tag.entity");
26
- const bootstrap_constants_1 = require("./bootstrap.constants");
27
- const install_locale_1 = require("./install-locale");
28
- function extractSummary(markdown) {
29
- var _a;
30
- const plain = (_a = markdown
31
- .replace(/^<!--.*-->$/gm, '')
32
- .replace(/^#+\s+.*$/gm, '')
33
- .replace(/\*\*([^*]+)\*\*/g, '$1')
34
- .replace(/`([^`]+)`/g, '$1')
35
- .replace(/^\d+\.\s+/gm, '')
36
- .replace(/^>\s+.*/gm, '')
37
- .replace(/^---$/gm, '')
38
- .trim()
39
- .split('\n\n')
40
- .find((block) => block.trim() && !block.startsWith('```'))) !== null && _a !== void 0 ? _a : '';
41
- const line = plain.replace(/\n/g, ' ').trim();
42
- if (!line)
43
- return '';
44
- return line.length > 160 ? `${line.slice(0, 157)}...` : line;
45
- }
46
- function needsTocRepair(toc) {
47
- if (!(toc === null || toc === void 0 ? void 0 : toc.trim()))
48
- return true;
49
- try {
50
- const parsed = JSON.parse(toc);
51
- if (!Array.isArray(parsed) || parsed.length === 0)
52
- return true;
53
- const first = parsed[0];
54
- return Array.isArray(first) || !(first && typeof first === 'object' && 'id' in first);
55
- }
56
- catch (_a) {
57
- return true;
58
- }
59
- }
60
- function needsContentRefresh(content, locale) {
61
- if (!(content === null || content === void 0 ? void 0 : content.trim()))
62
- return true;
63
- const marker = `<!-- ${bootstrap_constants_1.HELLO_WORLD_SEED_MARKER}:${locale} -->`;
64
- if (content.includes(marker))
65
- return false;
66
- return (content.includes('## English') ||
67
- content.includes('## 中文') ||
68
- content.includes('Hello World / 欢迎使用') ||
69
- content.includes('reactpress-seed:'));
70
- }
71
- const HELLO_WORLD_COVER = '/logo.png';
72
- function ensureHelloWorldHomeRecommend(article) {
73
- var _a;
74
- let changed = false;
75
- if (!article.isRecommended) {
76
- article.isRecommended = true;
77
- changed = true;
78
- }
79
- if (!((_a = article.cover) === null || _a === void 0 ? void 0 : _a.trim())) {
80
- article.cover = HELLO_WORLD_COVER;
81
- changed = true;
82
- }
83
- return changed;
84
- }
85
- let BootstrapService = BootstrapService_1 = class BootstrapService {
86
- constructor(articleRepository, categoryRepository, tagRepository, articleService, configService) {
87
- this.articleRepository = articleRepository;
88
- this.categoryRepository = categoryRepository;
89
- this.tagRepository = tagRepository;
90
- this.articleService = articleService;
91
- this.configService = configService;
92
- this.logger = new common_1.Logger(BootstrapService_1.name);
93
- }
94
- onModuleInit() {
95
- void this.runFirstRunBootstrap();
96
- }
97
- resolveLocale() {
98
- return (0, install_locale_1.resolveInstallLocale)(this.configService.get('REACTPRESS_LANG') || this.configService.get('LANG'));
99
- }
100
- async runFirstRunBootstrap() {
101
- try {
102
- await this.seedHelloWorldArticle();
103
- }
104
- catch (error) {
105
- this.logger.error('First-run bootstrap failed', error instanceof Error ? error.stack : String(error));
106
- }
107
- }
108
- async seedHelloWorldArticle() {
109
- const locale = this.resolveLocale();
110
- const seed = (0, bootstrap_constants_1.getHelloWorldSeed)(locale);
111
- const { html, toc } = (0, markdown_util_1.marked)(seed.markdown);
112
- const summary = extractSummary(seed.markdown);
113
- const existing = await this.articleRepository.findOne({
114
- where: { title: (0, typeorm_2.In)([...bootstrap_constants_1.HELLO_WORLD_LEGACY_TITLES, seed.articleTitle]) },
115
- });
116
- if (existing) {
117
- const refreshContent = needsContentRefresh(existing.content, locale);
118
- const refreshToc = needsTocRepair(existing.toc);
119
- const refreshRecommend = ensureHelloWorldHomeRecommend(existing);
120
- if (!refreshContent && !refreshToc && !refreshRecommend)
121
- return;
122
- if (refreshContent) {
123
- existing.title = seed.articleTitle;
124
- existing.content = seed.markdown;
125
- existing.summary = summary;
126
- }
127
- if (refreshContent || refreshToc) {
128
- existing.html = html;
129
- existing.toc = toc;
130
- }
131
- await this.articleRepository.save(existing);
132
- this.logger.log(`Hello World sample article updated (${locale})`);
133
- return;
134
- }
135
- if ((await this.articleRepository.count()) > 0)
136
- return;
137
- const category = await this.findOrCreateCategory(seed.category);
138
- const tags = await Promise.all(seed.tags.map((tag) => this.findOrCreateTag(tag)));
139
- await this.articleService.create({
140
- title: seed.articleTitle,
141
- content: seed.markdown,
142
- html,
143
- toc,
144
- summary,
145
- status: 'publish',
146
- cover: HELLO_WORLD_COVER,
147
- category: category.id,
148
- tags: tags.map((tag) => tag.id).join(','),
149
- isRecommended: true,
150
- isCommentable: true,
151
- });
152
- this.logger.log(`Hello World sample article seeded (${locale})`);
153
- }
154
- async findOrCreateCategory(def) {
155
- var _a;
156
- let category = (_a = (await this.categoryRepository.findOne({ where: { value: def.value } }))) !== null && _a !== void 0 ? _a : (await this.categoryRepository.findOne({ where: { label: def.label } }));
157
- if (category)
158
- return category;
159
- category = this.categoryRepository.create(def);
160
- return this.categoryRepository.save(category);
161
- }
162
- async findOrCreateTag(def) {
163
- var _a;
164
- let tag = (_a = (await this.tagRepository.findOne({ where: { value: def.value } }))) !== null && _a !== void 0 ? _a : (await this.tagRepository.findOne({ where: { label: def.label } }));
165
- if (tag)
166
- return tag;
167
- tag = this.tagRepository.create(def);
168
- return this.tagRepository.save(tag);
169
- }
170
- };
171
- BootstrapService = BootstrapService_1 = __decorate([
172
- (0, common_1.Injectable)(),
173
- __param(0, (0, typeorm_1.InjectRepository)(article_entity_1.Article)),
174
- __param(1, (0, typeorm_1.InjectRepository)(category_entity_1.Category)),
175
- __param(2, (0, typeorm_1.InjectRepository)(tag_entity_1.Tag)),
176
- __metadata("design:paramtypes", [typeorm_2.Repository,
177
- typeorm_2.Repository,
178
- typeorm_2.Repository,
179
- article_service_1.ArticleService,
180
- config_1.ConfigService])
181
- ], BootstrapService);
182
- exports.BootstrapService = BootstrapService;
183
- //# sourceMappingURL=bootstrap.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.service.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/bootstrap.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export type InstallLocale = 'zh' | 'en';
2
- export declare function resolveInstallLocale(raw?: string): InstallLocale;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveInstallLocale = void 0;
4
- function resolveInstallLocale(raw) {
5
- const code = String(raw || process.env.REACTPRESS_LANG || process.env.LANG || 'en')
6
- .split(/[._-]/)[0]
7
- .toLowerCase();
8
- return code === 'zh' ? 'zh' : 'en';
9
- }
10
- exports.resolveInstallLocale = resolveInstallLocale;
11
- //# sourceMappingURL=install-locale.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-locale.js","sourceRoot":"","sources":["../../../src/modules/bootstrap/install-locale.ts"],"names":[],"mappings":";;;AAGA,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;SAChF,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACjB,WAAW,EAAE,CAAC;IACjB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AALD,oDAKC"}
@@ -1,9 +0,0 @@
1
- import { OnModuleInit } from '@nestjs/common';
2
- import { PluginLoaderService } from './plugin-loader.service';
3
- import { ThemeService } from './theme.service';
4
- export declare class ExtensionModule implements OnModuleInit {
5
- private readonly themeService;
6
- private readonly pluginLoader;
7
- constructor(themeService: ThemeService, pluginLoader: PluginLoaderService);
8
- onModuleInit(): void;
9
- }
@@ -1,50 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ExtensionModule = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const typeorm_1 = require("@nestjs/typeorm");
15
- const auth_module_1 = require("../auth/auth.module");
16
- const hook_module_1 = require("../hook/hook.module");
17
- const setting_module_1 = require("../setting/setting.module");
18
- const setting_entity_1 = require("../setting/setting.entity");
19
- const plugin_controller_1 = require("./plugin.controller");
20
- const plugin_loader_service_1 = require("./plugin-loader.service");
21
- const plugin_service_1 = require("./plugin.service");
22
- const theme_controller_1 = require("./theme.controller");
23
- const theme_service_1 = require("./theme.service");
24
- let ExtensionModule = class ExtensionModule {
25
- constructor(themeService, pluginLoader) {
26
- this.themeService = themeService;
27
- this.pluginLoader = pluginLoader;
28
- }
29
- onModuleInit() {
30
- void this.themeService.ensureDefaultTheme();
31
- void this.pluginLoader.loadActivePlugins();
32
- }
33
- };
34
- ExtensionModule = __decorate([
35
- (0, common_1.Module)({
36
- imports: [
37
- typeorm_1.TypeOrmModule.forFeature([setting_entity_1.Setting]),
38
- (0, common_1.forwardRef)(() => auth_module_1.AuthModule),
39
- setting_module_1.SettingModule,
40
- hook_module_1.HookModule,
41
- ],
42
- controllers: [theme_controller_1.ThemeController, plugin_controller_1.PluginController],
43
- providers: [theme_service_1.ThemeService, plugin_service_1.PluginService, plugin_loader_service_1.PluginLoaderService],
44
- exports: [theme_service_1.ThemeService, plugin_service_1.PluginService, plugin_loader_service_1.PluginLoaderService],
45
- }),
46
- __metadata("design:paramtypes", [theme_service_1.ThemeService,
47
- plugin_loader_service_1.PluginLoaderService])
48
- ], ExtensionModule);
49
- exports.ExtensionModule = ExtensionModule;
50
- //# sourceMappingURL=extension.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.module.js","sourceRoot":"","sources":["../../../src/modules/extension/extension.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAgD;AAEhD,qDAAiD;AACjD,qDAAiD;AACjD,8DAA0D;AAC1D,8DAAoD;AACpD,2DAAuD;AACvD,mEAA8D;AAC9D,qDAAiD;AACjD,yDAAqD;AACrD,mDAA+C;AAaxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YACmB,YAA0B,EAC1B,YAAiC;QADjC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAqB;IACjD,CAAC;IAEJ,YAAY;QACV,KAAK,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;IAC7C,CAAC;CACF,CAAA;AAVY,eAAe;IAX3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,wBAAO,CAAC,CAAC;YACnC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,8BAAa;YACb,wBAAU;SACX;QACD,WAAW,EAAE,CAAC,kCAAe,EAAE,oCAAgB,CAAC;QAChD,SAAS,EAAE,CAAC,4BAAY,EAAE,8BAAa,EAAE,2CAAmB,CAAC;QAC7D,OAAO,EAAE,CAAC,4BAAY,EAAE,8BAAa,EAAE,2CAAmB,CAAC;KAC5D,CAAC;qCAGiC,4BAAY;QACZ,2CAAmB;GAHzC,eAAe,CAU3B;AAVY,0CAAe"}
@@ -1,12 +0,0 @@
1
- import { HookService } from '../hook/hook.service';
2
- import { PluginService } from './plugin.service';
3
- export declare class PluginLoaderService {
4
- private readonly hookService;
5
- private readonly pluginService;
6
- private readonly logger;
7
- constructor(hookService: HookService, pluginService: PluginService);
8
- loadActivePlugins(): Promise<void>;
9
- loadPlugin(pluginId: string): Promise<void>;
10
- unloadPlugin(pluginId: string): Promise<void>;
11
- reloadPlugin(pluginId: string): Promise<void>;
12
- }
@@ -1,96 +0,0 @@
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 PluginLoaderService_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.PluginLoaderService = void 0;
14
- const extension_1 = require("../../../../toolkit/dist/plugin/extension");
15
- const extension_2 = require("../../../../toolkit/dist/plugin/extension");
16
- const server_1 = require("../../../../toolkit/dist/plugin/server");
17
- const common_1 = require("@nestjs/common");
18
- const fs = require("fs");
19
- const hook_service_1 = require("../hook/hook.service");
20
- const plugin_service_1 = require("./plugin.service");
21
- let PluginLoaderService = PluginLoaderService_1 = class PluginLoaderService {
22
- constructor(hookService, pluginService) {
23
- this.hookService = hookService;
24
- this.pluginService = pluginService;
25
- this.logger = new common_1.Logger(PluginLoaderService_1.name);
26
- }
27
- async loadActivePlugins() {
28
- const state = await this.pluginService.getPluginState();
29
- for (const pluginId of state.activePlugins) {
30
- if (!(0, extension_2.isValidPluginId)(pluginId)) {
31
- this.logger.warn(`Skipping active plugin with invalid id: ${pluginId}`);
32
- continue;
33
- }
34
- await this.loadPlugin(pluginId);
35
- }
36
- }
37
- async loadPlugin(pluginId) {
38
- var _a, _b;
39
- if (!(0, extension_2.isValidPluginId)(pluginId)) {
40
- this.logger.warn(`Refusing to load plugin with invalid id: ${pluginId}`);
41
- return;
42
- }
43
- await this.unloadPlugin(pluginId);
44
- const manifest = this.pluginService.readRuntimeManifest(pluginId);
45
- if (!((_a = manifest === null || manifest === void 0 ? void 0 : manifest.server) === null || _a === void 0 ? void 0 : _a.module)) {
46
- return;
47
- }
48
- const modulePath = this.pluginService.resolveServerModulePath(pluginId, manifest.server.module);
49
- if (!modulePath || !fs.existsSync(modulePath)) {
50
- await this.pluginService.recordLoadError(pluginId, `Server module not found: ${manifest.server.module}`);
51
- return;
52
- }
53
- try {
54
- try {
55
- delete require.cache[require.resolve(modulePath)];
56
- }
57
- catch (_c) {
58
- }
59
- const loaded = require(modulePath);
60
- const mod = ((_b = loaded.default) !== null && _b !== void 0 ? _b : loaded);
61
- if (typeof mod.register !== 'function') {
62
- await this.pluginService.recordLoadError(pluginId, 'Plugin server module has no register() export');
63
- return;
64
- }
65
- this.hookService.registerLoadedModule(pluginId, loaded);
66
- const ctx = await this.pluginService.createPluginContext(pluginId, manifest);
67
- await mod.register(this.hookService, ctx);
68
- await this.pluginService.clearLoadError(pluginId);
69
- this.logger.log(`Loaded plugin "${pluginId}" v${manifest.version}`);
70
- }
71
- catch (err) {
72
- await this.unloadPlugin(pluginId);
73
- const message = err instanceof Error ? err.message : String(err);
74
- await this.pluginService.recordLoadError(pluginId, message);
75
- this.logger.error(`Failed to load plugin "${pluginId}": ${message}`);
76
- }
77
- }
78
- async unloadPlugin(pluginId) {
79
- this.hookService.removePluginHooks(pluginId);
80
- await this.hookService.deactivatePluginModule(pluginId);
81
- }
82
- async reloadPlugin(pluginId) {
83
- await this.unloadPlugin(pluginId);
84
- const state = await this.pluginService.getPluginState();
85
- if (state.activePlugins.includes(pluginId)) {
86
- await this.loadPlugin(pluginId);
87
- }
88
- }
89
- };
90
- PluginLoaderService = PluginLoaderService_1 = __decorate([
91
- (0, common_1.Injectable)(),
92
- __metadata("design:paramtypes", [hook_service_1.HookService,
93
- plugin_service_1.PluginService])
94
- ], PluginLoaderService);
95
- exports.PluginLoaderService = PluginLoaderService;
96
- //# sourceMappingURL=plugin-loader.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.service.js","sourceRoot":"","sources":["../../../src/modules/extension/plugin-loader.service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function readPluginsPackageMeta(root?: string): {
2
- local: string[];
3
- };
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readPluginsPackageMeta = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
6
- const project_root_util_1 = require("../../utils/project-root.util");
7
- const extension_1 = require("../../../../toolkit/dist/plugin/extension");
8
- function scanPluginDirectories(pluginsDir) {
9
- if (!fs.existsSync(pluginsDir))
10
- return [];
11
- const discovered = [];
12
- for (const entry of fs.readdirSync(pluginsDir, { withFileTypes: true })) {
13
- if (!entry.isDirectory())
14
- continue;
15
- if (!(0, extension_1.isValidPluginId)(entry.name))
16
- continue;
17
- if (fs.existsSync(path.join(pluginsDir, entry.name, 'plugin.json'))) {
18
- discovered.push(entry.name);
19
- }
20
- }
21
- return discovered.sort();
22
- }
23
- function readPluginsPackageMeta(root = (0, project_root_util_1.resolveProjectRoot)()) {
24
- var _a;
25
- const pluginsDir = path.join(root, 'plugins');
26
- const pkgPath = path.join(pluginsDir, 'package.json');
27
- let fromRegistry = [];
28
- if (fs.existsSync(pkgPath)) {
29
- try {
30
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
31
- fromRegistry = Array.isArray((_a = pkg.reactpress) === null || _a === void 0 ? void 0 : _a.local)
32
- ? pkg.reactpress.local.filter((id) => typeof id === 'string' && (0, extension_1.isValidPluginId)(id))
33
- : [];
34
- }
35
- catch (_b) {
36
- fromRegistry = [];
37
- }
38
- }
39
- const discovered = scanPluginDirectories(pluginsDir);
40
- const local = [...new Set([...fromRegistry, ...discovered])].sort();
41
- return { local };
42
- }
43
- exports.readPluginsPackageMeta = readPluginsPackageMeta;
44
- //# sourceMappingURL=plugin-registry.bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-registry.bridge.js","sourceRoot":"","sources":["../../../src/modules/extension/plugin-registry.bridge.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAE7B,qEAAmE;AACnE,yEAAmF;AAEnF,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;QACvE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,IAAI,CAAC,IAAA,2BAAe,EAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE;YACnE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B;KACF;IACD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAI,GAAG,IAAA,sCAAkB,GAAE;;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEtD,IAAI,YAAY,GAAa,EAAE,CAAC;IAChC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEtD,CAAC;YACF,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAA,GAAG,CAAC,UAAU,0CAAE,KAAK,CAAC;gBACjD,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CACzB,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,IAAA,2BAAe,EAAC,EAAE,CAAC,CACpE;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QAAC,WAAM;YACN,YAAY,GAAG,EAAE,CAAC;SACnB;KACF;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAvBD,wDAuBC"}