@fecommunity/reactpress-toolkit 3.0.4 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/README.md +194 -309
  2. package/dist/admin/index.d.ts +2 -0
  3. package/dist/admin/index.js +18 -0
  4. package/dist/admin/permissions.d.ts +5 -0
  5. package/dist/admin/permissions.js +33 -0
  6. package/dist/admin/registry.d.ts +62 -0
  7. package/dist/admin/registry.js +79 -0
  8. package/dist/api/HttpClient.d.ts +2 -2
  9. package/dist/api/HttpClient.js +1 -1
  10. package/dist/api/Smtp.d.ts +17 -0
  11. package/dist/api/Smtp.js +15 -0
  12. package/dist/api/instance.d.ts +1 -1
  13. package/dist/api/instance.js +3 -3
  14. package/dist/app/createReactPressApp.d.ts +88 -0
  15. package/dist/app/createReactPressApp.js +262 -0
  16. package/dist/app/createThemeApp.d.ts +6 -0
  17. package/dist/app/createThemeApp.js +47 -0
  18. package/dist/app/devChunkRecovery.d.ts +2 -0
  19. package/dist/app/devChunkRecovery.js +68 -0
  20. package/dist/app/index.d.ts +39 -0
  21. package/dist/app/index.js +11 -0
  22. package/dist/config/env.js +29 -15
  23. package/dist/config/global.d.ts +7 -1
  24. package/dist/config/global.js +9 -3
  25. package/dist/config/i18n.js +27 -11
  26. package/dist/config/index.d.ts +3 -3
  27. package/dist/config/index.js +6 -5
  28. package/dist/{locales → config/locales}/en.json +31 -3
  29. package/dist/{locales → config/locales}/zh.json +31 -3
  30. package/dist/dev/index.d.ts +3 -0
  31. package/dist/dev/index.js +12 -0
  32. package/dist/dev/portRedirect.d.ts +20 -0
  33. package/dist/dev/portRedirect.js +93 -0
  34. package/dist/dev/vitePortRedirectPlugin.d.ts +24 -0
  35. package/dist/dev/vitePortRedirectPlugin.js +40 -0
  36. package/dist/extension/branding-mods.d.ts +10 -0
  37. package/dist/extension/branding-mods.js +65 -0
  38. package/dist/extension/configuration/defaults.d.ts +3 -0
  39. package/dist/extension/configuration/defaults.js +32 -0
  40. package/dist/extension/configuration/formily.d.ts +10 -0
  41. package/dist/extension/configuration/formily.js +170 -0
  42. package/dist/extension/configuration/index.d.ts +7 -0
  43. package/dist/extension/configuration/index.js +28 -0
  44. package/dist/extension/configuration/paths.d.ts +4 -0
  45. package/dist/extension/configuration/paths.js +50 -0
  46. package/dist/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
  47. package/dist/extension/configuration/presets/twentytwentyfive.js +94 -0
  48. package/dist/extension/configuration/resolve.d.ts +24 -0
  49. package/dist/extension/configuration/resolve.js +98 -0
  50. package/dist/extension/configuration/types.d.ts +68 -0
  51. package/dist/extension/configuration/types.js +3 -0
  52. package/dist/extension/configuration/validate.d.ts +8 -0
  53. package/dist/extension/configuration/validate.js +21 -0
  54. package/dist/extension/index.d.ts +9 -0
  55. package/dist/extension/index.js +35 -0
  56. package/dist/extension/manifest-normalize.d.ts +5 -0
  57. package/dist/extension/manifest-normalize.js +75 -0
  58. package/dist/extension/node.d.ts +2 -0
  59. package/dist/extension/node.js +6 -0
  60. package/dist/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
  61. package/dist/extension/presets/twentytwentyfive-appearance.js +193 -0
  62. package/dist/extension/presets/twentytwentyfive-customizer.d.ts +19 -0
  63. package/dist/extension/presets/twentytwentyfive-customizer.js +199 -0
  64. package/dist/extension/preview.d.ts +46 -0
  65. package/dist/extension/preview.js +92 -0
  66. package/dist/extension/site-notices.d.ts +19 -0
  67. package/dist/extension/site-notices.js +88 -0
  68. package/dist/extension/site-settings.d.ts +37 -0
  69. package/dist/extension/site-settings.js +144 -0
  70. package/dist/extension/theme-admin-locale.d.ts +11 -0
  71. package/dist/extension/theme-admin-locale.io.d.ts +2 -0
  72. package/dist/extension/theme-admin-locale.io.js +54 -0
  73. package/dist/extension/theme-admin-locale.js +81 -0
  74. package/dist/extension/theme.d.ts +89 -0
  75. package/dist/extension/theme.js +93 -0
  76. package/dist/extension/twentytwentyfive-vars.d.ts +7 -0
  77. package/dist/extension/twentytwentyfive-vars.js +100 -0
  78. package/dist/index.d.ts +15 -7
  79. package/dist/index.js +44 -22
  80. package/dist/plugin/admin/index.d.ts +2 -0
  81. package/dist/plugin/admin/index.js +18 -0
  82. package/dist/plugin/admin/permissions.d.ts +5 -0
  83. package/dist/plugin/admin/permissions.js +33 -0
  84. package/dist/plugin/admin/registry.d.ts +62 -0
  85. package/dist/plugin/admin/registry.js +79 -0
  86. package/dist/plugin/client/client.d.ts +14 -0
  87. package/dist/plugin/client/client.js +95 -0
  88. package/dist/plugin/client/index.d.ts +4 -0
  89. package/dist/plugin/client/index.js +11 -0
  90. package/dist/plugin/client/runtime.d.ts +18 -0
  91. package/dist/plugin/client/runtime.js +30 -0
  92. package/dist/plugin/dev/index.d.ts +4 -0
  93. package/dist/plugin/dev/index.js +16 -0
  94. package/dist/plugin/dev/portRedirect.d.ts +26 -0
  95. package/dist/plugin/dev/portRedirect.js +111 -0
  96. package/dist/plugin/dev/vitePortRedirectPlugin.d.ts +24 -0
  97. package/dist/plugin/dev/vitePortRedirectPlugin.js +40 -0
  98. package/dist/plugin/index.d.ts +9 -0
  99. package/dist/plugin/index.js +48 -0
  100. package/dist/plugin/react/client.d.ts +14 -0
  101. package/dist/plugin/react/client.js +95 -0
  102. package/dist/plugin/react/index.d.ts +2 -0
  103. package/dist/plugin/react/index.js +18 -0
  104. package/dist/plugin/react/runtime.d.ts +18 -0
  105. package/dist/plugin/react/runtime.js +30 -0
  106. package/dist/primitives/AntdStyleTransitionFix.d.ts +2 -0
  107. package/dist/primitives/AntdStyleTransitionFix.js +16 -0
  108. package/dist/primitives/Badge.d.ts +7 -0
  109. package/dist/primitives/Badge.js +9 -0
  110. package/dist/primitives/Button.d.ts +10 -0
  111. package/dist/primitives/Button.js +38 -0
  112. package/dist/primitives/ColorModeToggle.d.ts +8 -0
  113. package/dist/primitives/ColorModeToggle.js +13 -0
  114. package/dist/primitives/IconButton.d.ts +7 -0
  115. package/dist/primitives/IconButton.js +13 -0
  116. package/dist/primitives/ScrollToTarget.d.ts +9 -0
  117. package/dist/primitives/ScrollToTarget.js +48 -0
  118. package/dist/primitives/Separator.d.ts +7 -0
  119. package/dist/primitives/Separator.js +9 -0
  120. package/dist/primitives/Skeleton.d.ts +7 -0
  121. package/dist/primitives/Skeleton.js +9 -0
  122. package/dist/primitives/Slot.d.ts +10 -0
  123. package/dist/primitives/Slot.js +25 -0
  124. package/dist/primitives/Spinner.d.ts +6 -0
  125. package/dist/primitives/Spinner.js +9 -0
  126. package/dist/primitives/animation/ConditionTransition.d.ts +8 -0
  127. package/dist/primitives/animation/ConditionTransition.js +13 -0
  128. package/dist/primitives/animation/ListTrail.d.ts +10 -0
  129. package/dist/primitives/animation/ListTrail.js +14 -0
  130. package/dist/primitives/animation/Opacity.d.ts +3 -0
  131. package/dist/primitives/animation/Opacity.js +10 -0
  132. package/dist/primitives/animation/Spring.d.ts +9 -0
  133. package/dist/primitives/animation/Spring.js +29 -0
  134. package/dist/primitives/animation/index.d.ts +7 -0
  135. package/dist/primitives/animation/index.js +11 -0
  136. package/dist/primitives/cn.d.ts +4 -0
  137. package/dist/primitives/cn.js +7 -0
  138. package/dist/primitives/icons.d.ts +4 -0
  139. package/dist/primitives/icons.js +15 -0
  140. package/dist/primitives/index.d.ts +22 -0
  141. package/dist/primitives/index.js +44 -0
  142. package/dist/react/client.d.ts +14 -0
  143. package/dist/react/client.js +95 -0
  144. package/dist/react/index.d.ts +4 -0
  145. package/dist/react/index.js +11 -0
  146. package/dist/react/runtime.d.ts +18 -0
  147. package/dist/react/runtime.js +30 -0
  148. package/dist/theme/antdDocument.d.ts +18 -0
  149. package/dist/theme/antdDocument.js +59 -0
  150. package/dist/theme/api/api-data.d.ts +2 -0
  151. package/dist/theme/api/api-data.js +8 -0
  152. package/dist/theme/api/api.d.ts +28 -0
  153. package/dist/theme/api/api.js +27 -0
  154. package/dist/theme/api/httpClient.d.ts +24 -0
  155. package/dist/theme/api/httpClient.js +83 -0
  156. package/dist/theme/api/json.d.ts +1 -0
  157. package/dist/theme/api/json.js +5 -0
  158. package/dist/theme/api/jsonp.d.ts +1 -0
  159. package/dist/theme/api/jsonp.js +5 -0
  160. package/dist/theme/api-data.d.ts +12 -0
  161. package/dist/theme/api-data.js +22 -0
  162. package/dist/theme/api.d.ts +28 -0
  163. package/dist/theme/api.js +27 -0
  164. package/dist/theme/appearance.d.ts +4 -0
  165. package/dist/theme/appearance.js +16 -0
  166. package/dist/theme/assets.d.ts +2 -0
  167. package/dist/theme/assets.js +27 -0
  168. package/dist/theme/authSession.d.ts +16 -0
  169. package/dist/theme/authSession.js +92 -0
  170. package/dist/theme/build/antdDocument.d.ts +145 -0
  171. package/dist/theme/build/antdDocument.js +70 -0
  172. package/dist/theme/build/next-config.d.ts +17 -0
  173. package/dist/theme/build/next-config.js +100 -0
  174. package/dist/theme/build/node.d.ts +2 -0
  175. package/dist/theme/build/node.js +6 -0
  176. package/dist/theme/colorMode.d.ts +12 -0
  177. package/dist/theme/colorMode.js +45 -0
  178. package/dist/theme/commentAuthor.d.ts +17 -0
  179. package/dist/theme/commentAuthor.js +48 -0
  180. package/dist/theme/content/archiveSlim.d.ts +7 -0
  181. package/dist/theme/content/archiveSlim.js +38 -0
  182. package/dist/theme/content/articleSlim.d.ts +10 -0
  183. package/dist/theme/content/articleSlim.js +35 -0
  184. package/dist/theme/content/assets.d.ts +8 -0
  185. package/dist/theme/content/assets.js +74 -0
  186. package/dist/theme/content/carouselArticles.d.ts +10 -0
  187. package/dist/theme/content/carouselArticles.js +39 -0
  188. package/dist/theme/content/excerpt.d.ts +15 -0
  189. package/dist/theme/content/excerpt.js +42 -0
  190. package/dist/theme/content/nav.d.ts +10 -0
  191. package/dist/theme/content/nav.js +30 -0
  192. package/dist/theme/content/seo.d.ts +6 -0
  193. package/dist/theme/content/seo.js +12 -0
  194. package/dist/theme/createAntdApp.d.ts +106 -0
  195. package/dist/theme/createAntdApp.js +175 -0
  196. package/dist/theme/createApp.d.ts +10 -0
  197. package/dist/theme/createApp.js +141 -0
  198. package/dist/theme/createCatalogApp.d.ts +108 -0
  199. package/dist/theme/createCatalogApp.js +168 -0
  200. package/dist/theme/customizer.d.ts +1 -0
  201. package/dist/theme/customizer.js +5 -0
  202. package/dist/theme/excerpt.d.ts +16 -0
  203. package/dist/theme/excerpt.js +31 -0
  204. package/dist/theme/extension/branding-mods.d.ts +10 -0
  205. package/dist/theme/extension/branding-mods.js +65 -0
  206. package/dist/theme/extension/configuration/defaults.d.ts +3 -0
  207. package/dist/theme/extension/configuration/defaults.js +32 -0
  208. package/dist/theme/extension/configuration/formily.d.ts +10 -0
  209. package/dist/theme/extension/configuration/formily.js +170 -0
  210. package/dist/theme/extension/configuration/index.d.ts +7 -0
  211. package/dist/theme/extension/configuration/index.js +28 -0
  212. package/dist/theme/extension/configuration/paths.d.ts +1 -0
  213. package/dist/theme/extension/configuration/paths.js +7 -0
  214. package/dist/theme/extension/configuration/presets/twentytwentyfive.d.ts +7 -0
  215. package/dist/theme/extension/configuration/presets/twentytwentyfive.js +94 -0
  216. package/dist/theme/extension/configuration/resolve.d.ts +24 -0
  217. package/dist/theme/extension/configuration/resolve.js +98 -0
  218. package/dist/theme/extension/configuration/types.d.ts +68 -0
  219. package/dist/theme/extension/configuration/types.js +3 -0
  220. package/dist/theme/extension/configuration/validate.d.ts +8 -0
  221. package/dist/theme/extension/configuration/validate.js +21 -0
  222. package/dist/theme/extension/index.d.ts +11 -0
  223. package/dist/theme/extension/index.js +38 -0
  224. package/dist/theme/extension/manifest-normalize.d.ts +5 -0
  225. package/dist/theme/extension/manifest-normalize.js +75 -0
  226. package/dist/theme/extension/presets/twentytwentyfive-appearance.d.ts +10 -0
  227. package/dist/theme/extension/presets/twentytwentyfive-appearance.js +193 -0
  228. package/dist/theme/extension/preview.d.ts +46 -0
  229. package/dist/theme/extension/preview.js +92 -0
  230. package/dist/theme/extension/site-notices.d.ts +19 -0
  231. package/dist/theme/extension/site-notices.js +88 -0
  232. package/dist/theme/extension/site-settings.d.ts +37 -0
  233. package/dist/theme/extension/site-settings.js +144 -0
  234. package/dist/theme/extension/siteNav.d.ts +18 -0
  235. package/dist/theme/extension/siteNav.js +17 -0
  236. package/dist/theme/extension/theme-admin-locale.d.ts +11 -0
  237. package/dist/theme/extension/theme-admin-locale.io.d.ts +2 -0
  238. package/dist/theme/extension/theme-admin-locale.io.js +54 -0
  239. package/dist/theme/extension/theme-admin-locale.js +68 -0
  240. package/dist/theme/extension/theme.d.ts +89 -0
  241. package/dist/theme/extension/theme.js +93 -0
  242. package/dist/theme/extension/twentytwentyfive-vars.d.ts +9 -0
  243. package/dist/theme/extension/twentytwentyfive-vars.js +103 -0
  244. package/dist/theme/fetch.d.ts +134 -0
  245. package/dist/theme/fetch.js +241 -0
  246. package/dist/theme/format.d.ts +16 -0
  247. package/dist/theme/format.js +48 -0
  248. package/dist/theme/httpClient.d.ts +20 -0
  249. package/dist/theme/httpClient.js +89 -0
  250. package/dist/theme/index.d.ts +63 -0
  251. package/dist/theme/index.js +226 -0
  252. package/dist/theme/json.d.ts +1 -0
  253. package/dist/theme/json.js +17 -0
  254. package/dist/theme/jsonp.d.ts +8 -0
  255. package/dist/theme/jsonp.js +27 -0
  256. package/dist/theme/locale.d.ts +23 -0
  257. package/dist/theme/locale.js +55 -0
  258. package/dist/theme/nav.d.ts +10 -0
  259. package/dist/theme/nav.js +30 -0
  260. package/dist/theme/next-config.d.ts +2 -0
  261. package/dist/theme/next-config.js +18 -0
  262. package/dist/theme/node.d.ts +2 -0
  263. package/dist/theme/node.js +18 -0
  264. package/dist/theme/preview/preview-config.d.ts +13 -0
  265. package/dist/theme/preview/preview-config.js +65 -0
  266. package/dist/theme/preview/preview-draft.d.ts +19 -0
  267. package/dist/theme/preview/preview-draft.js +51 -0
  268. package/dist/theme/preview/preview-mods.d.ts +16 -0
  269. package/dist/theme/preview/preview-mods.js +78 -0
  270. package/dist/theme/preview-config.d.ts +13 -0
  271. package/dist/theme/preview-config.js +65 -0
  272. package/dist/theme/preview-draft.d.ts +19 -0
  273. package/dist/theme/preview-draft.js +51 -0
  274. package/dist/theme/preview-mods.d.ts +16 -0
  275. package/dist/theme/preview-mods.js +78 -0
  276. package/dist/theme/providers/index.d.ts +118 -0
  277. package/dist/theme/providers/index.js +251 -0
  278. package/dist/theme/providers/setup.d.ts +124 -0
  279. package/dist/theme/providers/setup.js +29 -0
  280. package/dist/theme/runtime.d.ts +18 -0
  281. package/dist/theme/runtime.js +19 -0
  282. package/dist/theme/seo.d.ts +6 -0
  283. package/dist/theme/seo.js +12 -0
  284. package/dist/theme/server.d.ts +65 -0
  285. package/dist/theme/server.js +177 -0
  286. package/dist/theme/setting.d.ts +12 -0
  287. package/dist/theme/setting.js +42 -0
  288. package/dist/theme/ssr/bootstrap.d.ts +48 -0
  289. package/dist/theme/ssr/bootstrap.js +112 -0
  290. package/dist/theme/ssr/fetch.d.ts +134 -0
  291. package/dist/theme/ssr/fetch.js +264 -0
  292. package/dist/theme/ssr/format.d.ts +3 -0
  293. package/dist/theme/ssr/format.js +8 -0
  294. package/dist/theme/ssr/pageProps.d.ts +62 -0
  295. package/dist/theme/ssr/pageProps.js +138 -0
  296. package/dist/theme/ssr/setting.d.ts +12 -0
  297. package/dist/theme/ssr/setting.js +42 -0
  298. package/dist/theme/ssr/slimBootstrap.d.ts +11 -0
  299. package/dist/theme/ssr/slimBootstrap.js +75 -0
  300. package/dist/theme/ssr/static.d.ts +10 -0
  301. package/dist/theme/ssr/static.js +17 -0
  302. package/dist/theme/ssr/templates.d.ts +35 -0
  303. package/dist/theme/ssr/templates.js +50 -0
  304. package/dist/theme/static.d.ts +10 -0
  305. package/dist/theme/static.js +17 -0
  306. package/dist/theme/templates.d.ts +27 -0
  307. package/dist/theme/templates.js +38 -0
  308. package/dist/theme/ui-optional.d.ts +1 -0
  309. package/dist/theme/ui-optional.js +21 -0
  310. package/dist/theme/visitor/appearance.d.ts +4 -0
  311. package/dist/theme/visitor/appearance.js +16 -0
  312. package/dist/theme/visitor/authSession.d.ts +16 -0
  313. package/dist/theme/visitor/authSession.js +92 -0
  314. package/dist/theme/visitor/colorMode.d.ts +17 -0
  315. package/dist/theme/visitor/colorMode.js +59 -0
  316. package/dist/theme/visitor/commentAuthor.d.ts +16 -0
  317. package/dist/theme/visitor/commentAuthor.js +45 -0
  318. package/dist/theme/visitor/i18n.d.ts +4 -0
  319. package/dist/theme/visitor/i18n.js +28 -0
  320. package/dist/theme/visitor/locale.d.ts +23 -0
  321. package/dist/theme/visitor/locale.js +72 -0
  322. package/dist/theme/visitor/runtime.d.ts +18 -0
  323. package/dist/theme/visitor/runtime.js +19 -0
  324. package/dist/theme/visitor/visitorLocale.d.ts +11 -0
  325. package/dist/theme/visitor/visitorLocale.js +56 -0
  326. package/dist/theme/visitorLocale.d.ts +6 -0
  327. package/dist/theme/visitorLocale.js +39 -0
  328. package/dist/types/index.d.ts +79 -68
  329. package/dist/ui/AntdStyleTransitionFix.d.ts +5 -0
  330. package/dist/ui/AntdStyleTransitionFix.js +16 -0
  331. package/dist/ui/ArchiveEmptyState.d.ts +13 -0
  332. package/dist/ui/ArchiveEmptyState.js +8 -0
  333. package/dist/ui/ArchivePageLayout.d.ts +10 -0
  334. package/dist/ui/ArchivePageLayout.js +8 -0
  335. package/dist/ui/ArticleCard.d.ts +27 -0
  336. package/dist/ui/ArticleCard.js +16 -0
  337. package/dist/ui/ArticleList.d.ts +14 -0
  338. package/dist/ui/ArticleList.js +16 -0
  339. package/dist/ui/BaseGlobalStyles.d.ts +5 -0
  340. package/dist/ui/BaseGlobalStyles.js +18 -0
  341. package/dist/ui/LocaleSwitcher.d.ts +7 -0
  342. package/dist/ui/LocaleSwitcher.js +15 -0
  343. package/dist/ui/NavMenu.d.ts +16 -0
  344. package/dist/ui/NavMenu.js +8 -0
  345. package/dist/ui/NotFoundPanel.d.ts +11 -0
  346. package/dist/ui/NotFoundPanel.js +8 -0
  347. package/dist/ui/PageHeader.d.ts +10 -0
  348. package/dist/ui/PageHeader.js +8 -0
  349. package/dist/ui/SiteBranding.d.ts +10 -0
  350. package/dist/ui/SiteBranding.js +14 -0
  351. package/dist/ui/SiteDocument.d.ts +20 -0
  352. package/dist/ui/SiteDocument.js +13 -0
  353. package/dist/ui/SiteDocumentFallback.d.ts +8 -0
  354. package/dist/ui/SiteDocumentFallback.js +9 -0
  355. package/dist/ui/SiteLogo.d.ts +6 -0
  356. package/dist/ui/SiteLogo.js +16 -0
  357. package/dist/ui/SiteTagline.d.ts +7 -0
  358. package/dist/ui/SiteTagline.js +15 -0
  359. package/dist/ui/TaxonomyList.d.ts +25 -0
  360. package/dist/ui/TaxonomyList.js +30 -0
  361. package/dist/ui/ThemeCssVars.d.ts +2 -0
  362. package/dist/ui/ThemeCssVars.js +85 -0
  363. package/dist/ui/ThemeLayout.d.ts +13 -0
  364. package/dist/ui/ThemeLayout.js +11 -0
  365. package/dist/ui/components/AntdStyleTransitionFix.d.ts +5 -0
  366. package/dist/ui/components/AntdStyleTransitionFix.js +16 -0
  367. package/dist/ui/components/ArchiveEmptyState.d.ts +13 -0
  368. package/dist/ui/components/ArchiveEmptyState.js +8 -0
  369. package/dist/ui/components/ArchivePageLayout.d.ts +10 -0
  370. package/dist/ui/components/ArchivePageLayout.js +8 -0
  371. package/dist/ui/components/ArticleCard.d.ts +27 -0
  372. package/dist/ui/components/ArticleCard.js +16 -0
  373. package/dist/ui/components/ArticleList.d.ts +14 -0
  374. package/dist/ui/components/ArticleList.js +16 -0
  375. package/dist/ui/components/BaseGlobalStyles.d.ts +5 -0
  376. package/dist/ui/components/BaseGlobalStyles.js +18 -0
  377. package/dist/ui/components/LocaleSwitcher.d.ts +10 -0
  378. package/dist/ui/components/LocaleSwitcher.js +11 -0
  379. package/dist/ui/components/NavMenu.d.ts +16 -0
  380. package/dist/ui/components/NavMenu.js +8 -0
  381. package/dist/ui/components/NotFoundPanel.d.ts +11 -0
  382. package/dist/ui/components/NotFoundPanel.js +8 -0
  383. package/dist/ui/components/PageHeader.d.ts +10 -0
  384. package/dist/ui/components/PageHeader.js +8 -0
  385. package/dist/ui/components/RouteProgress.d.ts +9 -0
  386. package/dist/ui/components/RouteProgress.js +40 -0
  387. package/dist/ui/components/SiteAnalytics.d.ts +5 -0
  388. package/dist/ui/components/SiteAnalytics.js +42 -0
  389. package/dist/ui/components/SiteBranding.d.ts +10 -0
  390. package/dist/ui/components/SiteBranding.js +14 -0
  391. package/dist/ui/components/SiteDocument.d.ts +20 -0
  392. package/dist/ui/components/SiteDocument.js +13 -0
  393. package/dist/ui/components/SiteDocumentFallback.d.ts +8 -0
  394. package/dist/ui/components/SiteDocumentFallback.js +9 -0
  395. package/dist/ui/components/SiteLogo.d.ts +8 -0
  396. package/dist/ui/components/SiteLogo.js +23 -0
  397. package/dist/ui/components/SiteSeo.d.ts +13 -0
  398. package/dist/ui/components/SiteSeo.js +19 -0
  399. package/dist/ui/components/SiteTagline.d.ts +7 -0
  400. package/dist/ui/components/SiteTagline.js +15 -0
  401. package/dist/ui/components/TaxonomyList.d.ts +25 -0
  402. package/dist/ui/components/TaxonomyList.js +30 -0
  403. package/dist/ui/components/ThemeCssVars.d.ts +2 -0
  404. package/dist/ui/components/ThemeCssVars.js +85 -0
  405. package/dist/ui/components/ThemeLayout.d.ts +13 -0
  406. package/dist/ui/components/ThemeLayout.js +11 -0
  407. package/dist/ui/components/content/ArticleReader.d.ts +45 -0
  408. package/dist/ui/components/content/ArticleReader.js +23 -0
  409. package/dist/ui/components/content/ArticleToc.d.ts +21 -0
  410. package/dist/ui/components/content/ArticleToc.js +75 -0
  411. package/dist/ui/components/content/HtmlContent.d.ts +15 -0
  412. package/dist/ui/components/content/HtmlContent.js +237 -0
  413. package/dist/ui/components/content/Image.d.ts +9 -0
  414. package/dist/ui/components/content/Image.js +13 -0
  415. package/dist/ui/components/content/ImageViewer.d.ts +8 -0
  416. package/dist/ui/components/content/ImageViewer.js +33 -0
  417. package/dist/ui/components/content/LocaleTime.d.ts +9 -0
  418. package/dist/ui/components/content/LocaleTime.js +63 -0
  419. package/dist/ui/components/content/index.d.ts +14 -0
  420. package/dist/ui/components/content/index.js +18 -0
  421. package/dist/ui/components/toolbar/LocaleToggleButton.d.ts +8 -0
  422. package/dist/ui/components/toolbar/LocaleToggleButton.js +18 -0
  423. package/dist/ui/components/toolbar/ThemeToggleButton.d.ts +7 -0
  424. package/dist/ui/components/toolbar/ThemeToggleButton.js +10 -0
  425. package/dist/ui/components/toolbar/ToolbarIconButton.d.ts +7 -0
  426. package/dist/ui/components/toolbar/ToolbarIconButton.js +22 -0
  427. package/dist/ui/components/toolbar/constants.d.ts +5 -0
  428. package/dist/ui/components/toolbar/constants.js +8 -0
  429. package/dist/ui/components/toolbar/icons.d.ts +17 -0
  430. package/dist/ui/components/toolbar/icons.js +44 -0
  431. package/dist/ui/components/toolbar/index.d.ts +9 -0
  432. package/dist/ui/components/toolbar/index.js +25 -0
  433. package/dist/ui/components/toolbar/locale-label.d.ts +3 -0
  434. package/dist/ui/components/toolbar/locale-label.js +19 -0
  435. package/dist/ui/context/LocaleContext.d.ts +15 -0
  436. package/dist/ui/context/LocaleContext.js +59 -0
  437. package/dist/ui/context/ReactPressProvider.d.ts +3 -0
  438. package/dist/ui/context/ReactPressProvider.js +10 -0
  439. package/dist/ui/context/SiteCatalogContext.d.ts +41 -0
  440. package/dist/ui/context/SiteCatalogContext.js +60 -0
  441. package/dist/ui/context/ThemeRuntimeContext.d.ts +21 -0
  442. package/dist/ui/context/ThemeRuntimeContext.js +59 -0
  443. package/dist/ui/context/index.d.ts +8 -0
  444. package/dist/ui/context/index.js +26 -0
  445. package/dist/ui/context/siteCatalogTypes.d.ts +64 -0
  446. package/dist/ui/context/siteCatalogTypes.js +20 -0
  447. package/dist/ui/context/types.d.ts +34 -0
  448. package/dist/ui/context/types.js +2 -0
  449. package/dist/ui/hooks/index.d.ts +12 -0
  450. package/dist/ui/hooks/index.js +29 -0
  451. package/dist/ui/hooks/useAsyncLoading.d.ts +4 -0
  452. package/dist/ui/hooks/useAsyncLoading.js +31 -0
  453. package/dist/ui/hooks/useForceUpdate.d.ts +2 -0
  454. package/dist/ui/hooks/useForceUpdate.js +11 -0
  455. package/dist/ui/hooks/useNavActive.d.ts +5 -0
  456. package/dist/ui/hooks/useNavActive.js +11 -0
  457. package/dist/ui/hooks/usePagination.d.ts +34 -0
  458. package/dist/ui/hooks/usePagination.js +55 -0
  459. package/dist/ui/hooks/useReportArticleView.d.ts +4 -0
  460. package/dist/ui/hooks/useReportArticleView.js +40 -0
  461. package/dist/ui/hooks/useReportPageView.d.ts +11 -0
  462. package/dist/ui/hooks/useReportPageView.js +28 -0
  463. package/dist/ui/hooks/useRouteParam.d.ts +5 -0
  464. package/dist/ui/hooks/useRouteParam.js +15 -0
  465. package/dist/ui/hooks/useToggle.d.ts +2 -0
  466. package/dist/ui/hooks/useToggle.js +17 -0
  467. package/dist/ui/hooks/useWarningOnExit.d.ts +5 -0
  468. package/dist/ui/hooks/useWarningOnExit.js +59 -0
  469. package/dist/ui/index.d.ts +43 -0
  470. package/dist/ui/index.js +87 -0
  471. package/dist/utils/api-envelope.d.ts +14 -0
  472. package/dist/utils/api-envelope.js +31 -0
  473. package/dist/utils/clipboard.d.ts +2 -0
  474. package/dist/utils/clipboard.js +24 -0
  475. package/dist/utils/cookie.d.ts +2 -0
  476. package/dist/utils/cookie.js +15 -0
  477. package/dist/utils/date.d.ts +4 -0
  478. package/dist/utils/date.js +45 -0
  479. package/dist/utils/email.d.ts +3 -0
  480. package/dist/utils/email.js +9 -0
  481. package/dist/utils/error.d.ts +7 -0
  482. package/dist/utils/error.js +26 -0
  483. package/dist/utils/image.d.ts +7 -0
  484. package/dist/utils/image.js +34 -0
  485. package/dist/utils/index.d.ts +15 -33
  486. package/dist/utils/index.js +37 -57
  487. package/dist/utils/json.d.ts +2 -0
  488. package/dist/utils/json.js +18 -0
  489. package/dist/utils/jsonp.d.ts +8 -0
  490. package/dist/utils/jsonp.js +27 -0
  491. package/dist/utils/object.d.ts +7 -0
  492. package/dist/utils/object.js +63 -0
  493. package/dist/utils/setting.d.ts +12 -0
  494. package/dist/utils/setting.js +13 -0
  495. package/dist/utils/string.d.ts +4 -0
  496. package/dist/utils/string.js +15 -0
  497. package/dist/utils/viewport.d.ts +3 -0
  498. package/dist/utils/viewport.js +14 -0
  499. package/package.json +129 -16
  500. package/LICENSE +0 -21
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiError = void 0;
4
+ exports.createClient = createClient;
5
+ exports.getDefaultApiBaseUrl = getDefaultApiBaseUrl;
6
+ const instance_1 = require("../../api/instance");
7
+ class ApiError extends Error {
8
+ constructor(code, message) {
9
+ super(message);
10
+ this.name = 'ApiError';
11
+ this.code = code;
12
+ }
13
+ }
14
+ exports.ApiError = ApiError;
15
+ function readApiMessage(value) {
16
+ if (typeof value === 'string') {
17
+ const trimmed = value.trim();
18
+ return trimmed ? trimmed : null;
19
+ }
20
+ if (Array.isArray(value)) {
21
+ const parts = value
22
+ .map((item) => readApiMessage(item))
23
+ .filter((item) => Boolean(item));
24
+ return parts.length ? parts.join(', ') : null;
25
+ }
26
+ if (value && typeof value === 'object') {
27
+ const payload = value;
28
+ return readApiMessage(payload.message) ?? readApiMessage(payload.msg);
29
+ }
30
+ return null;
31
+ }
32
+ function rejectApiError(status, payload) {
33
+ if (typeof payload.code === 'number' && payload.code !== 0) {
34
+ return Promise.reject(new ApiError(payload.code, readApiMessage(payload.message) ?? 'Request failed'));
35
+ }
36
+ const message = readApiMessage(payload.msg) ?? readApiMessage(payload.message);
37
+ if (message) {
38
+ return Promise.reject(new ApiError(Number(payload.statusCode ?? status ?? 500), message));
39
+ }
40
+ return null;
41
+ }
42
+ function attachInterceptors(http, options) {
43
+ http.instance.interceptors.request.use((config) => {
44
+ const token = options.getAccessToken?.();
45
+ if (token && config.headers) {
46
+ config.headers.Authorization = `Bearer ${token}`;
47
+ }
48
+ return config;
49
+ });
50
+ http.instance.interceptors.response.use((response) => {
51
+ const body = response.data;
52
+ if (!body || typeof body !== 'object')
53
+ return response;
54
+ if (typeof body.code === 'number') {
55
+ if (body.code !== 0) {
56
+ throw new ApiError(body.code, readApiMessage(body.message) ?? 'Request failed');
57
+ }
58
+ response.data = body.data;
59
+ return response;
60
+ }
61
+ if (typeof body.success === 'boolean') {
62
+ if (!body.success) {
63
+ throw new ApiError(Number(body.statusCode ?? 500), readApiMessage(body.msg) ?? 'Request failed');
64
+ }
65
+ response.data = body.data;
66
+ return response;
67
+ }
68
+ return response;
69
+ }, (error) => {
70
+ const status = error?.response?.status;
71
+ if (status === 401) {
72
+ options.onUnauthorized?.();
73
+ }
74
+ const body = error?.response?.data;
75
+ if (body && typeof body === 'object') {
76
+ const rejected = rejectApiError(status, body);
77
+ if (rejected)
78
+ return rejected;
79
+ }
80
+ return Promise.reject(error);
81
+ });
82
+ }
83
+ /** Single factory for web / theme / plugins — wraps generated API modules. */
84
+ function createClient(options = {}) {
85
+ const baseURL = options.baseURL ?? 'http://localhost:3002/api';
86
+ const client = (0, instance_1.createApiInstance)({ baseURL });
87
+ attachInterceptors(client.article.http, options);
88
+ return client;
89
+ }
90
+ function getDefaultApiBaseUrl() {
91
+ if (typeof process !== 'undefined' && process.env?.SERVER_API_URL) {
92
+ return process.env.SERVER_API_URL;
93
+ }
94
+ return 'http://localhost:3002/api';
95
+ }
@@ -0,0 +1,4 @@
1
+ export type { ClientOptions, ReactPressClient } from './client';
2
+ export { ApiError, createClient, getDefaultApiBaseUrl } from './client';
3
+ export type { AppRuntime, DesktopApi } from './runtime';
4
+ export { getDesktopApi, getRuntime, resolveApiBaseUrl, } from './runtime';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveApiBaseUrl = exports.getRuntime = exports.getDesktopApi = exports.getDefaultApiBaseUrl = exports.createClient = exports.ApiError = void 0;
4
+ var client_1 = require("./client");
5
+ Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return client_1.ApiError; } });
6
+ Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_1.createClient; } });
7
+ Object.defineProperty(exports, "getDefaultApiBaseUrl", { enumerable: true, get: function () { return client_1.getDefaultApiBaseUrl; } });
8
+ var runtime_1 = require("./runtime");
9
+ Object.defineProperty(exports, "getDesktopApi", { enumerable: true, get: function () { return runtime_1.getDesktopApi; } });
10
+ Object.defineProperty(exports, "getRuntime", { enumerable: true, get: function () { return runtime_1.getRuntime; } });
11
+ Object.defineProperty(exports, "resolveApiBaseUrl", { enumerable: true, get: function () { return runtime_1.resolveApiBaseUrl; } });
@@ -0,0 +1,18 @@
1
+ export type AppRuntime = 'web' | 'electron';
2
+ export interface DesktopApi {
3
+ getApiBaseUrl: () => Promise<string>;
4
+ setApiBaseUrl: (url: string) => Promise<void>;
5
+ showSaveDialog: (opts: {
6
+ defaultPath?: string;
7
+ }) => Promise<string | undefined>;
8
+ openExternal: (url: string) => Promise<void>;
9
+ platform: NodeJS.Platform;
10
+ }
11
+ declare global {
12
+ interface Window {
13
+ reactpressDesktop?: DesktopApi;
14
+ }
15
+ }
16
+ export declare function getRuntime(): AppRuntime;
17
+ export declare function getDesktopApi(): DesktopApi | undefined;
18
+ export declare function resolveApiBaseUrl(fallback: string): Promise<string>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRuntime = getRuntime;
4
+ exports.getDesktopApi = getDesktopApi;
5
+ exports.resolveApiBaseUrl = resolveApiBaseUrl;
6
+ function getRuntime() {
7
+ if (typeof window !== 'undefined' && window.reactpressDesktop) {
8
+ return 'electron';
9
+ }
10
+ return 'web';
11
+ }
12
+ function getDesktopApi() {
13
+ if (typeof window === 'undefined')
14
+ return undefined;
15
+ return window.reactpressDesktop;
16
+ }
17
+ async function resolveApiBaseUrl(fallback) {
18
+ const desktop = getDesktopApi();
19
+ if (desktop) {
20
+ try {
21
+ const url = await desktop.getApiBaseUrl();
22
+ if (url)
23
+ return url;
24
+ }
25
+ catch {
26
+ // fall through
27
+ }
28
+ }
29
+ return fallback;
30
+ }
@@ -0,0 +1,4 @@
1
+ export type { DevPortRedirectOptions, DevPortRole } from './portRedirect';
2
+ export { isUnifiedNginxEntryEnabled } from './portRedirect';
3
+ export { buildDevPortRedirectUrl, isDirectDevPortAccess, isNginxDevRedirectEnabled, isThemePreviewDevPort, resolveDevPortRole, resolveNginxEntryUrl, shouldRedirectDevPortToNginx, THEME_PREVIEW_DEV_PORTS, } from './portRedirect';
4
+ export { devPortRedirectPlugin } from './vitePortRedirectPlugin';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.devPortRedirectPlugin = exports.THEME_PREVIEW_DEV_PORTS = exports.shouldRedirectDevPortToNginx = exports.resolveNginxEntryUrl = exports.resolveDevPortRole = exports.isThemePreviewDevPort = exports.isNginxDevRedirectEnabled = exports.isDirectDevPortAccess = exports.buildDevPortRedirectUrl = exports.isUnifiedNginxEntryEnabled = void 0;
4
+ var portRedirect_1 = require("./portRedirect");
5
+ Object.defineProperty(exports, "isUnifiedNginxEntryEnabled", { enumerable: true, get: function () { return portRedirect_1.isUnifiedNginxEntryEnabled; } });
6
+ var portRedirect_2 = require("./portRedirect");
7
+ Object.defineProperty(exports, "buildDevPortRedirectUrl", { enumerable: true, get: function () { return portRedirect_2.buildDevPortRedirectUrl; } });
8
+ Object.defineProperty(exports, "isDirectDevPortAccess", { enumerable: true, get: function () { return portRedirect_2.isDirectDevPortAccess; } });
9
+ Object.defineProperty(exports, "isNginxDevRedirectEnabled", { enumerable: true, get: function () { return portRedirect_2.isNginxDevRedirectEnabled; } });
10
+ Object.defineProperty(exports, "isThemePreviewDevPort", { enumerable: true, get: function () { return portRedirect_2.isThemePreviewDevPort; } });
11
+ Object.defineProperty(exports, "resolveDevPortRole", { enumerable: true, get: function () { return portRedirect_2.resolveDevPortRole; } });
12
+ Object.defineProperty(exports, "resolveNginxEntryUrl", { enumerable: true, get: function () { return portRedirect_2.resolveNginxEntryUrl; } });
13
+ Object.defineProperty(exports, "shouldRedirectDevPortToNginx", { enumerable: true, get: function () { return portRedirect_2.shouldRedirectDevPortToNginx; } });
14
+ Object.defineProperty(exports, "THEME_PREVIEW_DEV_PORTS", { enumerable: true, get: function () { return portRedirect_2.THEME_PREVIEW_DEV_PORTS; } });
15
+ var vitePortRedirectPlugin_1 = require("./vitePortRedirectPlugin");
16
+ Object.defineProperty(exports, "devPortRedirectPlugin", { enumerable: true, get: function () { return vitePortRedirectPlugin_1.devPortRedirectPlugin; } });
@@ -0,0 +1,26 @@
1
+ /** Admin theme preview pool — must not redirect to nginx visitor (active theme). */
2
+ export declare const THEME_PREVIEW_DEV_PORTS: number[];
3
+ export type DevPortRole = 'visitor' | 'admin' | 'api' | 'preview';
4
+ export declare function isThemePreviewDevPort(port: number): boolean;
5
+ export declare function resolveDevPortRole(directPort: number): DevPortRole;
6
+ /** Unified nginx entry (:80) — dev (`REACTPRESS_NGINX_ENTRY_URL`) or prod (`NGINX_ENTRY_URL`). */
7
+ export declare function isUnifiedNginxEntryEnabled(): boolean;
8
+ /** @deprecated Use {@link isUnifiedNginxEntryEnabled} */
9
+ export declare function isNginxDevRedirectEnabled(): boolean;
10
+ export declare function resolveNginxEntryUrl(): string;
11
+ export declare function isDirectDevPortAccess(host: string | null | undefined, port: number): boolean;
12
+ export interface DevPortRedirectOptions {
13
+ host?: string | null;
14
+ method?: string;
15
+ accept?: string | null;
16
+ directPort: number;
17
+ pathname?: string;
18
+ skipPathPrefixes?: string[];
19
+ }
20
+ export declare function shouldRedirectDevPortToNginx(options: DevPortRedirectOptions): boolean;
21
+ export declare function buildDevPortRedirectUrl(options: {
22
+ directPort: number;
23
+ pathname?: string;
24
+ search?: string;
25
+ nginxEntryUrl?: string;
26
+ }): string;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.THEME_PREVIEW_DEV_PORTS = void 0;
4
+ exports.isThemePreviewDevPort = isThemePreviewDevPort;
5
+ exports.resolveDevPortRole = resolveDevPortRole;
6
+ exports.isUnifiedNginxEntryEnabled = isUnifiedNginxEntryEnabled;
7
+ exports.isNginxDevRedirectEnabled = isNginxDevRedirectEnabled;
8
+ exports.resolveNginxEntryUrl = resolveNginxEntryUrl;
9
+ exports.isDirectDevPortAccess = isDirectDevPortAccess;
10
+ exports.shouldRedirectDevPortToNginx = shouldRedirectDevPortToNginx;
11
+ exports.buildDevPortRedirectUrl = buildDevPortRedirectUrl;
12
+ const DEFAULT_NGINX_PORT = 80;
13
+ /** Admin theme preview pool — must not redirect to nginx visitor (active theme). */
14
+ exports.THEME_PREVIEW_DEV_PORTS = [3003, 3004, 3005, 3006, 3007, 3008];
15
+ function isThemePreviewDevPort(port) {
16
+ return Number.isInteger(port) && exports.THEME_PREVIEW_DEV_PORTS.includes(port);
17
+ }
18
+ function readPortEnv(key, fallback) {
19
+ const raw = process.env[key]?.trim();
20
+ if (!raw)
21
+ return fallback;
22
+ const parsed = parseInt(raw, 10);
23
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
24
+ }
25
+ function resolveDevPortRole(directPort) {
26
+ if (isThemePreviewDevPort(directPort))
27
+ return 'preview';
28
+ const apiPort = readPortEnv('SERVER_PORT', 3002);
29
+ const adminPort = readPortEnv('WEB_ADMIN_PORT', 3000);
30
+ if (directPort === apiPort)
31
+ return 'api';
32
+ if (directPort === adminPort)
33
+ return 'admin';
34
+ return 'visitor';
35
+ }
36
+ /** Unified nginx entry (:80) — dev (`REACTPRESS_NGINX_ENTRY_URL`) or prod (`NGINX_ENTRY_URL`). */
37
+ function isUnifiedNginxEntryEnabled() {
38
+ return Boolean(process.env.REACTPRESS_NGINX_ENTRY_URL?.trim() || process.env.NGINX_ENTRY_URL?.trim());
39
+ }
40
+ /** @deprecated Use {@link isUnifiedNginxEntryEnabled} */
41
+ function isNginxDevRedirectEnabled() {
42
+ return isUnifiedNginxEntryEnabled();
43
+ }
44
+ function resolveNginxEntryUrl() {
45
+ const override = process.env.REACTPRESS_NGINX_ENTRY_URL?.trim();
46
+ if (override) {
47
+ return override.replace(/\/$/, '');
48
+ }
49
+ const rawPort = process.env.NGINX_PORT?.trim();
50
+ const port = rawPort ? parseInt(rawPort, 10) : DEFAULT_NGINX_PORT;
51
+ if (Number.isFinite(port) && port > 0 && port !== DEFAULT_NGINX_PORT) {
52
+ return `http://localhost:${port}`;
53
+ }
54
+ return 'http://localhost';
55
+ }
56
+ function isDirectDevPortAccess(host, port) {
57
+ if (!host || !Number.isFinite(port) || port <= 0)
58
+ return false;
59
+ const normalized = host.toLowerCase();
60
+ return (normalized === `localhost:${port}` ||
61
+ normalized === `127.0.0.1:${port}` ||
62
+ normalized === `[::1]:${port}`);
63
+ }
64
+ function acceptsHtmlNavigation(accept) {
65
+ if (!accept)
66
+ return false;
67
+ return accept.includes('text/html');
68
+ }
69
+ function shouldRedirectDevPortToNginx(options) {
70
+ if (process.env.REACTPRESS_SKIP_DEV_PORT_REDIRECT === '1')
71
+ return false;
72
+ if (isThemePreviewDevPort(options.directPort))
73
+ return false;
74
+ if (!isUnifiedNginxEntryEnabled())
75
+ return false;
76
+ const method = (options.method || 'GET').toUpperCase();
77
+ if (method !== 'GET' && method !== 'HEAD')
78
+ return false;
79
+ if (!isDirectDevPortAccess(options.host, options.directPort))
80
+ return false;
81
+ if (!acceptsHtmlNavigation(options.accept))
82
+ return false;
83
+ const pathname = options.pathname || '/';
84
+ if (options.skipPathPrefixes?.some((prefix) => pathname.startsWith(prefix))) {
85
+ return false;
86
+ }
87
+ return true;
88
+ }
89
+ function buildDevPortRedirectUrl(options) {
90
+ const entry = (options.nginxEntryUrl || resolveNginxEntryUrl()).replace(/\/$/, '');
91
+ const pathname = options.pathname || '/';
92
+ const search = options.search || '';
93
+ const role = resolveDevPortRole(options.directPort);
94
+ if (role === 'api') {
95
+ if (pathname === '/' || pathname === '') {
96
+ return `${entry}/api${search}`;
97
+ }
98
+ return `${entry}${pathname}${search}`;
99
+ }
100
+ if (role === 'admin') {
101
+ let adminPath = pathname;
102
+ if (!adminPath.startsWith('/admin')) {
103
+ adminPath = adminPath === '/' ? '/admin/' : `/admin${adminPath.startsWith('/') ? adminPath : `/${adminPath}`}`;
104
+ }
105
+ return `${entry}${adminPath}${search}`;
106
+ }
107
+ if (role === 'preview') {
108
+ return `${entry}${pathname}${search}`;
109
+ }
110
+ return `${entry}${pathname}${search}`;
111
+ }
@@ -0,0 +1,24 @@
1
+ type DevServer = {
2
+ middlewares: {
3
+ use: (handler: (req: DevRequest, res: DevResponse, next: () => void) => void) => void;
4
+ };
5
+ };
6
+ type DevRequest = {
7
+ url?: string;
8
+ method?: string;
9
+ headers: {
10
+ host?: string;
11
+ accept?: string;
12
+ };
13
+ };
14
+ type DevResponse = {
15
+ statusCode: number;
16
+ setHeader: (name: string, value: string) => void;
17
+ end: () => void;
18
+ };
19
+ /** Redirect direct :3000 browser hits to nginx entry when REACTPRESS_NGINX_ENTRY_URL is set. */
20
+ export declare function devPortRedirectPlugin(port: number): {
21
+ name: string;
22
+ configureServer(server: DevServer): void;
23
+ };
24
+ export {};
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.devPortRedirectPlugin = devPortRedirectPlugin;
4
+ const portRedirect_1 = require("./portRedirect");
5
+ const VITE_DEV_SKIP_PREFIXES = ['/@vite', '/@fs', '/@id', '/node_modules'];
6
+ function createRedirectMiddleware(port) {
7
+ return (req, res, next) => {
8
+ const url = req.url || '/';
9
+ const pathname = url.split('?')[0] || '/';
10
+ const search = url.includes('?') ? url.slice(url.indexOf('?')) : '';
11
+ if (!(0, portRedirect_1.shouldRedirectDevPortToNginx)({
12
+ host: req.headers.host,
13
+ method: req.method,
14
+ accept: req.headers.accept,
15
+ directPort: port,
16
+ pathname,
17
+ skipPathPrefixes: VITE_DEV_SKIP_PREFIXES,
18
+ })) {
19
+ next();
20
+ return;
21
+ }
22
+ const target = (0, portRedirect_1.buildDevPortRedirectUrl)({
23
+ directPort: port,
24
+ pathname,
25
+ search,
26
+ });
27
+ res.statusCode = 302;
28
+ res.setHeader('Location', target);
29
+ res.end();
30
+ };
31
+ }
32
+ /** Redirect direct :3000 browser hits to nginx entry when REACTPRESS_NGINX_ENTRY_URL is set. */
33
+ function devPortRedirectPlugin(port) {
34
+ return {
35
+ name: 'reactpress-dev-port-redirect',
36
+ configureServer(server) {
37
+ server.middlewares.use(createRedirectMiddleware(port));
38
+ },
39
+ };
40
+ }
@@ -0,0 +1,9 @@
1
+ export * as admin from './admin';
2
+ export * as client from './client';
3
+ export * as dev from './dev';
4
+ /** @deprecated Use `plugin/client`; path kept for compatibility. */
5
+ export * as react from './react';
6
+ export * from './admin';
7
+ export * from './client';
8
+ export * from './dev';
9
+ export * from './react';
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.react = exports.dev = exports.client = exports.admin = void 0;
40
+ exports.admin = __importStar(require("./admin"));
41
+ exports.client = __importStar(require("./client"));
42
+ exports.dev = __importStar(require("./dev"));
43
+ /** @deprecated Use `plugin/client`; path kept for compatibility. */
44
+ exports.react = __importStar(require("./react"));
45
+ __exportStar(require("./admin"), exports);
46
+ __exportStar(require("./client"), exports);
47
+ __exportStar(require("./dev"), exports);
48
+ __exportStar(require("./react"), exports);
@@ -0,0 +1,14 @@
1
+ import { createApiInstance } from '../../api/instance';
2
+ export declare class ApiError extends Error {
3
+ code: number;
4
+ constructor(code: number, message: string);
5
+ }
6
+ export interface ClientOptions {
7
+ baseURL?: string;
8
+ getAccessToken?: () => string | null | undefined;
9
+ onUnauthorized?: () => void;
10
+ }
11
+ export type ReactPressClient = ReturnType<typeof createApiInstance>;
12
+ /** Single factory for web / theme / plugins — wraps generated API modules. */
13
+ export declare function createClient(options?: ClientOptions): ReactPressClient;
14
+ export declare function getDefaultApiBaseUrl(): string;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiError = void 0;
4
+ exports.createClient = createClient;
5
+ exports.getDefaultApiBaseUrl = getDefaultApiBaseUrl;
6
+ const instance_1 = require("../../api/instance");
7
+ class ApiError extends Error {
8
+ constructor(code, message) {
9
+ super(message);
10
+ this.name = 'ApiError';
11
+ this.code = code;
12
+ }
13
+ }
14
+ exports.ApiError = ApiError;
15
+ function readApiMessage(value) {
16
+ if (typeof value === 'string') {
17
+ const trimmed = value.trim();
18
+ return trimmed ? trimmed : null;
19
+ }
20
+ if (Array.isArray(value)) {
21
+ const parts = value
22
+ .map((item) => readApiMessage(item))
23
+ .filter((item) => Boolean(item));
24
+ return parts.length ? parts.join(', ') : null;
25
+ }
26
+ if (value && typeof value === 'object') {
27
+ const payload = value;
28
+ return readApiMessage(payload.message) ?? readApiMessage(payload.msg);
29
+ }
30
+ return null;
31
+ }
32
+ function rejectApiError(status, payload) {
33
+ if (typeof payload.code === 'number' && payload.code !== 0) {
34
+ return Promise.reject(new ApiError(payload.code, readApiMessage(payload.message) ?? 'Request failed'));
35
+ }
36
+ const message = readApiMessage(payload.msg) ?? readApiMessage(payload.message);
37
+ if (message) {
38
+ return Promise.reject(new ApiError(Number(payload.statusCode ?? status ?? 500), message));
39
+ }
40
+ return null;
41
+ }
42
+ function attachInterceptors(http, options) {
43
+ http.instance.interceptors.request.use((config) => {
44
+ const token = options.getAccessToken?.();
45
+ if (token && config.headers) {
46
+ config.headers.Authorization = `Bearer ${token}`;
47
+ }
48
+ return config;
49
+ });
50
+ http.instance.interceptors.response.use((response) => {
51
+ const body = response.data;
52
+ if (!body || typeof body !== 'object')
53
+ return response;
54
+ if (typeof body.code === 'number') {
55
+ if (body.code !== 0) {
56
+ throw new ApiError(body.code, readApiMessage(body.message) ?? 'Request failed');
57
+ }
58
+ response.data = body.data;
59
+ return response;
60
+ }
61
+ if (typeof body.success === 'boolean') {
62
+ if (!body.success) {
63
+ throw new ApiError(Number(body.statusCode ?? 500), readApiMessage(body.msg) ?? 'Request failed');
64
+ }
65
+ response.data = body.data;
66
+ return response;
67
+ }
68
+ return response;
69
+ }, (error) => {
70
+ const status = error?.response?.status;
71
+ if (status === 401) {
72
+ options.onUnauthorized?.();
73
+ }
74
+ const body = error?.response?.data;
75
+ if (body && typeof body === 'object') {
76
+ const rejected = rejectApiError(status, body);
77
+ if (rejected)
78
+ return rejected;
79
+ }
80
+ return Promise.reject(error);
81
+ });
82
+ }
83
+ /** Single factory for web / theme / plugins — wraps generated API modules. */
84
+ function createClient(options = {}) {
85
+ const baseURL = options.baseURL ?? 'http://localhost:3002/api';
86
+ const client = (0, instance_1.createApiInstance)({ baseURL });
87
+ attachInterceptors(client.article.http, options);
88
+ return client;
89
+ }
90
+ function getDefaultApiBaseUrl() {
91
+ if (typeof process !== 'undefined' && process.env?.SERVER_API_URL) {
92
+ return process.env.SERVER_API_URL;
93
+ }
94
+ return 'http://localhost:3002/api';
95
+ }
@@ -0,0 +1,2 @@
1
+ /** Stable export path: `@fecommunity/reactpress-toolkit/plugin/react`. */
2
+ export * from '../client';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /** Stable export path: `@fecommunity/reactpress-toolkit/plugin/react`. */
18
+ __exportStar(require("../client"), exports);
@@ -0,0 +1,18 @@
1
+ export type AppRuntime = 'web' | 'electron';
2
+ export interface DesktopApi {
3
+ getApiBaseUrl: () => Promise<string>;
4
+ setApiBaseUrl: (url: string) => Promise<void>;
5
+ showSaveDialog: (opts: {
6
+ defaultPath?: string;
7
+ }) => Promise<string | undefined>;
8
+ openExternal: (url: string) => Promise<void>;
9
+ platform: NodeJS.Platform;
10
+ }
11
+ declare global {
12
+ interface Window {
13
+ reactpressDesktop?: DesktopApi;
14
+ }
15
+ }
16
+ export declare function getRuntime(): AppRuntime;
17
+ export declare function getDesktopApi(): DesktopApi | undefined;
18
+ export declare function resolveApiBaseUrl(fallback: string): Promise<string>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRuntime = getRuntime;
4
+ exports.getDesktopApi = getDesktopApi;
5
+ exports.resolveApiBaseUrl = resolveApiBaseUrl;
6
+ function getRuntime() {
7
+ if (typeof window !== 'undefined' && window.reactpressDesktop) {
8
+ return 'electron';
9
+ }
10
+ return 'web';
11
+ }
12
+ function getDesktopApi() {
13
+ if (typeof window === 'undefined')
14
+ return undefined;
15
+ return window.reactpressDesktop;
16
+ }
17
+ async function resolveApiBaseUrl(fallback) {
18
+ const desktop = getDesktopApi();
19
+ if (desktop) {
20
+ try {
21
+ const url = await desktop.getApiBaseUrl();
22
+ if (url)
23
+ return url;
24
+ }
25
+ catch {
26
+ // fall through
27
+ }
28
+ }
29
+ return fallback;
30
+ }
@@ -0,0 +1,2 @@
1
+ /** Disable Ant Design CSS transitions during hydration to avoid style flash. */
2
+ export declare function AntdStyleTransitionFix(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AntdStyleTransitionFix = AntdStyleTransitionFix;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const STYLE_ELEMENT_ID = 'reactpress-antd-style-transition-fix';
7
+ /** Disable Ant Design CSS transitions during hydration to avoid style flash. */
8
+ function AntdStyleTransitionFix() {
9
+ (0, react_1.useEffect)(() => {
10
+ const el = document.querySelector(`#${STYLE_ELEMENT_ID}`);
11
+ el?.parentNode?.removeChild(el);
12
+ }, []);
13
+ return ((0, jsx_runtime_1.jsx)("style", { id: STYLE_ELEMENT_ID, dangerouslySetInnerHTML: {
14
+ __html: `[class^="ant-"], [class*=" ant-"] { transition: none !important; }`,
15
+ } }));
16
+ }