@fecommunity/reactpress 4.0.0-beta.1 → 4.0.0-beta.11

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 (958) hide show
  1. package/README.md +20 -26
  2. package/dist/utils/server-bundle.js +7 -0
  3. package/out/bin/reactpress-theme-client.js +64 -1
  4. package/out/bin/reactpress.js +96 -514
  5. package/out/core/services/config.js +4 -1
  6. package/out/core/services/database/index.js +18 -5
  7. package/out/core/services/database/sqlite.js +28 -5
  8. package/out/core/services/init.js +1 -53
  9. package/out/core/services/local-site.js +15 -10
  10. package/out/core/services/theme-bootstrap.js +51 -0
  11. package/out/core/utils/env-file.js +99 -0
  12. package/out/core/utils/paths.js +5 -4
  13. package/out/lib/api-dev.js +11 -1
  14. package/out/lib/bootstrap.js +13 -40
  15. package/out/lib/cli-events.js +54 -0
  16. package/out/lib/command-palette.js +53 -0
  17. package/out/lib/context-status.js +154 -0
  18. package/out/lib/create-site.js +187 -0
  19. package/out/lib/database-mode.js +45 -0
  20. package/out/lib/design-tokens.js +55 -0
  21. package/out/lib/dev-banner.js +10 -5
  22. package/out/lib/dev-session.js +9 -2
  23. package/out/lib/dev.js +68 -25
  24. package/out/lib/docker.js +12 -0
  25. package/out/lib/doctor.js +131 -10
  26. package/out/lib/http.js +20 -0
  27. package/out/lib/i18n/index.js +5 -1
  28. package/out/lib/i18n/strings.js +161 -81
  29. package/out/lib/lifecycle.js +21 -1
  30. package/out/lib/menu-actions.js +418 -0
  31. package/out/lib/nginx.js +5 -2
  32. package/out/lib/paths.js +11 -0
  33. package/out/lib/pm2.js +9 -2
  34. package/out/lib/ports.js +134 -13
  35. package/out/lib/publish.js +3 -0
  36. package/out/lib/remote-dev.js +5 -1
  37. package/out/lib/server-bundle.js +84 -0
  38. package/out/lib/shell-mode.js +23 -0
  39. package/out/lib/theme-warmup.js +1 -1
  40. package/out/shell/app.js +384 -0
  41. package/out/shell/components/brand-banner.js +93 -0
  42. package/out/shell/components/command-palette.js +77 -0
  43. package/out/shell/components/dev-stepper.js +54 -0
  44. package/out/shell/components/ink-theme.js +86 -0
  45. package/out/shell/components/menu-list.js +49 -0
  46. package/out/shell/components/pulse-bar.js +55 -0
  47. package/out/shell/components/status-rack.js +47 -0
  48. package/out/shell/hooks/use-terminal-size.js +27 -0
  49. package/out/shell/ink-shell.mjs +12056 -0
  50. package/out/shell/lib/shell-layout.js +60 -0
  51. package/out/shell/runtime/render-ink.js +89 -0
  52. package/out/ui/banner-startup.js +117 -0
  53. package/out/ui/banner.js +404 -277
  54. package/out/ui/interactive.js +149 -125
  55. package/out/ui/startup-splash.js +185 -0
  56. package/out/ui/theme.js +62 -10
  57. package/package.json +5 -3
  58. package/server/bin/reactpress-server.js +29 -2
  59. package/server/dist/app.module.js +18 -30
  60. package/server/dist/filters/http-exception.filter.js +1 -1
  61. package/server/dist/generate-swagger.js +12 -11
  62. package/server/dist/interceptors/transform.interceptor.js +10 -5
  63. package/server/dist/logger/index.js +5 -4
  64. package/server/dist/main.js +47 -23
  65. package/server/dist/modules/article/article.controller.js +103 -48
  66. package/server/dist/modules/article/article.entity.js +61 -41
  67. package/server/dist/modules/article/article.module.js +18 -3
  68. package/server/dist/modules/article/article.service.js +151 -29
  69. package/server/dist/modules/auth/auth.controller.js +11 -11
  70. package/server/dist/modules/auth/auth.module.js +4 -4
  71. package/server/dist/modules/auth/auth.service.js +8 -7
  72. package/server/dist/modules/auth/jwt-auth.guard.js +4 -3
  73. package/server/dist/modules/auth/jwt.strategy.js +4 -3
  74. package/server/dist/modules/auth/roles.guard.js +2 -2
  75. package/server/dist/modules/category/category.controller.js +21 -20
  76. package/server/dist/modules/category/category.entity.js +13 -13
  77. package/server/dist/modules/category/category.module.js +1 -1
  78. package/server/dist/modules/category/category.service.js +5 -4
  79. package/server/dist/modules/comment/comment.controller.js +24 -20
  80. package/server/dist/modules/comment/comment.entity.js +31 -31
  81. package/server/dist/modules/comment/comment.module.js +11 -2
  82. package/server/dist/modules/comment/comment.service.js +43 -16
  83. package/server/dist/modules/comment/html.js +3 -3
  84. package/server/dist/modules/extension/preview-draft.store.js +1 -1
  85. package/server/dist/modules/extension/theme.service.js +19 -19
  86. package/server/dist/modules/file/file.controller.js +22 -20
  87. package/server/dist/modules/file/file.entity.js +20 -15
  88. package/server/dist/modules/file/file.module.js +16 -4
  89. package/server/dist/modules/file/file.service.js +70 -24
  90. package/server/dist/modules/install/install.controller.js +5 -5
  91. package/server/dist/modules/install/install.module.js +1 -1
  92. package/server/dist/modules/install/install.service.js +2 -2
  93. package/server/dist/modules/knowledge/knowledge.controller.js +35 -33
  94. package/server/dist/modules/knowledge/knowledge.entity.js +33 -33
  95. package/server/dist/modules/knowledge/knowledge.module.js +1 -1
  96. package/server/dist/modules/knowledge/knowledge.service.js +12 -11
  97. package/server/dist/modules/page/page.controller.js +24 -23
  98. package/server/dist/modules/page/page.entity.js +27 -27
  99. package/server/dist/modules/page/page.module.js +1 -1
  100. package/server/dist/modules/page/page.service.js +12 -12
  101. package/server/dist/modules/search/search.controller.js +12 -12
  102. package/server/dist/modules/search/search.entity.js +13 -13
  103. package/server/dist/modules/search/search.module.js +1 -1
  104. package/server/dist/modules/search/search.service.js +2 -2
  105. package/server/dist/modules/setting/setting.constant.js +3 -19
  106. package/server/dist/modules/setting/setting.controller.js +11 -11
  107. package/server/dist/modules/setting/setting.entity.js +64 -49
  108. package/server/dist/modules/setting/setting.module.js +2 -2
  109. package/server/dist/modules/setting/setting.service.js +169 -24
  110. package/server/dist/modules/smtp/mail.util.js +5 -9
  111. package/server/dist/modules/smtp/smtp.controller.js +27 -14
  112. package/server/dist/modules/smtp/smtp.entity.js +15 -15
  113. package/server/dist/modules/smtp/smtp.module.js +2 -2
  114. package/server/dist/modules/smtp/smtp.service.js +40 -12
  115. package/server/dist/modules/tag/tag.controller.js +24 -22
  116. package/server/dist/modules/tag/tag.entity.js +12 -12
  117. package/server/dist/modules/tag/tag.module.js +1 -1
  118. package/server/dist/modules/tag/tag.service.js +5 -4
  119. package/server/dist/modules/user/user.controller.js +39 -28
  120. package/server/dist/modules/user/user.entity.js +22 -22
  121. package/server/dist/modules/user/user.module.js +2 -2
  122. package/server/dist/modules/user/user.service.js +16 -12
  123. package/server/dist/modules/view/view.controller.js +20 -19
  124. package/server/dist/modules/view/view.entity.js +24 -24
  125. package/server/dist/modules/view/view.module.js +1 -1
  126. package/server/dist/modules/view/view.service.js +4 -4
  127. package/server/dist/starter.js +202 -14
  128. package/server/dist/utils/date.util.js +1 -1
  129. package/server/dist/utils/markdown.util.js +1 -1
  130. package/server/dist/utils/oss/aliyun-oss-client.js +5 -0
  131. package/server/dist/utils/oss.util.js +6 -1
  132. package/server/dist/utils/theme-placeholder-cover.js +94 -0
  133. package/server/dist/utils/uniqueid.util.js +1 -1
  134. package/server/dist/utils/upload.util.js +23 -8
  135. package/server/dist/utils/user.util.js +6 -2
  136. package/server/package-lock.json +21114 -0
  137. package/server/package.json +13 -10
  138. package/server/public/favicon.png +0 -0
  139. package/templates/config.local.json +1 -1
  140. package/templates/env.local.default +1 -1
  141. package/toolkit/dist/.source-fingerprint-toolkit +1 -0
  142. package/toolkit/dist/admin/index.js +18 -0
  143. package/toolkit/dist/admin/permissions.js +33 -0
  144. package/toolkit/dist/admin/registry.js +79 -0
  145. package/toolkit/dist/api/Article.js +188 -0
  146. package/toolkit/dist/api/Auth.js +58 -0
  147. package/toolkit/dist/api/Category.js +84 -0
  148. package/toolkit/dist/api/Comment.js +97 -0
  149. package/toolkit/dist/api/File.js +71 -0
  150. package/toolkit/dist/api/HttpClient.js +96 -0
  151. package/toolkit/dist/api/Knowledge.js +123 -0
  152. package/toolkit/dist/api/Page.js +97 -0
  153. package/toolkit/dist/api/Search.js +58 -0
  154. package/toolkit/dist/api/Setting.js +45 -0
  155. package/toolkit/dist/api/Smtp.js +73 -0
  156. package/toolkit/dist/api/Tag.js +97 -0
  157. package/toolkit/dist/api/User.js +72 -0
  158. package/toolkit/dist/api/View.js +84 -0
  159. package/toolkit/dist/api/index.js +30 -0
  160. package/toolkit/dist/api/instance.js +71 -0
  161. package/toolkit/dist/app/createReactPressApp.js +265 -0
  162. package/toolkit/dist/app/createThemeApp.js +51 -0
  163. package/toolkit/dist/app/devChunkRecovery.js +68 -0
  164. package/toolkit/dist/app/index.js +11 -0
  165. package/toolkit/dist/config/env.js +103 -0
  166. package/toolkit/dist/config/global.js +396 -0
  167. package/toolkit/dist/config/i18n.js +59 -0
  168. package/toolkit/dist/config/index.js +26 -0
  169. package/toolkit/dist/config/locales/en.json +125 -0
  170. package/toolkit/dist/config/locales/zh.json +125 -0
  171. package/toolkit/dist/dev/index.js +12 -0
  172. package/toolkit/dist/dev/portRedirect.js +93 -0
  173. package/toolkit/dist/dev/vitePortRedirectPlugin.js +40 -0
  174. package/toolkit/dist/extension/branding-mods.js +65 -0
  175. package/toolkit/dist/extension/configuration/defaults.js +32 -0
  176. package/toolkit/dist/extension/configuration/formily.js +170 -0
  177. package/toolkit/dist/extension/configuration/index.js +28 -0
  178. package/toolkit/dist/extension/configuration/paths.js +50 -0
  179. package/toolkit/dist/extension/configuration/presets/twentytwentyfive.js +94 -0
  180. package/toolkit/dist/extension/configuration/resolve.js +98 -0
  181. package/toolkit/dist/extension/configuration/types.js +3 -0
  182. package/toolkit/dist/extension/configuration/validate.js +21 -0
  183. package/toolkit/dist/extension/index.js +35 -0
  184. package/toolkit/dist/extension/manifest-normalize.js +75 -0
  185. package/toolkit/dist/extension/node.js +6 -0
  186. package/toolkit/dist/extension/presets/twentytwentyfive-appearance.js +193 -0
  187. package/toolkit/dist/extension/presets/twentytwentyfive-customizer.js +199 -0
  188. package/toolkit/dist/extension/preview.js +92 -0
  189. package/toolkit/dist/extension/site-notices.js +88 -0
  190. package/toolkit/dist/extension/site-settings.js +144 -0
  191. package/toolkit/dist/extension/theme-admin-locale.io.js +54 -0
  192. package/toolkit/dist/extension/theme-admin-locale.js +81 -0
  193. package/toolkit/dist/extension/theme.js +93 -0
  194. package/toolkit/dist/extension/twentytwentyfive-vars.js +100 -0
  195. package/toolkit/dist/index.js +60 -0
  196. package/toolkit/dist/plugin/admin/index.js +20 -0
  197. package/toolkit/dist/plugin/admin/permissions.js +33 -0
  198. package/toolkit/dist/plugin/admin/plugin-admin.js +41 -0
  199. package/toolkit/dist/plugin/admin/registry.js +79 -0
  200. package/toolkit/dist/plugin/admin/slots.js +16 -0
  201. package/toolkit/dist/plugin/client/client.js +95 -0
  202. package/toolkit/dist/plugin/client/index.js +11 -0
  203. package/toolkit/dist/plugin/client/runtime.js +30 -0
  204. package/toolkit/dist/plugin/dev/index.js +16 -0
  205. package/toolkit/dist/plugin/dev/portRedirect.js +111 -0
  206. package/toolkit/dist/plugin/dev/vitePortRedirectPlugin.js +40 -0
  207. package/toolkit/dist/plugin/extension/index.js +20 -0
  208. package/toolkit/dist/plugin/extension/plugin-admin-locale.io.js +54 -0
  209. package/toolkit/dist/plugin/extension/plugin-admin-locale.js +60 -0
  210. package/toolkit/dist/plugin/extension/plugin.js +146 -0
  211. package/toolkit/dist/plugin/extension/security.js +74 -0
  212. package/toolkit/dist/plugin/extension/validate.js +55 -0
  213. package/toolkit/dist/plugin/index.js +52 -0
  214. package/toolkit/dist/plugin/node.js +6 -0
  215. package/toolkit/dist/plugin/react/client.js +95 -0
  216. package/toolkit/dist/plugin/react/index.js +19 -0
  217. package/toolkit/dist/plugin/react/plugin-admin-ui.js +38 -0
  218. package/toolkit/dist/plugin/react/runtime.js +30 -0
  219. package/toolkit/dist/plugin/server/hook-reject.js +39 -0
  220. package/toolkit/dist/plugin/server/index.js +18 -0
  221. package/toolkit/dist/plugin/server/types.js +3 -0
  222. package/toolkit/dist/primitives/AntdStyleTransitionFix.js +16 -0
  223. package/toolkit/dist/primitives/Badge.js +9 -0
  224. package/toolkit/dist/primitives/Button.js +38 -0
  225. package/toolkit/dist/primitives/ColorModeToggle.js +13 -0
  226. package/toolkit/dist/primitives/IconButton.js +13 -0
  227. package/toolkit/dist/primitives/ScrollToTarget.js +48 -0
  228. package/toolkit/dist/primitives/Separator.js +9 -0
  229. package/toolkit/dist/primitives/Skeleton.js +9 -0
  230. package/toolkit/dist/primitives/Slot.js +25 -0
  231. package/toolkit/dist/primitives/Spinner.js +9 -0
  232. package/toolkit/dist/primitives/animation/ConditionTransition.js +13 -0
  233. package/toolkit/dist/primitives/animation/ListTrail.js +14 -0
  234. package/toolkit/dist/primitives/animation/Opacity.js +10 -0
  235. package/toolkit/dist/primitives/animation/Spring.js +29 -0
  236. package/toolkit/dist/primitives/animation/index.js +11 -0
  237. package/toolkit/dist/primitives/cn.js +7 -0
  238. package/toolkit/dist/primitives/icons.js +15 -0
  239. package/toolkit/dist/primitives/index.js +44 -0
  240. package/toolkit/dist/react/client.js +95 -0
  241. package/toolkit/dist/react/index.js +11 -0
  242. package/toolkit/dist/react/runtime.js +30 -0
  243. package/toolkit/dist/theme/antdDocument.js +59 -0
  244. package/toolkit/dist/theme/api/api-data.js +8 -0
  245. package/toolkit/dist/theme/api/api.js +27 -0
  246. package/toolkit/dist/theme/api/httpClient.js +83 -0
  247. package/toolkit/dist/theme/api/json.js +5 -0
  248. package/toolkit/dist/theme/api/jsonp.js +5 -0
  249. package/toolkit/dist/theme/api-data.js +22 -0
  250. package/toolkit/dist/theme/api.js +27 -0
  251. package/toolkit/dist/theme/appearance.js +16 -0
  252. package/toolkit/dist/theme/assets.js +27 -0
  253. package/toolkit/dist/theme/authSession.js +92 -0
  254. package/toolkit/dist/theme/build/antdDocument.js +70 -0
  255. package/toolkit/dist/theme/build/next-config.js +63 -0
  256. package/toolkit/dist/theme/build/node.js +6 -0
  257. package/toolkit/dist/theme/colorMode.js +45 -0
  258. package/toolkit/dist/theme/commentAuthor.js +48 -0
  259. package/toolkit/dist/theme/content/archiveSlim.js +38 -0
  260. package/toolkit/dist/theme/content/articleSlim.js +35 -0
  261. package/toolkit/dist/theme/content/assets.js +106 -0
  262. package/toolkit/dist/theme/content/carouselArticles.js +39 -0
  263. package/toolkit/dist/theme/content/excerpt.js +42 -0
  264. package/toolkit/dist/theme/content/nav.js +30 -0
  265. package/toolkit/dist/theme/content/seo.js +12 -0
  266. package/toolkit/dist/theme/createAntdApp.js +175 -0
  267. package/toolkit/dist/theme/createApp.js +141 -0
  268. package/toolkit/dist/theme/createCatalogApp.js +168 -0
  269. package/toolkit/dist/theme/customizer.js +5 -0
  270. package/toolkit/dist/theme/excerpt.js +31 -0
  271. package/toolkit/dist/theme/extension/branding-mods.js +65 -0
  272. package/toolkit/dist/theme/extension/configuration/defaults.js +32 -0
  273. package/toolkit/dist/theme/extension/configuration/formily.js +170 -0
  274. package/toolkit/dist/theme/extension/configuration/index.js +28 -0
  275. package/toolkit/dist/theme/extension/configuration/paths.js +7 -0
  276. package/toolkit/dist/theme/extension/configuration/presets/twentytwentyfive.js +94 -0
  277. package/toolkit/dist/theme/extension/configuration/resolve.js +98 -0
  278. package/toolkit/dist/theme/extension/configuration/types.js +3 -0
  279. package/toolkit/dist/theme/extension/configuration/validate.js +21 -0
  280. package/toolkit/dist/theme/extension/index.js +38 -0
  281. package/toolkit/dist/theme/extension/manifest-normalize.js +75 -0
  282. package/toolkit/dist/theme/extension/presets/twentytwentyfive-appearance.js +193 -0
  283. package/toolkit/dist/theme/extension/preview.js +92 -0
  284. package/toolkit/dist/theme/extension/site-notices.js +88 -0
  285. package/toolkit/dist/theme/extension/site-settings.js +144 -0
  286. package/toolkit/dist/theme/extension/siteNav.js +17 -0
  287. package/toolkit/dist/theme/extension/theme-admin-locale.io.js +54 -0
  288. package/toolkit/dist/theme/extension/theme-admin-locale.js +68 -0
  289. package/toolkit/dist/theme/extension/theme.js +93 -0
  290. package/toolkit/dist/theme/extension/twentytwentyfive-vars.js +103 -0
  291. package/toolkit/dist/theme/fetch.js +241 -0
  292. package/toolkit/dist/theme/format.js +48 -0
  293. package/toolkit/dist/theme/httpClient.js +89 -0
  294. package/toolkit/dist/theme/index.js +226 -0
  295. package/toolkit/dist/theme/json.js +17 -0
  296. package/toolkit/dist/theme/jsonp.js +27 -0
  297. package/toolkit/dist/theme/locale.js +55 -0
  298. package/toolkit/dist/theme/nav.js +30 -0
  299. package/toolkit/dist/theme/next-config.js +18 -0
  300. package/toolkit/dist/theme/node.js +18 -0
  301. package/toolkit/dist/theme/preview/preview-config.js +65 -0
  302. package/toolkit/dist/theme/preview/preview-draft.js +51 -0
  303. package/toolkit/dist/theme/preview/preview-mods.js +78 -0
  304. package/toolkit/dist/theme/preview-config.js +65 -0
  305. package/toolkit/dist/theme/preview-draft.js +51 -0
  306. package/toolkit/dist/theme/preview-mods.js +78 -0
  307. package/toolkit/dist/theme/providers/index.js +251 -0
  308. package/toolkit/dist/theme/providers/setup.js +29 -0
  309. package/toolkit/dist/theme/runtime.js +19 -0
  310. package/toolkit/dist/theme/seo.js +12 -0
  311. package/toolkit/dist/theme/server.js +177 -0
  312. package/toolkit/dist/theme/setting.js +42 -0
  313. package/toolkit/dist/theme/ssr/bootstrap.js +112 -0
  314. package/toolkit/dist/theme/ssr/fetch.js +264 -0
  315. package/toolkit/dist/theme/ssr/format.js +8 -0
  316. package/toolkit/dist/theme/ssr/pageProps.js +155 -0
  317. package/toolkit/dist/theme/ssr/setting.js +45 -0
  318. package/toolkit/dist/theme/ssr/slimBootstrap.js +75 -0
  319. package/toolkit/dist/theme/ssr/static.js +17 -0
  320. package/toolkit/dist/theme/ssr/templates.js +50 -0
  321. package/toolkit/dist/theme/static.js +17 -0
  322. package/toolkit/dist/theme/templates.js +38 -0
  323. package/toolkit/dist/theme/ui-optional.js +21 -0
  324. package/toolkit/dist/theme/visitor/appearance.js +16 -0
  325. package/toolkit/dist/theme/visitor/authSession.js +92 -0
  326. package/toolkit/dist/theme/visitor/colorMode.js +59 -0
  327. package/toolkit/dist/theme/visitor/commentAuthor.js +45 -0
  328. package/toolkit/dist/theme/visitor/i18n.js +28 -0
  329. package/toolkit/dist/theme/visitor/locale.js +72 -0
  330. package/toolkit/dist/theme/visitor/runtime.js +19 -0
  331. package/toolkit/dist/theme/visitor/visitorLocale.js +56 -0
  332. package/toolkit/dist/theme/visitorLocale.js +39 -0
  333. package/toolkit/dist/types/index.js +12 -0
  334. package/toolkit/dist/ui/AntdStyleTransitionFix.js +16 -0
  335. package/toolkit/dist/ui/ArchiveEmptyState.js +8 -0
  336. package/toolkit/dist/ui/ArchivePageLayout.js +8 -0
  337. package/toolkit/dist/ui/ArticleCard.js +16 -0
  338. package/toolkit/dist/ui/ArticleList.js +16 -0
  339. package/toolkit/dist/ui/BaseGlobalStyles.js +18 -0
  340. package/toolkit/dist/ui/LocaleSwitcher.js +15 -0
  341. package/toolkit/dist/ui/NavMenu.js +8 -0
  342. package/toolkit/dist/ui/NotFoundPanel.js +8 -0
  343. package/toolkit/dist/ui/PageHeader.js +8 -0
  344. package/toolkit/dist/ui/SiteBranding.js +14 -0
  345. package/toolkit/dist/ui/SiteDocument.js +13 -0
  346. package/toolkit/dist/ui/SiteDocumentFallback.js +9 -0
  347. package/toolkit/dist/ui/SiteLogo.js +16 -0
  348. package/toolkit/dist/ui/SiteTagline.js +15 -0
  349. package/toolkit/dist/ui/TaxonomyList.js +30 -0
  350. package/toolkit/dist/ui/ThemeCssVars.js +85 -0
  351. package/toolkit/dist/ui/ThemeLayout.js +11 -0
  352. package/toolkit/dist/ui/components/AntdStyleTransitionFix.js +16 -0
  353. package/toolkit/dist/ui/components/ArchiveEmptyState.js +8 -0
  354. package/toolkit/dist/ui/components/ArchivePageLayout.js +8 -0
  355. package/toolkit/dist/ui/components/ArticleCard.js +16 -0
  356. package/toolkit/dist/ui/components/ArticleList.js +16 -0
  357. package/toolkit/dist/ui/components/BaseGlobalStyles.js +18 -0
  358. package/toolkit/dist/ui/components/LocaleSwitcher.js +11 -0
  359. package/toolkit/dist/ui/components/NavMenu.js +8 -0
  360. package/toolkit/dist/ui/components/NotFoundPanel.js +8 -0
  361. package/toolkit/dist/ui/components/PageHeader.js +8 -0
  362. package/toolkit/dist/ui/components/RouteProgress.js +40 -0
  363. package/toolkit/dist/ui/components/SiteAnalytics.js +42 -0
  364. package/toolkit/dist/ui/components/SiteBranding.js +14 -0
  365. package/toolkit/dist/ui/components/SiteDocument.js +13 -0
  366. package/toolkit/dist/ui/components/SiteDocumentFallback.js +9 -0
  367. package/toolkit/dist/ui/components/SiteLogo.js +23 -0
  368. package/toolkit/dist/ui/components/SiteSeo.js +19 -0
  369. package/toolkit/dist/ui/components/SiteTagline.js +15 -0
  370. package/toolkit/dist/ui/components/TaxonomyList.js +30 -0
  371. package/toolkit/dist/ui/components/ThemeCssVars.js +85 -0
  372. package/toolkit/dist/ui/components/ThemeLayout.js +11 -0
  373. package/toolkit/dist/ui/components/content/ArticleReader.js +23 -0
  374. package/toolkit/dist/ui/components/content/ArticleToc.js +75 -0
  375. package/toolkit/dist/ui/components/content/HtmlContent.js +237 -0
  376. package/toolkit/dist/ui/components/content/Image.js +13 -0
  377. package/toolkit/dist/ui/components/content/ImageViewer.js +33 -0
  378. package/toolkit/dist/ui/components/content/LocaleTime.js +63 -0
  379. package/toolkit/dist/ui/components/content/index.js +18 -0
  380. package/toolkit/dist/ui/components/toolbar/LocaleToggleButton.js +18 -0
  381. package/toolkit/dist/ui/components/toolbar/ThemeToggleButton.js +10 -0
  382. package/toolkit/dist/ui/components/toolbar/ToolbarIconButton.js +22 -0
  383. package/toolkit/dist/ui/components/toolbar/constants.js +8 -0
  384. package/toolkit/dist/ui/components/toolbar/icons.js +44 -0
  385. package/toolkit/dist/ui/components/toolbar/index.js +25 -0
  386. package/toolkit/dist/ui/components/toolbar/locale-label.js +19 -0
  387. package/toolkit/dist/ui/context/LocaleContext.js +59 -0
  388. package/toolkit/dist/ui/context/ReactPressProvider.js +10 -0
  389. package/toolkit/dist/ui/context/SiteCatalogContext.js +60 -0
  390. package/toolkit/dist/ui/context/ThemeRuntimeContext.js +59 -0
  391. package/toolkit/dist/ui/context/index.js +26 -0
  392. package/toolkit/dist/ui/context/siteCatalogTypes.js +20 -0
  393. package/toolkit/dist/ui/context/types.js +2 -0
  394. package/toolkit/dist/ui/hooks/index.js +29 -0
  395. package/toolkit/dist/ui/hooks/useAsyncLoading.js +31 -0
  396. package/toolkit/dist/ui/hooks/useForceUpdate.js +11 -0
  397. package/toolkit/dist/ui/hooks/useNavActive.js +11 -0
  398. package/toolkit/dist/ui/hooks/usePagination.js +55 -0
  399. package/toolkit/dist/ui/hooks/useReportArticleView.js +40 -0
  400. package/toolkit/dist/ui/hooks/useReportPageView.js +28 -0
  401. package/toolkit/dist/ui/hooks/useRouteParam.js +15 -0
  402. package/toolkit/dist/ui/hooks/useToggle.js +17 -0
  403. package/toolkit/dist/ui/hooks/useWarningOnExit.js +59 -0
  404. package/toolkit/dist/ui/index.js +87 -0
  405. package/toolkit/dist/utils/api-envelope.js +31 -0
  406. package/toolkit/dist/utils/clipboard.js +24 -0
  407. package/toolkit/dist/utils/cookie.js +15 -0
  408. package/toolkit/dist/utils/date.js +45 -0
  409. package/toolkit/dist/utils/email.js +9 -0
  410. package/toolkit/dist/utils/error.js +26 -0
  411. package/toolkit/dist/utils/image.js +34 -0
  412. package/toolkit/dist/utils/index.js +39 -0
  413. package/toolkit/dist/utils/json.js +18 -0
  414. package/toolkit/dist/utils/jsonp.js +27 -0
  415. package/toolkit/dist/utils/object.js +63 -0
  416. package/toolkit/dist/utils/setting.js +13 -0
  417. package/toolkit/dist/utils/string.js +15 -0
  418. package/toolkit/dist/utils/viewport.js +14 -0
  419. package/toolkit/package-lock.json +452 -0
  420. package/toolkit/package.json +108 -0
  421. package/dist/cli.d.ts +0 -4
  422. package/dist/cli.d.ts.map +0 -1
  423. package/dist/cli.js.map +0 -1
  424. package/dist/commands/config.d.ts +0 -8
  425. package/dist/commands/config.d.ts.map +0 -1
  426. package/dist/commands/config.js.map +0 -1
  427. package/dist/commands/init.d.ts +0 -6
  428. package/dist/commands/init.d.ts.map +0 -1
  429. package/dist/commands/init.js.map +0 -1
  430. package/dist/commands/restart.d.ts +0 -2
  431. package/dist/commands/restart.d.ts.map +0 -1
  432. package/dist/commands/restart.js.map +0 -1
  433. package/dist/commands/start.d.ts +0 -2
  434. package/dist/commands/start.d.ts.map +0 -1
  435. package/dist/commands/start.js.map +0 -1
  436. package/dist/commands/status.d.ts +0 -2
  437. package/dist/commands/status.d.ts.map +0 -1
  438. package/dist/commands/status.js.map +0 -1
  439. package/dist/commands/stop.d.ts +0 -5
  440. package/dist/commands/stop.d.ts.map +0 -1
  441. package/dist/commands/stop.js.map +0 -1
  442. package/dist/index.d.ts +0 -3
  443. package/dist/index.d.ts.map +0 -1
  444. package/dist/index.js.map +0 -1
  445. package/dist/services/config.d.ts +0 -11
  446. package/dist/services/config.d.ts.map +0 -1
  447. package/dist/services/config.js.map +0 -1
  448. package/dist/services/database.d.ts +0 -43
  449. package/dist/services/database.d.ts.map +0 -1
  450. package/dist/services/database.js.map +0 -1
  451. package/dist/services/exec.d.ts +0 -22
  452. package/dist/services/exec.d.ts.map +0 -1
  453. package/dist/services/exec.js.map +0 -1
  454. package/dist/services/init.d.ts +0 -10
  455. package/dist/services/init.d.ts.map +0 -1
  456. package/dist/services/init.js.map +0 -1
  457. package/dist/services/process.d.ts +0 -9
  458. package/dist/services/process.d.ts.map +0 -1
  459. package/dist/services/process.js.map +0 -1
  460. package/dist/services/server-health.d.ts +0 -4
  461. package/dist/services/server-health.d.ts.map +0 -1
  462. package/dist/services/server-health.js.map +0 -1
  463. package/dist/services/server.d.ts +0 -19
  464. package/dist/services/server.d.ts.map +0 -1
  465. package/dist/services/server.js.map +0 -1
  466. package/dist/types/config.d.ts +0 -30
  467. package/dist/types/config.d.ts.map +0 -1
  468. package/dist/types/config.js.map +0 -1
  469. package/dist/utils/cli-context.d.ts +0 -4
  470. package/dist/utils/cli-context.d.ts.map +0 -1
  471. package/dist/utils/cli-context.js.map +0 -1
  472. package/dist/utils/logger.d.ts +0 -10
  473. package/dist/utils/logger.d.ts.map +0 -1
  474. package/dist/utils/logger.js.map +0 -1
  475. package/dist/utils/paths.d.ts +0 -17
  476. package/dist/utils/paths.d.ts.map +0 -1
  477. package/dist/utils/paths.js.map +0 -1
  478. package/dist/utils/platform.d.ts +0 -8
  479. package/dist/utils/platform.d.ts.map +0 -1
  480. package/dist/utils/platform.js.map +0 -1
  481. package/dist/utils/port.d.ts +0 -5
  482. package/dist/utils/port.d.ts.map +0 -1
  483. package/dist/utils/port.js.map +0 -1
  484. package/dist/utils/server-bundle.d.ts +0 -11
  485. package/dist/utils/server-bundle.d.ts.map +0 -1
  486. package/dist/utils/server-bundle.js.map +0 -1
  487. package/out/bin/reactpress-cli-shim.d.ts +0 -3
  488. package/out/bin/reactpress-cli-shim.d.ts.map +0 -1
  489. package/out/bin/reactpress-cli-shim.js.map +0 -1
  490. package/out/bin/reactpress-theme-client.d.ts +0 -3
  491. package/out/bin/reactpress-theme-client.d.ts.map +0 -1
  492. package/out/bin/reactpress-theme-client.js.map +0 -1
  493. package/out/bin/reactpress.d.ts +0 -3
  494. package/out/bin/reactpress.d.ts.map +0 -1
  495. package/out/bin/reactpress.js.map +0 -1
  496. package/out/core/services/config.d.ts +0 -12
  497. package/out/core/services/config.d.ts.map +0 -1
  498. package/out/core/services/config.js.map +0 -1
  499. package/out/core/services/database/index.d.ts +0 -17
  500. package/out/core/services/database/index.d.ts.map +0 -1
  501. package/out/core/services/database/index.js.map +0 -1
  502. package/out/core/services/database/mysql.d.ts +0 -14
  503. package/out/core/services/database/mysql.d.ts.map +0 -1
  504. package/out/core/services/database/mysql.js.map +0 -1
  505. package/out/core/services/database/profile.d.ts +0 -6
  506. package/out/core/services/database/profile.d.ts.map +0 -1
  507. package/out/core/services/database/profile.js.map +0 -1
  508. package/out/core/services/database/sqlite.d.ts +0 -10
  509. package/out/core/services/database/sqlite.d.ts.map +0 -1
  510. package/out/core/services/database/sqlite.js.map +0 -1
  511. package/out/core/services/exec.d.ts +0 -21
  512. package/out/core/services/exec.d.ts.map +0 -1
  513. package/out/core/services/exec.js.map +0 -1
  514. package/out/core/services/init.d.ts +0 -11
  515. package/out/core/services/init.d.ts.map +0 -1
  516. package/out/core/services/init.js.map +0 -1
  517. package/out/core/services/local-site.d.ts +0 -24
  518. package/out/core/services/local-site.d.ts.map +0 -1
  519. package/out/core/services/local-site.js.map +0 -1
  520. package/out/core/utils/cli-context.d.ts +0 -3
  521. package/out/core/utils/cli-context.d.ts.map +0 -1
  522. package/out/core/utils/cli-context.js.map +0 -1
  523. package/out/core/utils/paths.d.ts +0 -20
  524. package/out/core/utils/paths.d.ts.map +0 -1
  525. package/out/core/utils/paths.js.map +0 -1
  526. package/out/core/utils/platform.d.ts +0 -7
  527. package/out/core/utils/platform.d.ts.map +0 -1
  528. package/out/core/utils/platform.js.map +0 -1
  529. package/out/core/utils/port.d.ts +0 -4
  530. package/out/core/utils/port.d.ts.map +0 -1
  531. package/out/core/utils/port.js.map +0 -1
  532. package/out/lib/api-dev-runner.d.ts +0 -3
  533. package/out/lib/api-dev-runner.d.ts.map +0 -1
  534. package/out/lib/api-dev-runner.js.map +0 -1
  535. package/out/lib/api-dev.d.ts +0 -2
  536. package/out/lib/api-dev.d.ts.map +0 -1
  537. package/out/lib/api-dev.js.map +0 -1
  538. package/out/lib/bootstrap.d.ts +0 -18
  539. package/out/lib/bootstrap.d.ts.map +0 -1
  540. package/out/lib/bootstrap.js.map +0 -1
  541. package/out/lib/build.d.ts +0 -2
  542. package/out/lib/build.d.ts.map +0 -1
  543. package/out/lib/build.js.map +0 -1
  544. package/out/lib/db-backup.d.ts +0 -2
  545. package/out/lib/db-backup.d.ts.map +0 -1
  546. package/out/lib/db-backup.js.map +0 -1
  547. package/out/lib/dev-banner.d.ts +0 -2
  548. package/out/lib/dev-banner.d.ts.map +0 -1
  549. package/out/lib/dev-banner.js.map +0 -1
  550. package/out/lib/dev-child-io.d.ts +0 -2
  551. package/out/lib/dev-child-io.d.ts.map +0 -1
  552. package/out/lib/dev-child-io.js.map +0 -1
  553. package/out/lib/dev-log.d.ts +0 -2
  554. package/out/lib/dev-log.d.ts.map +0 -1
  555. package/out/lib/dev-log.js.map +0 -1
  556. package/out/lib/dev-session.d.ts +0 -2
  557. package/out/lib/dev-session.d.ts.map +0 -1
  558. package/out/lib/dev-session.js.map +0 -1
  559. package/out/lib/dev.d.ts +0 -2
  560. package/out/lib/dev.d.ts.map +0 -1
  561. package/out/lib/dev.js.map +0 -1
  562. package/out/lib/docker.d.ts +0 -2
  563. package/out/lib/docker.d.ts.map +0 -1
  564. package/out/lib/docker.js.map +0 -1
  565. package/out/lib/doctor.d.ts +0 -2
  566. package/out/lib/doctor.d.ts.map +0 -1
  567. package/out/lib/doctor.js.map +0 -1
  568. package/out/lib/health-parse.d.ts +0 -5
  569. package/out/lib/health-parse.d.ts.map +0 -1
  570. package/out/lib/health-parse.js.map +0 -1
  571. package/out/lib/health-parse.test.d.ts +0 -2
  572. package/out/lib/health-parse.test.d.ts.map +0 -1
  573. package/out/lib/health-parse.test.js.map +0 -1
  574. package/out/lib/http.d.ts +0 -2
  575. package/out/lib/http.d.ts.map +0 -1
  576. package/out/lib/http.js.map +0 -1
  577. package/out/lib/i18n/index.d.ts +0 -2
  578. package/out/lib/i18n/index.d.ts.map +0 -1
  579. package/out/lib/i18n/index.js.map +0 -1
  580. package/out/lib/i18n/strings.d.ts +0 -2
  581. package/out/lib/i18n/strings.d.ts.map +0 -1
  582. package/out/lib/i18n/strings.js.map +0 -1
  583. package/out/lib/lifecycle.d.ts +0 -2
  584. package/out/lib/lifecycle.d.ts.map +0 -1
  585. package/out/lib/lifecycle.js.map +0 -1
  586. package/out/lib/nginx.d.ts +0 -2
  587. package/out/lib/nginx.d.ts.map +0 -1
  588. package/out/lib/nginx.js.map +0 -1
  589. package/out/lib/paths.d.ts +0 -2
  590. package/out/lib/paths.d.ts.map +0 -1
  591. package/out/lib/paths.js.map +0 -1
  592. package/out/lib/plugin-build.d.ts +0 -2
  593. package/out/lib/plugin-build.d.ts.map +0 -1
  594. package/out/lib/plugin-build.js.map +0 -1
  595. package/out/lib/plugin-cli.d.ts +0 -2
  596. package/out/lib/plugin-cli.d.ts.map +0 -1
  597. package/out/lib/plugin-cli.js.map +0 -1
  598. package/out/lib/pm2.d.ts +0 -2
  599. package/out/lib/pm2.d.ts.map +0 -1
  600. package/out/lib/pm2.js.map +0 -1
  601. package/out/lib/ports.d.ts +0 -2
  602. package/out/lib/ports.d.ts.map +0 -1
  603. package/out/lib/ports.js.map +0 -1
  604. package/out/lib/process.d.ts +0 -2
  605. package/out/lib/process.d.ts.map +0 -1
  606. package/out/lib/process.js.map +0 -1
  607. package/out/lib/prod-memory.d.ts +0 -6
  608. package/out/lib/prod-memory.d.ts.map +0 -1
  609. package/out/lib/prod-memory.js.map +0 -1
  610. package/out/lib/project-type.d.ts +0 -2
  611. package/out/lib/project-type.d.ts.map +0 -1
  612. package/out/lib/project-type.js.map +0 -1
  613. package/out/lib/publish.d.ts +0 -3
  614. package/out/lib/publish.d.ts.map +0 -1
  615. package/out/lib/publish.js.map +0 -1
  616. package/out/lib/remote-dev.d.ts +0 -2
  617. package/out/lib/remote-dev.d.ts.map +0 -1
  618. package/out/lib/remote-dev.js.map +0 -1
  619. package/out/lib/root.d.ts +0 -2
  620. package/out/lib/root.d.ts.map +0 -1
  621. package/out/lib/root.js.map +0 -1
  622. package/out/lib/spawn.d.ts +0 -2
  623. package/out/lib/spawn.d.ts.map +0 -1
  624. package/out/lib/spawn.js.map +0 -1
  625. package/out/lib/status.d.ts +0 -2
  626. package/out/lib/status.d.ts.map +0 -1
  627. package/out/lib/status.js.map +0 -1
  628. package/out/lib/theme-catalog.d.ts +0 -2
  629. package/out/lib/theme-catalog.d.ts.map +0 -1
  630. package/out/lib/theme-catalog.js.map +0 -1
  631. package/out/lib/theme-cli.d.ts +0 -2
  632. package/out/lib/theme-cli.d.ts.map +0 -1
  633. package/out/lib/theme-cli.js.map +0 -1
  634. package/out/lib/theme-dev.d.ts +0 -2
  635. package/out/lib/theme-dev.d.ts.map +0 -1
  636. package/out/lib/theme-dev.js.map +0 -1
  637. package/out/lib/theme-env.d.ts +0 -2
  638. package/out/lib/theme-env.d.ts.map +0 -1
  639. package/out/lib/theme-env.js.map +0 -1
  640. package/out/lib/theme-install.d.ts +0 -2
  641. package/out/lib/theme-install.d.ts.map +0 -1
  642. package/out/lib/theme-install.js.map +0 -1
  643. package/out/lib/theme-lock.d.ts +0 -2
  644. package/out/lib/theme-lock.d.ts.map +0 -1
  645. package/out/lib/theme-lock.js.map +0 -1
  646. package/out/lib/theme-paths.d.ts +0 -2
  647. package/out/lib/theme-paths.d.ts.map +0 -1
  648. package/out/lib/theme-paths.js.map +0 -1
  649. package/out/lib/theme-placeholder-cover.d.ts +0 -13
  650. package/out/lib/theme-placeholder-cover.d.ts.map +0 -1
  651. package/out/lib/theme-placeholder-cover.js.map +0 -1
  652. package/out/lib/theme-preview-frame.d.ts +0 -2
  653. package/out/lib/theme-preview-frame.d.ts.map +0 -1
  654. package/out/lib/theme-preview-frame.js.map +0 -1
  655. package/out/lib/theme-preview-pool.d.ts +0 -2
  656. package/out/lib/theme-preview-pool.d.ts.map +0 -1
  657. package/out/lib/theme-preview-pool.js.map +0 -1
  658. package/out/lib/theme-preview-proxy.d.ts +0 -2
  659. package/out/lib/theme-preview-proxy.d.ts.map +0 -1
  660. package/out/lib/theme-preview-proxy.js.map +0 -1
  661. package/out/lib/theme-prod.d.ts +0 -2
  662. package/out/lib/theme-prod.d.ts.map +0 -1
  663. package/out/lib/theme-prod.js.map +0 -1
  664. package/out/lib/theme-registry.d.ts +0 -2
  665. package/out/lib/theme-registry.d.ts.map +0 -1
  666. package/out/lib/theme-registry.js.map +0 -1
  667. package/out/lib/theme-runtime.d.ts +0 -2
  668. package/out/lib/theme-runtime.d.ts.map +0 -1
  669. package/out/lib/theme-runtime.js.map +0 -1
  670. package/out/lib/theme-sources.d.ts +0 -2
  671. package/out/lib/theme-sources.d.ts.map +0 -1
  672. package/out/lib/theme-sources.js.map +0 -1
  673. package/out/lib/theme-warmup.d.ts +0 -2
  674. package/out/lib/theme-warmup.d.ts.map +0 -1
  675. package/out/lib/theme-warmup.js.map +0 -1
  676. package/out/lib/toolkit-build.d.ts +0 -2
  677. package/out/lib/toolkit-build.d.ts.map +0 -1
  678. package/out/lib/toolkit-build.js.map +0 -1
  679. package/out/types/config.d.ts +0 -57
  680. package/out/types/config.d.ts.map +0 -1
  681. package/out/types/config.js.map +0 -1
  682. package/out/ui/banner.d.ts +0 -2
  683. package/out/ui/banner.d.ts.map +0 -1
  684. package/out/ui/banner.js.map +0 -1
  685. package/out/ui/interactive.d.ts +0 -2
  686. package/out/ui/interactive.d.ts.map +0 -1
  687. package/out/ui/interactive.js.map +0 -1
  688. package/out/ui/prompts.d.ts +0 -2
  689. package/out/ui/prompts.d.ts.map +0 -1
  690. package/out/ui/prompts.js.map +0 -1
  691. package/out/ui/theme.d.ts +0 -2
  692. package/out/ui/theme.d.ts.map +0 -1
  693. package/out/ui/theme.js.map +0 -1
  694. package/server/dist/app.module.d.ts +0 -2
  695. package/server/dist/app.module.js.map +0 -1
  696. package/server/dist/common/api-messages.d.ts +0 -41
  697. package/server/dist/common/api-messages.js.map +0 -1
  698. package/server/dist/database/typeorm-options.d.ts +0 -3
  699. package/server/dist/database/typeorm-options.js.map +0 -1
  700. package/server/dist/filters/http-exception.filter.d.ts +0 -4
  701. package/server/dist/filters/http-exception.filter.js.map +0 -1
  702. package/server/dist/generate-swagger.d.ts +0 -1
  703. package/server/dist/generate-swagger.js.map +0 -1
  704. package/server/dist/interceptors/transform.interceptor.d.ts +0 -9
  705. package/server/dist/interceptors/transform.interceptor.js.map +0 -1
  706. package/server/dist/logger/index.d.ts +0 -4
  707. package/server/dist/logger/index.js.map +0 -1
  708. package/server/dist/main.d.ts +0 -6
  709. package/server/dist/main.js.map +0 -1
  710. package/server/dist/modules/api-key/api-key.controller.d.ts +0 -14
  711. package/server/dist/modules/api-key/api-key.controller.js.map +0 -1
  712. package/server/dist/modules/api-key/api-key.entity.d.ts +0 -11
  713. package/server/dist/modules/api-key/api-key.entity.js.map +0 -1
  714. package/server/dist/modules/api-key/api-key.guard.d.ts +0 -7
  715. package/server/dist/modules/api-key/api-key.guard.js.map +0 -1
  716. package/server/dist/modules/api-key/api-key.module.d.ts +0 -2
  717. package/server/dist/modules/api-key/api-key.module.js.map +0 -1
  718. package/server/dist/modules/api-key/api-key.service.d.ts +0 -15
  719. package/server/dist/modules/api-key/api-key.service.js.map +0 -1
  720. package/server/dist/modules/article/article-revision.entity.d.ts +0 -11
  721. package/server/dist/modules/article/article-revision.entity.js.map +0 -1
  722. package/server/dist/modules/article/article-slug.util.d.ts +0 -2
  723. package/server/dist/modules/article/article-slug.util.js.map +0 -1
  724. package/server/dist/modules/article/article.controller.d.ts +0 -27
  725. package/server/dist/modules/article/article.controller.js.map +0 -1
  726. package/server/dist/modules/article/article.entity.d.ts +0 -23
  727. package/server/dist/modules/article/article.entity.js.map +0 -1
  728. package/server/dist/modules/article/article.module.d.ts +0 -2
  729. package/server/dist/modules/article/article.module.js.map +0 -1
  730. package/server/dist/modules/article/article.service.d.ts +0 -30
  731. package/server/dist/modules/article/article.service.js.map +0 -1
  732. package/server/dist/modules/article/article.util.d.ts +0 -1
  733. package/server/dist/modules/article/article.util.js.map +0 -1
  734. package/server/dist/modules/article/scheduled-publish.service.d.ts +0 -13
  735. package/server/dist/modules/article/scheduled-publish.service.js.map +0 -1
  736. package/server/dist/modules/auth/auth.controller.d.ts +0 -12
  737. package/server/dist/modules/auth/auth.controller.js.map +0 -1
  738. package/server/dist/modules/auth/auth.module.d.ts +0 -2
  739. package/server/dist/modules/auth/auth.module.js.map +0 -1
  740. package/server/dist/modules/auth/auth.service.d.ts +0 -26
  741. package/server/dist/modules/auth/auth.service.js.map +0 -1
  742. package/server/dist/modules/auth/jwt-auth.guard.d.ts +0 -7
  743. package/server/dist/modules/auth/jwt-auth.guard.js.map +0 -1
  744. package/server/dist/modules/auth/jwt.strategy.d.ts +0 -9
  745. package/server/dist/modules/auth/jwt.strategy.js.map +0 -1
  746. package/server/dist/modules/auth/roles.guard.d.ts +0 -10
  747. package/server/dist/modules/auth/roles.guard.js.map +0 -1
  748. package/server/dist/modules/bootstrap/bootstrap.constants.d.ts +0 -20
  749. package/server/dist/modules/bootstrap/bootstrap.constants.js.map +0 -1
  750. package/server/dist/modules/bootstrap/bootstrap.service.d.ts +0 -22
  751. package/server/dist/modules/bootstrap/bootstrap.service.js.map +0 -1
  752. package/server/dist/modules/bootstrap/install-locale.d.ts +0 -2
  753. package/server/dist/modules/bootstrap/install-locale.js.map +0 -1
  754. package/server/dist/modules/category/category.controller.d.ts +0 -11
  755. package/server/dist/modules/category/category.controller.js.map +0 -1
  756. package/server/dist/modules/category/category.entity.d.ts +0 -9
  757. package/server/dist/modules/category/category.entity.js.map +0 -1
  758. package/server/dist/modules/category/category.module.d.ts +0 -2
  759. package/server/dist/modules/category/category.module.js.map +0 -1
  760. package/server/dist/modules/category/category.service.d.ts +0 -12
  761. package/server/dist/modules/category/category.service.js.map +0 -1
  762. package/server/dist/modules/comment/comment.controller.d.ts +0 -12
  763. package/server/dist/modules/comment/comment.controller.js.map +0 -1
  764. package/server/dist/modules/comment/comment.entity.d.ts +0 -17
  765. package/server/dist/modules/comment/comment.entity.js.map +0 -1
  766. package/server/dist/modules/comment/comment.module.d.ts +0 -2
  767. package/server/dist/modules/comment/comment.module.js.map +0 -1
  768. package/server/dist/modules/comment/comment.service.d.ts +0 -24
  769. package/server/dist/modules/comment/comment.service.js.map +0 -1
  770. package/server/dist/modules/comment/html.d.ts +0 -15
  771. package/server/dist/modules/comment/html.js.map +0 -1
  772. package/server/dist/modules/extension/extension.module.d.ts +0 -9
  773. package/server/dist/modules/extension/extension.module.js.map +0 -1
  774. package/server/dist/modules/extension/plugin-loader.service.d.ts +0 -12
  775. package/server/dist/modules/extension/plugin-loader.service.js.map +0 -1
  776. package/server/dist/modules/extension/plugin-registry.bridge.d.ts +0 -3
  777. package/server/dist/modules/extension/plugin-registry.bridge.js.map +0 -1
  778. package/server/dist/modules/extension/plugin.controller.d.ts +0 -22
  779. package/server/dist/modules/extension/plugin.controller.js.map +0 -1
  780. package/server/dist/modules/extension/plugin.service.d.ts +0 -52
  781. package/server/dist/modules/extension/plugin.service.js.map +0 -1
  782. package/server/dist/modules/extension/preview-draft.store.d.ts +0 -13
  783. package/server/dist/modules/extension/preview-draft.store.js.map +0 -1
  784. package/server/dist/modules/extension/theme-registry.bridge.d.ts +0 -56
  785. package/server/dist/modules/extension/theme-registry.bridge.js.map +0 -1
  786. package/server/dist/modules/extension/theme.controller.d.ts +0 -66
  787. package/server/dist/modules/extension/theme.controller.js.map +0 -1
  788. package/server/dist/modules/extension/theme.service.d.ts +0 -140
  789. package/server/dist/modules/extension/theme.service.js.map +0 -1
  790. package/server/dist/modules/file/file-optimization.controller.d.ts +0 -12
  791. package/server/dist/modules/file/file-optimization.controller.js.map +0 -1
  792. package/server/dist/modules/file/file-optimization.service.d.ts +0 -36
  793. package/server/dist/modules/file/file-optimization.service.js.map +0 -1
  794. package/server/dist/modules/file/file-optimization.types.d.ts +0 -66
  795. package/server/dist/modules/file/file-optimization.types.js.map +0 -1
  796. package/server/dist/modules/file/file.controller.d.ts +0 -10
  797. package/server/dist/modules/file/file.controller.js.map +0 -1
  798. package/server/dist/modules/file/file.entity.d.ts +0 -9
  799. package/server/dist/modules/file/file.entity.js.map +0 -1
  800. package/server/dist/modules/file/file.module.d.ts +0 -2
  801. package/server/dist/modules/file/file.module.js.map +0 -1
  802. package/server/dist/modules/file/file.service.d.ts +0 -17
  803. package/server/dist/modules/file/file.service.js.map +0 -1
  804. package/server/dist/modules/file/image-optimizer-plugin.guard.d.ts +0 -7
  805. package/server/dist/modules/file/image-optimizer-plugin.guard.js.map +0 -1
  806. package/server/dist/modules/health/health.controller.d.ts +0 -11
  807. package/server/dist/modules/health/health.controller.js.map +0 -1
  808. package/server/dist/modules/health/health.module.d.ts +0 -2
  809. package/server/dist/modules/health/health.module.js.map +0 -1
  810. package/server/dist/modules/hook/hook.module.d.ts +0 -2
  811. package/server/dist/modules/hook/hook.module.js.map +0 -1
  812. package/server/dist/modules/hook/hook.service.d.ts +0 -26
  813. package/server/dist/modules/hook/hook.service.js.map +0 -1
  814. package/server/dist/modules/install/install.controller.d.ts +0 -11
  815. package/server/dist/modules/install/install.controller.js.map +0 -1
  816. package/server/dist/modules/install/install.module.d.ts +0 -2
  817. package/server/dist/modules/install/install.module.js.map +0 -1
  818. package/server/dist/modules/install/install.service.d.ts +0 -12
  819. package/server/dist/modules/install/install.service.js.map +0 -1
  820. package/server/dist/modules/knowledge/knowledge.controller.d.ts +0 -14
  821. package/server/dist/modules/knowledge/knowledge.controller.js.map +0 -1
  822. package/server/dist/modules/knowledge/knowledge.entity.d.ts +0 -18
  823. package/server/dist/modules/knowledge/knowledge.entity.js.map +0 -1
  824. package/server/dist/modules/knowledge/knowledge.module.d.ts +0 -2
  825. package/server/dist/modules/knowledge/knowledge.module.js.map +0 -1
  826. package/server/dist/modules/knowledge/knowledge.service.d.ts +0 -14
  827. package/server/dist/modules/knowledge/knowledge.service.js.map +0 -1
  828. package/server/dist/modules/page/page.controller.d.ts +0 -12
  829. package/server/dist/modules/page/page.controller.js.map +0 -1
  830. package/server/dist/modules/page/page.entity.d.ts +0 -15
  831. package/server/dist/modules/page/page.entity.js.map +0 -1
  832. package/server/dist/modules/page/page.module.d.ts +0 -2
  833. package/server/dist/modules/page/page.module.js.map +0 -1
  834. package/server/dist/modules/page/page.service.d.ts +0 -12
  835. package/server/dist/modules/page/page.service.js.map +0 -1
  836. package/server/dist/modules/search/search.controller.d.ts +0 -8
  837. package/server/dist/modules/search/search.controller.js.map +0 -1
  838. package/server/dist/modules/search/search.entity.d.ts +0 -8
  839. package/server/dist/modules/search/search.entity.js.map +0 -1
  840. package/server/dist/modules/search/search.module.d.ts +0 -2
  841. package/server/dist/modules/search/search.module.js.map +0 -1
  842. package/server/dist/modules/search/search.service.d.ts +0 -12
  843. package/server/dist/modules/search/search.service.js.map +0 -1
  844. package/server/dist/modules/setting/setting.constant.d.ts +0 -3
  845. package/server/dist/modules/setting/setting.constant.js.map +0 -1
  846. package/server/dist/modules/setting/setting.controller.d.ts +0 -12
  847. package/server/dist/modules/setting/setting.controller.js.map +0 -1
  848. package/server/dist/modules/setting/setting.entity.d.ts +0 -26
  849. package/server/dist/modules/setting/setting.entity.js.map +0 -1
  850. package/server/dist/modules/setting/setting.module.d.ts +0 -2
  851. package/server/dist/modules/setting/setting.module.js.map +0 -1
  852. package/server/dist/modules/setting/setting.service.d.ts +0 -10
  853. package/server/dist/modules/setting/setting.service.js.map +0 -1
  854. package/server/dist/modules/smtp/mail.util.d.ts +0 -6
  855. package/server/dist/modules/smtp/mail.util.js.map +0 -1
  856. package/server/dist/modules/smtp/smtp.controller.d.ts +0 -9
  857. package/server/dist/modules/smtp/smtp.controller.js.map +0 -1
  858. package/server/dist/modules/smtp/smtp.entity.d.ts +0 -9
  859. package/server/dist/modules/smtp/smtp.entity.js.map +0 -1
  860. package/server/dist/modules/smtp/smtp.module.d.ts +0 -2
  861. package/server/dist/modules/smtp/smtp.module.js.map +0 -1
  862. package/server/dist/modules/smtp/smtp.service.d.ts +0 -11
  863. package/server/dist/modules/smtp/smtp.service.js.map +0 -1
  864. package/server/dist/modules/tag/tag.controller.d.ts +0 -12
  865. package/server/dist/modules/tag/tag.controller.js.map +0 -1
  866. package/server/dist/modules/tag/tag.entity.d.ts +0 -9
  867. package/server/dist/modules/tag/tag.entity.js.map +0 -1
  868. package/server/dist/modules/tag/tag.module.d.ts +0 -2
  869. package/server/dist/modules/tag/tag.module.js.map +0 -1
  870. package/server/dist/modules/tag/tag.service.d.ts +0 -13
  871. package/server/dist/modules/tag/tag.service.js.map +0 -1
  872. package/server/dist/modules/user/user.controller.d.ts +0 -13
  873. package/server/dist/modules/user/user.controller.js.map +0 -1
  874. package/server/dist/modules/user/user.entity.d.ts +0 -15
  875. package/server/dist/modules/user/user.entity.js.map +0 -1
  876. package/server/dist/modules/user/user.module.d.ts +0 -2
  877. package/server/dist/modules/user/user.module.js.map +0 -1
  878. package/server/dist/modules/user/user.service.d.ts +0 -16
  879. package/server/dist/modules/user/user.service.js.map +0 -1
  880. package/server/dist/modules/view/view.controller.d.ts +0 -11
  881. package/server/dist/modules/view/view.controller.js.map +0 -1
  882. package/server/dist/modules/view/view.entity.d.ts +0 -14
  883. package/server/dist/modules/view/view.entity.js.map +0 -1
  884. package/server/dist/modules/view/view.module.d.ts +0 -2
  885. package/server/dist/modules/view/view.module.js.map +0 -1
  886. package/server/dist/modules/view/view.service.d.ts +0 -11
  887. package/server/dist/modules/view/view.service.js.map +0 -1
  888. package/server/dist/modules/webhook/webhook.controller.d.ts +0 -12
  889. package/server/dist/modules/webhook/webhook.controller.js.map +0 -1
  890. package/server/dist/modules/webhook/webhook.entity.d.ts +0 -9
  891. package/server/dist/modules/webhook/webhook.entity.js.map +0 -1
  892. package/server/dist/modules/webhook/webhook.module.d.ts +0 -2
  893. package/server/dist/modules/webhook/webhook.module.js.map +0 -1
  894. package/server/dist/modules/webhook/webhook.service.d.ts +0 -16
  895. package/server/dist/modules/webhook/webhook.service.js.map +0 -1
  896. package/server/dist/node-polyfills.d.ts +0 -18
  897. package/server/dist/node-polyfills.js.map +0 -1
  898. package/server/dist/public/apple-touch-icon.png +0 -0
  899. package/server/dist/public/favicon-16.png +0 -0
  900. package/server/dist/public/favicon-32.png +0 -0
  901. package/server/dist/public/favicon-48.png +0 -0
  902. package/server/dist/public/favicon.ico +0 -0
  903. package/server/dist/public/favicon.png +0 -0
  904. package/server/dist/public/icon-192.png +0 -0
  905. package/server/dist/public/icon-512.png +0 -0
  906. package/server/dist/public/index.html +0 -439
  907. package/server/dist/public/logo-200.png +0 -0
  908. package/server/dist/public/logo-400.png +0 -0
  909. package/server/dist/public/logo.png +0 -0
  910. package/server/dist/public/logo.svg +0 -7
  911. package/server/dist/public/swagger/custom.css +0 -11
  912. package/server/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  913. package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  914. package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  915. package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  916. package/server/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
  917. package/server/dist/starter.d.ts +0 -1
  918. package/server/dist/starter.js.map +0 -1
  919. package/server/dist/tsconfig.build.tsbuildinfo +0 -16764
  920. package/server/dist/tsconfig.tsbuildinfo +0 -1
  921. package/server/dist/utils/date.util.d.ts +0 -1
  922. package/server/dist/utils/date.util.js.map +0 -1
  923. package/server/dist/utils/html-sanitize.util.d.ts +0 -1
  924. package/server/dist/utils/html-sanitize.util.js.map +0 -1
  925. package/server/dist/utils/image-processor.util.d.ts +0 -23
  926. package/server/dist/utils/image-processor.util.js.map +0 -1
  927. package/server/dist/utils/ip.util.d.ts +0 -2
  928. package/server/dist/utils/ip.util.js.map +0 -1
  929. package/server/dist/utils/local-api-quiet.util.d.ts +0 -1
  930. package/server/dist/utils/local-api-quiet.util.js.map +0 -1
  931. package/server/dist/utils/markdown.util.d.ts +0 -4
  932. package/server/dist/utils/markdown.util.js.map +0 -1
  933. package/server/dist/utils/oss/aliyun-oss-client.d.ts +0 -6
  934. package/server/dist/utils/oss/aliyun-oss-client.js.map +0 -1
  935. package/server/dist/utils/oss/oss-client.d.ts +0 -6
  936. package/server/dist/utils/oss/oss-client.js.map +0 -1
  937. package/server/dist/utils/oss.util.d.ts +0 -13
  938. package/server/dist/utils/oss.util.js.map +0 -1
  939. package/server/dist/utils/project-root.util.d.ts +0 -2
  940. package/server/dist/utils/project-root.util.js.map +0 -1
  941. package/server/dist/utils/query-whitelist.util.d.ts +0 -1
  942. package/server/dist/utils/query-whitelist.util.js.map +0 -1
  943. package/server/dist/utils/ua.util.d.ts +0 -9
  944. package/server/dist/utils/ua.util.js.map +0 -1
  945. package/server/dist/utils/uniqueid.util.d.ts +0 -1
  946. package/server/dist/utils/uniqueid.util.js.map +0 -1
  947. package/server/dist/utils/upload.util.d.ts +0 -5
  948. package/server/dist/utils/upload.util.js.map +0 -1
  949. package/server/dist/utils/user.util.d.ts +0 -1
  950. package/server/dist/utils/user.util.js.map +0 -1
  951. package/server/logs/error/error.log.-2026-05-19.log +0 -135
  952. package/server/logs/request/request.log.-2026-05-19.log +0 -0
  953. package/server/logs/response/response.log.-2026-05-19.log +0 -121
  954. package/server/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  955. package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  956. package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  957. package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  958. package/server/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
@@ -27,36 +27,112 @@ exports.ArticleService = void 0;
27
27
  const common_1 = require("@nestjs/common");
28
28
  const typeorm_1 = require("@nestjs/typeorm");
29
29
  const typeorm_2 = require("typeorm");
30
+ const api_messages_1 = require("../../common/api-messages");
30
31
  const date_util_1 = require("../../utils/date.util");
32
+ const query_whitelist_util_1 = require("../../utils/query-whitelist.util");
31
33
  const category_service_1 = require("../category/category.service");
34
+ const hook_service_1 = require("../hook/hook.service");
32
35
  const tag_service_1 = require("../tag/tag.service");
36
+ const webhook_service_1 = require("../webhook/webhook.service");
33
37
  const article_entity_1 = require("./article.entity");
38
+ const article_revision_entity_1 = require("./article-revision.entity");
39
+ const article_slug_util_1 = require("./article-slug.util");
34
40
  const article_util_1 = require("./article.util");
35
41
  const Segment = require('segment');
36
42
  const segment = new Segment();
37
43
  segment.useDefault();
38
44
  let ArticleService = class ArticleService {
39
- constructor(articleRepository, tagService, categoryService) {
45
+ constructor(articleRepository, revisionRepository, tagService, categoryService, webhookService, hookService) {
40
46
  this.articleRepository = articleRepository;
47
+ this.revisionRepository = revisionRepository;
41
48
  this.tagService = tagService;
42
49
  this.categoryService = categoryService;
50
+ this.webhookService = webhookService;
51
+ this.hookService = hookService;
52
+ }
53
+ async saveRevision(article) {
54
+ const revision = this.revisionRepository.create({
55
+ articleId: article.id,
56
+ article,
57
+ title: article.title,
58
+ content: article.content,
59
+ html: article.html,
60
+ status: article.status,
61
+ });
62
+ await this.revisionRepository.save(revision);
63
+ }
64
+ async notifyPublished(article, extra = {}) {
65
+ if (article.status !== 'publish')
66
+ return;
67
+ await this.webhookService.dispatch('article.published', Object.assign({ id: article.id, title: article.title, status: article.status, publishAt: article.publishAt }, extra));
68
+ }
69
+ async applyPublishFilters(article) {
70
+ return this.hookService.applyFilters('article.beforePublish', Object.assign({}, article));
71
+ }
72
+ normalizeSeoPayload(payload) {
73
+ const next = Object.assign({}, payload);
74
+ if ('slug' in next) {
75
+ next.slug = (0, article_slug_util_1.normalizeArticleSlug)(next.slug);
76
+ }
77
+ if (typeof next.seoKeywords === 'string') {
78
+ next.seoKeywords = next.seoKeywords.trim() || null;
79
+ }
80
+ if (typeof next.seoDescription === 'string') {
81
+ next.seoDescription = next.seoDescription.trim() || null;
82
+ }
83
+ return next;
84
+ }
85
+ applyPublishFilterPatch(patch, filtered) {
86
+ const next = Object.assign({}, patch);
87
+ for (const key of ['summary', 'slug', 'seoKeywords', 'seoDescription']) {
88
+ if (filtered[key] !== undefined && filtered[key] !== null) {
89
+ next[key] = filtered[key];
90
+ }
91
+ }
92
+ return next;
93
+ }
94
+ async assertSlugAvailable(slug, excludeId) {
95
+ if (!slug)
96
+ return;
97
+ const query = this.articleRepository
98
+ .createQueryBuilder('article')
99
+ .where('article.slug = :slug', { slug })
100
+ .take(1);
101
+ if (excludeId) {
102
+ query.andWhere('article.id != :excludeId', { excludeId });
103
+ }
104
+ const exist = await query.getOne();
105
+ if (exist) {
106
+ throw new common_1.HttpException(api_messages_1.ApiMsg.ARTICLE_SLUG_EXISTS, common_1.HttpStatus.BAD_REQUEST);
107
+ }
43
108
  }
44
109
  async create(article) {
45
- const { title } = article;
110
+ let payload = this.normalizeSeoPayload(await this.hookService.applyFilters('article.beforeCreate', Object.assign({}, article)));
111
+ const { title } = payload;
46
112
  const exist = await this.articleRepository.findOne({ where: { title } });
47
113
  if (exist) {
48
- throw new common_1.HttpException('文章标题已存在', common_1.HttpStatus.BAD_REQUEST);
114
+ throw new common_1.HttpException(api_messages_1.ApiMsg.ARTICLE_TITLE_EXISTS, common_1.HttpStatus.BAD_REQUEST);
49
115
  }
50
- let { tags, category, status } = article;
116
+ await this.assertSlugAvailable(payload.slug);
117
+ let { tags, category, status } = payload;
51
118
  if (status === 'publish') {
52
- Object.assign(article, {
53
- publishAt: date_util_1.dateFormat(),
119
+ payload = this.normalizeSeoPayload(await this.applyPublishFilters(payload));
120
+ await this.assertSlugAvailable(payload.slug);
121
+ Object.assign(payload, {
122
+ publishAt: (0, date_util_1.dateFormat)(),
54
123
  });
55
124
  }
56
125
  tags = await this.tagService.findByIds(('' + tags).split(','));
57
126
  const existCategory = await this.categoryService.findById(category);
58
- const newArticle = await this.articleRepository.create(Object.assign(Object.assign({}, article), { category: existCategory, tags, needPassword: !!article.password }));
127
+ const newArticle = await this.articleRepository.create(Object.assign(Object.assign({}, payload), { category: existCategory, tags, needPassword: !!payload.password }));
59
128
  await this.articleRepository.save(newArticle);
129
+ if (newArticle.status === 'publish') {
130
+ await this.hookService.doAction('article.afterPublish', {
131
+ article: newArticle,
132
+ isNew: true,
133
+ });
134
+ }
135
+ await this.notifyPublished(newArticle);
60
136
  return newArticle;
61
137
  }
62
138
  async findAll(queryParams) {
@@ -71,15 +147,14 @@ let ArticleService = class ArticleService {
71
147
  if (status) {
72
148
  query.andWhere('article.status=:status').setParameter('status', status);
73
149
  }
74
- if (otherParams) {
75
- Object.keys(otherParams).forEach((key) => {
76
- query.andWhere(`article.${key} LIKE :${key}`).setParameter(`${key}`, `%${otherParams[key]}%`);
77
- });
78
- }
150
+ const filtered = (0, query_whitelist_util_1.filterByWhitelist)('article', queryParams);
151
+ Object.keys(filtered).forEach((key) => {
152
+ query.andWhere(`article.${key} LIKE :${key}`).setParameter(`${key}`, `%${filtered[key]}%`);
153
+ });
79
154
  const [data, total] = await query.getManyAndCount();
80
155
  data.forEach((d) => {
81
156
  if (d.needPassword) {
82
- article_util_1.extractProtectedArticle(d);
157
+ (0, article_util_1.extractProtectedArticle)(d);
83
158
  }
84
159
  });
85
160
  return [data, total];
@@ -99,7 +174,7 @@ let ArticleService = class ArticleService {
99
174
  const [data, total] = await query.getManyAndCount();
100
175
  data.forEach((d) => {
101
176
  if (d.needPassword) {
102
- article_util_1.extractProtectedArticle(d);
177
+ (0, article_util_1.extractProtectedArticle)(d);
103
178
  }
104
179
  });
105
180
  return [data, total];
@@ -120,7 +195,7 @@ let ArticleService = class ArticleService {
120
195
  const [data, total] = await query.getManyAndCount();
121
196
  data.forEach((d) => {
122
197
  if (d.needPassword) {
123
- article_util_1.extractProtectedArticle(d);
198
+ (0, article_util_1.extractProtectedArticle)(d);
124
199
  }
125
200
  });
126
201
  return [data, total];
@@ -156,7 +231,7 @@ let ArticleService = class ArticleService {
156
231
  const year = new Date(d.publishAt).getFullYear();
157
232
  const month = new Date(d.publishAt).getMonth();
158
233
  if (d.needPassword) {
159
- article_util_1.extractProtectedArticle(d);
234
+ (0, article_util_1.extractProtectedArticle)(d);
160
235
  }
161
236
  if (!ret[year]) {
162
237
  ret[year] = {};
@@ -186,30 +261,73 @@ let ArticleService = class ArticleService {
186
261
  .leftJoinAndSelect('article.tags', 'tags')
187
262
  .where('article.id=:id')
188
263
  .orWhere('article.title=:title')
264
+ .orWhere('article.slug=:slug')
189
265
  .setParameter('id', id)
190
- .setParameter('title', id);
266
+ .setParameter('title', id)
267
+ .setParameter('slug', id);
191
268
  if (status) {
192
269
  query.andWhere('article.status=:status').setParameter('status', status);
193
270
  }
194
271
  const data = await query.getOne();
195
272
  if (data && data.needPassword && !isAdmin) {
196
- article_util_1.extractProtectedArticle(data);
273
+ (0, article_util_1.extractProtectedArticle)(data);
197
274
  }
198
275
  return data;
199
276
  }
200
277
  async updateById(id, article) {
278
+ var _a;
201
279
  const oldArticle = await this.articleRepository.findOne(id);
280
+ await this.saveRevision(oldArticle);
202
281
  let { tags, category, status } = article;
282
+ let patch = this.normalizeSeoPayload(Object.assign(Object.assign({}, article), { views: oldArticle.views, needPassword: !!article.password }));
283
+ await this.assertSlugAvailable(patch.slug, id);
203
284
  if (tags) {
204
285
  tags = await this.tagService.findByIds(('' + tags).split(','));
205
286
  }
206
287
  const existCategory = await this.categoryService.findById(category);
207
- const newArticle = Object.assign(Object.assign({}, article), { views: oldArticle.views, category: existCategory, needPassword: !!article.password, publishAt: oldArticle.status === 'draft' && status === 'publish' ? date_util_1.dateFormat() : oldArticle.publishAt });
288
+ const becomingPublish = oldArticle.status === 'draft' && status === 'publish';
289
+ patch = Object.assign(Object.assign({}, patch), { category: existCategory, publishAt: becomingPublish ? (0, date_util_1.dateFormat)() : oldArticle.publishAt, scheduledPublishAt: status === 'publish' ? null : (_a = article.scheduledPublishAt) !== null && _a !== void 0 ? _a : oldArticle.scheduledPublishAt });
208
290
  if (tags) {
209
- Object.assign(newArticle, { tags });
291
+ Object.assign(patch, { tags });
210
292
  }
211
- const updatedArticle = await this.articleRepository.merge(oldArticle, newArticle);
212
- return this.articleRepository.save(updatedArticle);
293
+ if (status === 'publish' || becomingPublish) {
294
+ const filtered = this.normalizeSeoPayload(await this.applyPublishFilters(Object.assign(Object.assign({}, oldArticle), patch)));
295
+ patch = this.applyPublishFilterPatch(patch, filtered);
296
+ await this.assertSlugAvailable(patch.slug, id);
297
+ patch.publishAt = becomingPublish ? (0, date_util_1.dateFormat)() : oldArticle.publishAt;
298
+ }
299
+ const updatedArticle = await this.articleRepository.merge(oldArticle, patch);
300
+ const saved = await this.articleRepository.save(updatedArticle);
301
+ if (becomingPublish) {
302
+ await this.hookService.doAction('article.afterPublish', {
303
+ article: saved,
304
+ isNew: false,
305
+ });
306
+ await this.notifyPublished(saved);
307
+ }
308
+ return saved;
309
+ }
310
+ async listRevisions(articleId) {
311
+ return this.revisionRepository.find({
312
+ where: { articleId },
313
+ order: { createAt: 'DESC' },
314
+ take: 50,
315
+ });
316
+ }
317
+ async restoreRevision(articleId, revisionId) {
318
+ const revision = await this.revisionRepository.findOne(revisionId);
319
+ if (!revision || revision.articleId !== articleId) {
320
+ throw new common_1.HttpException(api_messages_1.ApiMsg.REVISION_NOT_FOUND, common_1.HttpStatus.NOT_FOUND);
321
+ }
322
+ const article = await this.articleRepository.findOne(articleId);
323
+ await this.saveRevision(article);
324
+ const restored = await this.articleRepository.merge(article, {
325
+ title: revision.title,
326
+ content: revision.content,
327
+ html: revision.html,
328
+ status: revision.status,
329
+ });
330
+ return this.articleRepository.save(restored);
213
331
  }
214
332
  async updateViewsById(id) {
215
333
  const oldArticle = await this.articleRepository.findOne(id);
@@ -237,7 +355,7 @@ let ArticleService = class ArticleService {
237
355
  .getMany();
238
356
  return res;
239
357
  }
240
- async recommend(articleId = null) {
358
+ async recommend(articleId = null, pageSize = 6) {
241
359
  const query = this.articleRepository
242
360
  .createQueryBuilder('article')
243
361
  .orderBy('article.publishAt', 'DESC')
@@ -245,7 +363,7 @@ let ArticleService = class ArticleService {
245
363
  .leftJoinAndSelect('article.tags', 'tags');
246
364
  if (!articleId) {
247
365
  query.where('article.status=:status').setParameter('status', 'publish');
248
- return query.take(6).getMany();
366
+ return query.take(pageSize).getMany();
249
367
  }
250
368
  const sub = this.articleRepository
251
369
  .createQueryBuilder('article')
@@ -256,7 +374,7 @@ let ArticleService = class ArticleService {
256
374
  .setParameter('id', articleId);
257
375
  const exist = await sub.getOne();
258
376
  if (!exist) {
259
- return query.take(6).getMany();
377
+ return query.take(pageSize).getMany();
260
378
  }
261
379
  const { title, summary } = exist;
262
380
  try {
@@ -289,15 +407,19 @@ let ArticleService = class ArticleService {
289
407
  }
290
408
  catch (e) { }
291
409
  const data = await query.getMany();
292
- return data.filter((d) => d.id !== articleId && d.status === 'publish');
410
+ return data.filter((d) => d.id !== articleId && d.status === 'publish').slice(0, pageSize);
293
411
  }
294
412
  };
295
413
  ArticleService = __decorate([
296
- common_1.Injectable(),
297
- __param(0, typeorm_1.InjectRepository(article_entity_1.Article)),
414
+ (0, common_1.Injectable)(),
415
+ __param(0, (0, typeorm_1.InjectRepository)(article_entity_1.Article)),
416
+ __param(1, (0, typeorm_1.InjectRepository)(article_revision_entity_1.ArticleRevision)),
298
417
  __metadata("design:paramtypes", [typeorm_2.Repository,
418
+ typeorm_2.Repository,
299
419
  tag_service_1.TagService,
300
- category_service_1.CategoryService])
420
+ category_service_1.CategoryService,
421
+ webhook_service_1.WebhookService,
422
+ hook_service_1.HookService])
301
423
  ], ArticleService);
302
424
  exports.ArticleService = ArticleService;
303
425
  //# sourceMappingURL=article.service.js.map
@@ -34,32 +34,32 @@ let AuthController = class AuthController {
34
34
  }
35
35
  };
36
36
  __decorate([
37
- common_1.UseInterceptors(common_1.ClassSerializerInterceptor),
38
- common_1.Post('login'),
39
- common_1.HttpCode(common_1.HttpStatus.OK),
40
- __param(0, common_1.Body()),
37
+ (0, common_1.UseInterceptors)(common_1.ClassSerializerInterceptor),
38
+ (0, common_1.Post)('login'),
39
+ (0, common_1.HttpCode)(common_1.HttpStatus.OK),
40
+ __param(0, (0, common_1.Body)()),
41
41
  __metadata("design:type", Function),
42
42
  __metadata("design:paramtypes", [Object]),
43
43
  __metadata("design:returntype", Promise)
44
44
  ], AuthController.prototype, "login", null);
45
45
  __decorate([
46
- common_1.Post('admin'),
47
- roles_guard_1.Roles('admin'),
48
- common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
46
+ (0, common_1.Post)('admin'),
47
+ (0, roles_guard_1.Roles)('admin'),
48
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
49
49
  __metadata("design:type", Function),
50
50
  __metadata("design:paramtypes", []),
51
51
  __metadata("design:returntype", void 0)
52
52
  ], AuthController.prototype, "createBook", null);
53
53
  __decorate([
54
- common_1.Post('github'),
55
- __param(0, common_1.Body('code')),
54
+ (0, common_1.Post)('github'),
55
+ __param(0, (0, common_1.Body)('code')),
56
56
  __metadata("design:type", Function),
57
57
  __metadata("design:paramtypes", [Object]),
58
58
  __metadata("design:returntype", void 0)
59
59
  ], AuthController.prototype, "loginWithGithub", null);
60
60
  AuthController = __decorate([
61
- swagger_1.ApiTags('Auth'),
62
- common_1.Controller('auth'),
61
+ (0, swagger_1.ApiTags)('Auth'),
62
+ (0, common_1.Controller)('auth'),
63
63
  __metadata("design:paramtypes", [auth_service_1.AuthService])
64
64
  ], AuthController);
65
65
  exports.AuthController = AuthController;
@@ -24,13 +24,13 @@ const jwtModule = jwt_1.JwtModule.register({
24
24
  let AuthModule = class AuthModule {
25
25
  };
26
26
  AuthModule = __decorate([
27
- common_1.Module({
27
+ (0, common_1.Module)({
28
28
  imports: [
29
- common_1.forwardRef(() => user_module_1.UserModule),
29
+ (0, common_1.forwardRef)(() => user_module_1.UserModule),
30
30
  passModule,
31
31
  jwtModule,
32
- common_1.forwardRef(() => setting_module_1.SettingModule),
33
- common_1.forwardRef(() => smtp_module_1.SMTPModule),
32
+ (0, common_1.forwardRef)(() => setting_module_1.SettingModule),
33
+ (0, common_1.forwardRef)(() => smtp_module_1.SMTPModule),
34
34
  ],
35
35
  providers: [auth_service_1.AuthService, jwt_strategy_1.JwtStrategy],
36
36
  controllers: [auth_controller_1.AuthController],
@@ -14,6 +14,7 @@ const common_1 = require("@nestjs/common");
14
14
  const config_1 = require("@nestjs/config");
15
15
  const jwt_1 = require("@nestjs/jwt");
16
16
  const axios_1 = require("axios");
17
+ const api_messages_1 = require("../../common/api-messages");
17
18
  const uniqueid_util_1 = require("../../utils/uniqueid.util");
18
19
  const setting_service_1 = require("../setting/setting.service");
19
20
  const smtp_service_1 = require("../smtp/smtp.service");
@@ -59,10 +60,10 @@ let AuthService = class AuthService {
59
60
  }
60
61
  async loginWithGithub(code) {
61
62
  if (!code) {
62
- throw new common_1.HttpException('请输入Gitub授权码', common_1.HttpStatus.BAD_REQUEST);
63
+ throw new common_1.HttpException(api_messages_1.ApiMsg.GITHUB_CODE_REQUIRED, common_1.HttpStatus.BAD_REQUEST);
63
64
  }
64
65
  try {
65
- const tokenResponse = (await axios_1.default({
66
+ const tokenResponse = (await (0, axios_1.default)({
66
67
  method: 'post',
67
68
  url: 'https://github.com/login/oauth/access_token?' +
68
69
  `client_id=${this.configService.get('GITHUB_CLIENT_ID')}&` +
@@ -73,7 +74,7 @@ let AuthService = class AuthService {
73
74
  },
74
75
  }));
75
76
  const accessToken = tokenResponse.data.access_token;
76
- const result = (await axios_1.default({
77
+ const result = (await (0, axios_1.default)({
77
78
  method: 'get',
78
79
  url: `https://api.github.com/user`,
79
80
  headers: {
@@ -90,13 +91,13 @@ let AuthService = class AuthService {
90
91
  };
91
92
  const existUser = await this.userService.findByConditions(user);
92
93
  if (!existUser) {
93
- const password = `easy-blog_${uniqueid_util_1.uniqueid()}_${result.data.email}`;
94
+ const password = `easy-blog_${(0, uniqueid_util_1.uniqueid)()}_${result.data.email}`;
94
95
  await this.userService.createUser(Object.assign(Object.assign({}, user), { password }));
95
96
  const setting = await this.settingService.findAll(true);
96
97
  const emailMessage = {
97
98
  from: setting.smtpFromUser,
98
99
  to: result.data.email,
99
- subject: 'Github 用户登录通知',
100
+ subject: api_messages_1.ApiMsg.EMAIL_GITHUB_LOGIN,
100
101
  html: `您好,您使用了 Github 登录了 reactpress。reactpress 已为您创建用户,用户名称:${result.data.name}, 用户密码:${password},请及时登录系统修改密码`,
101
102
  };
102
103
  this.smtpService.create(emailMessage).catch(() => {
@@ -107,7 +108,7 @@ let AuthService = class AuthService {
107
108
  return res;
108
109
  }
109
110
  else {
110
- throw new common_1.HttpException('未获取到您的公开邮件地址,无法使用Github登录', common_1.HttpStatus.BAD_REQUEST);
111
+ throw new common_1.HttpException(api_messages_1.ApiMsg.GITHUB_EMAIL_REQUIRED, common_1.HttpStatus.BAD_REQUEST);
111
112
  }
112
113
  }
113
114
  catch (e) {
@@ -116,7 +117,7 @@ let AuthService = class AuthService {
116
117
  }
117
118
  };
118
119
  AuthService = __decorate([
119
- common_1.Injectable(),
120
+ (0, common_1.Injectable)(),
120
121
  __metadata("design:paramtypes", [user_service_1.UserService,
121
122
  jwt_1.JwtService,
122
123
  config_1.ConfigService,
@@ -9,7 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.JwtAuthGuard = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const passport_1 = require("@nestjs/passport");
12
- let JwtAuthGuard = class JwtAuthGuard extends passport_1.AuthGuard('jwt') {
12
+ const api_messages_1 = require("../../common/api-messages");
13
+ let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
13
14
  getRequest(context) {
14
15
  const ctx = context.switchToHttp();
15
16
  const request = ctx.getRequest();
@@ -17,13 +18,13 @@ let JwtAuthGuard = class JwtAuthGuard extends passport_1.AuthGuard('jwt') {
17
18
  }
18
19
  handleRequest(err, user) {
19
20
  if (err || !user) {
20
- throw new common_1.UnauthorizedException('身份验证失败');
21
+ throw new common_1.UnauthorizedException(api_messages_1.ApiMsg.AUTH_FAILED);
21
22
  }
22
23
  return user;
23
24
  }
24
25
  };
25
26
  JwtAuthGuard = __decorate([
26
- common_1.Injectable()
27
+ (0, common_1.Injectable)()
27
28
  ], JwtAuthGuard);
28
29
  exports.JwtAuthGuard = JwtAuthGuard;
29
30
  //# sourceMappingURL=jwt-auth.guard.js.map
@@ -13,8 +13,9 @@ exports.JwtStrategy = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const passport_1 = require("@nestjs/passport");
15
15
  const passport_jwt_1 = require("passport-jwt");
16
+ const api_messages_1 = require("../../common/api-messages");
16
17
  const auth_service_1 = require("./auth.service");
17
- let JwtStrategy = class JwtStrategy extends passport_1.PassportStrategy(passport_jwt_1.Strategy) {
18
+ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
18
19
  constructor(authService) {
19
20
  super({
20
21
  jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
@@ -25,13 +26,13 @@ let JwtStrategy = class JwtStrategy extends passport_1.PassportStrategy(passport
25
26
  async validate(payload) {
26
27
  const user = await this.authService.validateUser(payload);
27
28
  if (!user) {
28
- throw new common_1.UnauthorizedException('身份验证失败');
29
+ throw new common_1.UnauthorizedException(api_messages_1.ApiMsg.AUTH_FAILED);
29
30
  }
30
31
  return user;
31
32
  }
32
33
  };
33
34
  JwtStrategy = __decorate([
34
- common_1.Injectable(),
35
+ (0, common_1.Injectable)(),
35
36
  __metadata("design:paramtypes", [auth_service_1.AuthService])
36
37
  ], JwtStrategy);
37
38
  exports.JwtStrategy = JwtStrategy;
@@ -13,7 +13,7 @@ exports.RolesGuard = exports.Roles = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const core_1 = require("@nestjs/core");
15
15
  const jwt_1 = require("@nestjs/jwt");
16
- const Roles = (...roles) => common_1.SetMetadata('roles', roles);
16
+ const Roles = (...roles) => (0, common_1.SetMetadata)('roles', roles);
17
17
  exports.Roles = Roles;
18
18
  let RolesGuard = class RolesGuard {
19
19
  constructor(reflector, jwtService) {
@@ -39,7 +39,7 @@ let RolesGuard = class RolesGuard {
39
39
  }
40
40
  };
41
41
  RolesGuard = __decorate([
42
- common_1.Injectable(),
42
+ (0, common_1.Injectable)(),
43
43
  __metadata("design:paramtypes", [core_1.Reflector, jwt_1.JwtService])
44
44
  ], RolesGuard);
45
45
  exports.RolesGuard = RolesGuard;
@@ -40,51 +40,52 @@ let CategoryController = class CategoryController {
40
40
  }
41
41
  };
42
42
  __decorate([
43
- swagger_1.ApiResponse({ status: 200, description: '添加分类', type: [category_entity_1.Category] }),
44
- common_1.Post(),
45
- roles_guard_1.Roles('admin'),
46
- common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
47
- __param(0, common_1.Body()),
43
+ (0, swagger_1.ApiResponse)({ status: 200, description: '添加分类', type: [category_entity_1.Category] }),
44
+ (0, common_1.Post)(),
45
+ (0, roles_guard_1.Roles)('admin'),
46
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
47
+ __param(0, (0, common_1.Body)()),
48
48
  __metadata("design:type", Function),
49
49
  __metadata("design:paramtypes", [Object]),
50
50
  __metadata("design:returntype", void 0)
51
51
  ], CategoryController.prototype, "create", null);
52
52
  __decorate([
53
- common_1.Get(),
54
- __param(0, common_1.Query()),
53
+ (0, common_1.Get)(),
54
+ __param(0, (0, common_1.Query)()),
55
55
  __metadata("design:type", Function),
56
56
  __metadata("design:paramtypes", [Object]),
57
57
  __metadata("design:returntype", Promise)
58
58
  ], CategoryController.prototype, "findAll", null);
59
59
  __decorate([
60
- common_1.Get(':id'),
61
- __param(0, common_1.Param('id')),
60
+ (0, common_1.Get)(':id'),
61
+ __param(0, (0, common_1.Param)('id')),
62
62
  __metadata("design:type", Function),
63
63
  __metadata("design:paramtypes", [Object]),
64
64
  __metadata("design:returntype", void 0)
65
65
  ], CategoryController.prototype, "findById", null);
66
66
  __decorate([
67
- common_1.Patch(':id'),
68
- roles_guard_1.Roles('admin'),
69
- common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
70
- __param(0, common_1.Param('id')), __param(1, common_1.Body()),
67
+ (0, common_1.Patch)(':id'),
68
+ (0, roles_guard_1.Roles)('admin'),
69
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
70
+ __param(0, (0, common_1.Param)('id')),
71
+ __param(1, (0, common_1.Body)()),
71
72
  __metadata("design:type", Function),
72
73
  __metadata("design:paramtypes", [Object, Object]),
73
74
  __metadata("design:returntype", void 0)
74
75
  ], CategoryController.prototype, "updateById", null);
75
76
  __decorate([
76
- common_1.Delete(':id'),
77
- roles_guard_1.Roles('admin'),
78
- common_1.UseGuards(jwt_auth_guard_1.JwtAuthGuard),
79
- __param(0, common_1.Param('id')),
77
+ (0, common_1.Delete)(':id'),
78
+ (0, roles_guard_1.Roles)('admin'),
79
+ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
80
+ __param(0, (0, common_1.Param)('id')),
80
81
  __metadata("design:type", Function),
81
82
  __metadata("design:paramtypes", [Object]),
82
83
  __metadata("design:returntype", void 0)
83
84
  ], CategoryController.prototype, "deleteById", null);
84
85
  CategoryController = __decorate([
85
- swagger_1.ApiTags('Category'),
86
- common_1.Controller('category'),
87
- common_1.UseGuards(roles_guard_1.RolesGuard),
86
+ (0, swagger_1.ApiTags)('Category'),
87
+ (0, common_1.Controller)('category'),
88
+ (0, common_1.UseGuards)(roles_guard_1.RolesGuard),
88
89
  __metadata("design:paramtypes", [category_service_1.CategoryService])
89
90
  ], CategoryController);
90
91
  exports.CategoryController = CategoryController;
@@ -16,28 +16,28 @@ const article_entity_1 = require("../article/article.entity");
16
16
  let Category = class Category {
17
17
  };
18
18
  __decorate([
19
- swagger_1.ApiProperty(),
20
- typeorm_1.PrimaryGeneratedColumn('uuid'),
19
+ (0, swagger_1.ApiProperty)(),
20
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
21
21
  __metadata("design:type", String)
22
22
  ], Category.prototype, "id", void 0);
23
23
  __decorate([
24
- swagger_1.ApiProperty(),
25
- typeorm_1.Column(),
24
+ (0, swagger_1.ApiProperty)(),
25
+ (0, typeorm_1.Column)(),
26
26
  __metadata("design:type", String)
27
27
  ], Category.prototype, "label", void 0);
28
28
  __decorate([
29
- swagger_1.ApiProperty(),
30
- typeorm_1.Column(),
29
+ (0, swagger_1.ApiProperty)(),
30
+ (0, typeorm_1.Column)(),
31
31
  __metadata("design:type", String)
32
32
  ], Category.prototype, "value", void 0);
33
33
  __decorate([
34
- swagger_1.ApiProperty(),
35
- typeorm_1.OneToMany(() => article_entity_1.Article, (article) => article.category),
34
+ (0, swagger_1.ApiProperty)({ type: () => article_entity_1.Article, isArray: true }),
35
+ (0, typeorm_1.OneToMany)(() => article_entity_1.Article, (article) => article.category),
36
36
  __metadata("design:type", Array)
37
37
  ], Category.prototype, "articles", void 0);
38
38
  __decorate([
39
- swagger_1.ApiProperty(),
40
- typeorm_1.CreateDateColumn({
39
+ (0, swagger_1.ApiProperty)(),
40
+ (0, typeorm_1.CreateDateColumn)({
41
41
  type: 'datetime',
42
42
  comment: '创建时间',
43
43
  name: 'create_at',
@@ -45,8 +45,8 @@ __decorate([
45
45
  __metadata("design:type", Date)
46
46
  ], Category.prototype, "createAt", void 0);
47
47
  __decorate([
48
- swagger_1.ApiProperty(),
49
- typeorm_1.UpdateDateColumn({
48
+ (0, swagger_1.ApiProperty)(),
49
+ (0, typeorm_1.UpdateDateColumn)({
50
50
  type: 'datetime',
51
51
  comment: '更新时间',
52
52
  name: 'update_at',
@@ -54,7 +54,7 @@ __decorate([
54
54
  __metadata("design:type", Date)
55
55
  ], Category.prototype, "updateAt", void 0);
56
56
  Category = __decorate([
57
- typeorm_1.Entity()
57
+ (0, typeorm_1.Entity)()
58
58
  ], Category);
59
59
  exports.Category = Category;
60
60
  //# sourceMappingURL=category.entity.js.map
@@ -16,7 +16,7 @@ const category_service_1 = require("./category.service");
16
16
  let CategoryModule = class CategoryModule {
17
17
  };
18
18
  CategoryModule = __decorate([
19
- common_1.Module({
19
+ (0, common_1.Module)({
20
20
  imports: [typeorm_1.TypeOrmModule.forFeature([category_entity_1.Category]), auth_module_1.AuthModule],
21
21
  exports: [category_service_1.CategoryService],
22
22
  providers: [category_service_1.CategoryService],