@fecommunity/reactpress-server 3.0.4 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/dist/app.module.js +9 -46
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/api-messages.d.ts +9 -0
  4. package/dist/common/api-messages.js +9 -0
  5. package/dist/common/api-messages.js.map +1 -1
  6. package/dist/database/typeorm-options.d.ts +3 -0
  7. package/dist/database/typeorm-options.js +60 -0
  8. package/dist/database/typeorm-options.js.map +1 -0
  9. package/dist/filters/http-exception.filter.js +1 -1
  10. package/dist/filters/http-exception.filter.js.map +1 -1
  11. package/dist/generate-swagger.js +11 -11
  12. package/dist/generate-swagger.js.map +1 -1
  13. package/dist/interceptors/transform.interceptor.d.ts +2 -6
  14. package/dist/interceptors/transform.interceptor.js +10 -5
  15. package/dist/interceptors/transform.interceptor.js.map +1 -1
  16. package/dist/logger/index.js +5 -4
  17. package/dist/logger/index.js.map +1 -1
  18. package/dist/main.js +44 -23
  19. package/dist/main.js.map +1 -1
  20. package/dist/modules/api-key/api-key.controller.js +9 -9
  21. package/dist/modules/api-key/api-key.controller.js.map +1 -1
  22. package/dist/modules/api-key/api-key.entity.js +16 -16
  23. package/dist/modules/api-key/api-key.entity.js.map +1 -1
  24. package/dist/modules/api-key/api-key.guard.js +3 -4
  25. package/dist/modules/api-key/api-key.guard.js.map +1 -1
  26. package/dist/modules/api-key/api-key.module.js +1 -1
  27. package/dist/modules/api-key/api-key.module.js.map +1 -1
  28. package/dist/modules/api-key/api-key.service.js +3 -3
  29. package/dist/modules/api-key/api-key.service.js.map +1 -1
  30. package/dist/modules/article/article-revision.entity.js +9 -9
  31. package/dist/modules/article/article-revision.entity.js.map +1 -1
  32. package/dist/modules/article/article-slug.util.d.ts +2 -0
  33. package/dist/modules/article/article-slug.util.js +19 -0
  34. package/dist/modules/article/article-slug.util.js.map +1 -0
  35. package/dist/modules/article/article.controller.d.ts +1 -1
  36. package/dist/modules/article/article.controller.js +71 -60
  37. package/dist/modules/article/article.controller.js.map +1 -1
  38. package/dist/modules/article/article.entity.d.ts +3 -0
  39. package/dist/modules/article/article.entity.js +58 -43
  40. package/dist/modules/article/article.entity.js.map +1 -1
  41. package/dist/modules/article/article.module.js +7 -4
  42. package/dist/modules/article/article.module.js.map +1 -1
  43. package/dist/modules/article/article.service.d.ts +9 -3
  44. package/dist/modules/article/article.service.js +98 -30
  45. package/dist/modules/article/article.service.js.map +1 -1
  46. package/dist/modules/article/scheduled-publish.service.js +3 -3
  47. package/dist/modules/article/scheduled-publish.service.js.map +1 -1
  48. package/dist/modules/auth/auth.controller.js +11 -11
  49. package/dist/modules/auth/auth.controller.js.map +1 -1
  50. package/dist/modules/auth/auth.module.js +4 -4
  51. package/dist/modules/auth/auth.module.js.map +1 -1
  52. package/dist/modules/auth/auth.service.js +5 -5
  53. package/dist/modules/auth/auth.service.js.map +1 -1
  54. package/dist/modules/auth/jwt-auth.guard.js +3 -3
  55. package/dist/modules/auth/jwt-auth.guard.js.map +1 -1
  56. package/dist/modules/auth/jwt.strategy.js +3 -3
  57. package/dist/modules/auth/jwt.strategy.js.map +1 -1
  58. package/dist/modules/auth/roles.guard.js +2 -2
  59. package/dist/modules/auth/roles.guard.js.map +1 -1
  60. package/dist/modules/bootstrap/bootstrap.constants.d.ts +20 -0
  61. package/dist/modules/bootstrap/bootstrap.constants.js +171 -0
  62. package/dist/modules/bootstrap/bootstrap.constants.js.map +1 -0
  63. package/dist/modules/bootstrap/bootstrap.service.d.ts +22 -0
  64. package/dist/modules/bootstrap/bootstrap.service.js +183 -0
  65. package/dist/modules/bootstrap/bootstrap.service.js.map +1 -0
  66. package/dist/modules/bootstrap/install-locale.d.ts +2 -0
  67. package/dist/modules/bootstrap/install-locale.js +11 -0
  68. package/dist/modules/bootstrap/install-locale.js.map +1 -0
  69. package/dist/modules/category/category.controller.js +21 -20
  70. package/dist/modules/category/category.controller.js.map +1 -1
  71. package/dist/modules/category/category.entity.js +13 -13
  72. package/dist/modules/category/category.entity.js.map +1 -1
  73. package/dist/modules/category/category.module.js +1 -1
  74. package/dist/modules/category/category.module.js.map +1 -1
  75. package/dist/modules/category/category.service.js +3 -3
  76. package/dist/modules/category/category.service.js.map +1 -1
  77. package/dist/modules/comment/comment.controller.js +24 -20
  78. package/dist/modules/comment/comment.controller.js.map +1 -1
  79. package/dist/modules/comment/comment.entity.js +31 -31
  80. package/dist/modules/comment/comment.entity.js.map +1 -1
  81. package/dist/modules/comment/comment.module.js +2 -2
  82. package/dist/modules/comment/comment.module.js.map +1 -1
  83. package/dist/modules/comment/comment.service.d.ts +3 -1
  84. package/dist/modules/comment/comment.service.js +31 -14
  85. package/dist/modules/comment/comment.service.js.map +1 -1
  86. package/dist/modules/comment/html.d.ts +1 -1
  87. package/dist/modules/comment/html.js +3 -3
  88. package/dist/modules/comment/html.js.map +1 -1
  89. package/dist/modules/extension/extension.module.d.ts +9 -0
  90. package/dist/modules/extension/extension.module.js +50 -0
  91. package/dist/modules/extension/extension.module.js.map +1 -0
  92. package/dist/modules/extension/plugin-loader.service.d.ts +12 -0
  93. package/dist/modules/extension/plugin-loader.service.js +96 -0
  94. package/dist/modules/extension/plugin-loader.service.js.map +1 -0
  95. package/dist/modules/extension/plugin-registry.bridge.d.ts +3 -0
  96. package/dist/modules/extension/plugin-registry.bridge.js +44 -0
  97. package/dist/modules/extension/plugin-registry.bridge.js.map +1 -0
  98. package/dist/modules/extension/plugin.controller.d.ts +22 -0
  99. package/dist/modules/extension/plugin.controller.js +155 -0
  100. package/dist/modules/extension/plugin.controller.js.map +1 -0
  101. package/dist/modules/extension/plugin.service.d.ts +52 -0
  102. package/dist/modules/extension/plugin.service.js +391 -0
  103. package/dist/modules/extension/plugin.service.js.map +1 -0
  104. package/dist/modules/extension/preview-draft.store.d.ts +13 -0
  105. package/dist/modules/extension/preview-draft.store.js +41 -0
  106. package/dist/modules/extension/preview-draft.store.js.map +1 -0
  107. package/dist/modules/extension/theme-registry.bridge.d.ts +56 -0
  108. package/dist/modules/extension/theme-registry.bridge.js +46 -0
  109. package/dist/modules/extension/theme-registry.bridge.js.map +1 -0
  110. package/dist/modules/extension/theme.controller.d.ts +66 -0
  111. package/dist/modules/extension/theme.controller.js +301 -0
  112. package/dist/modules/extension/theme.controller.js.map +1 -0
  113. package/dist/modules/extension/theme.service.d.ts +140 -0
  114. package/dist/modules/extension/theme.service.js +1039 -0
  115. package/dist/modules/extension/theme.service.js.map +1 -0
  116. package/dist/modules/file/file-optimization.controller.d.ts +12 -0
  117. package/dist/modules/file/file-optimization.controller.js +79 -0
  118. package/dist/modules/file/file-optimization.controller.js.map +1 -0
  119. package/dist/modules/file/file-optimization.service.d.ts +36 -0
  120. package/dist/modules/file/file-optimization.service.js +385 -0
  121. package/dist/modules/file/file-optimization.service.js.map +1 -0
  122. package/dist/modules/file/file-optimization.types.d.ts +66 -0
  123. package/dist/modules/file/file-optimization.types.js +5 -0
  124. package/dist/modules/file/file-optimization.types.js.map +1 -0
  125. package/dist/modules/file/file.controller.d.ts +1 -1
  126. package/dist/modules/file/file.controller.js +22 -20
  127. package/dist/modules/file/file.controller.js.map +1 -1
  128. package/dist/modules/file/file.entity.d.ts +7 -0
  129. package/dist/modules/file/file.entity.js +20 -15
  130. package/dist/modules/file/file.entity.js.map +1 -1
  131. package/dist/modules/file/file.module.js +16 -4
  132. package/dist/modules/file/file.module.js.map +1 -1
  133. package/dist/modules/file/file.service.d.ts +5 -1
  134. package/dist/modules/file/file.service.js +70 -24
  135. package/dist/modules/file/file.service.js.map +1 -1
  136. package/dist/modules/file/image-optimizer-plugin.guard.d.ts +7 -0
  137. package/dist/modules/file/image-optimizer-plugin.guard.js +33 -0
  138. package/dist/modules/file/image-optimizer-plugin.guard.js.map +1 -0
  139. package/dist/modules/health/health.controller.js +7 -9
  140. package/dist/modules/health/health.controller.js.map +1 -1
  141. package/dist/modules/health/health.module.js +1 -1
  142. package/dist/modules/health/health.module.js.map +1 -1
  143. package/dist/modules/hook/hook.module.d.ts +2 -0
  144. package/dist/modules/hook/hook.module.js +22 -0
  145. package/dist/modules/hook/hook.module.js.map +1 -0
  146. package/dist/modules/hook/hook.service.d.ts +26 -0
  147. package/dist/modules/hook/hook.service.js +105 -0
  148. package/dist/modules/hook/hook.service.js.map +1 -0
  149. package/dist/modules/install/install.controller.js +5 -5
  150. package/dist/modules/install/install.controller.js.map +1 -1
  151. package/dist/modules/install/install.module.js +1 -1
  152. package/dist/modules/install/install.module.js.map +1 -1
  153. package/dist/modules/install/install.service.js +2 -2
  154. package/dist/modules/install/install.service.js.map +1 -1
  155. package/dist/modules/knowledge/knowledge.controller.js +35 -33
  156. package/dist/modules/knowledge/knowledge.controller.js.map +1 -1
  157. package/dist/modules/knowledge/knowledge.entity.js +33 -33
  158. package/dist/modules/knowledge/knowledge.entity.js.map +1 -1
  159. package/dist/modules/knowledge/knowledge.module.js +1 -1
  160. package/dist/modules/knowledge/knowledge.module.js.map +1 -1
  161. package/dist/modules/knowledge/knowledge.service.js +10 -10
  162. package/dist/modules/knowledge/knowledge.service.js.map +1 -1
  163. package/dist/modules/page/page.controller.js +24 -23
  164. package/dist/modules/page/page.controller.js.map +1 -1
  165. package/dist/modules/page/page.entity.js +27 -27
  166. package/dist/modules/page/page.entity.js.map +1 -1
  167. package/dist/modules/page/page.module.js +1 -1
  168. package/dist/modules/page/page.module.js.map +1 -1
  169. package/dist/modules/page/page.service.js +11 -12
  170. package/dist/modules/page/page.service.js.map +1 -1
  171. package/dist/modules/search/search.controller.js +12 -12
  172. package/dist/modules/search/search.controller.js.map +1 -1
  173. package/dist/modules/search/search.entity.js +13 -13
  174. package/dist/modules/search/search.entity.js.map +1 -1
  175. package/dist/modules/search/search.module.js +1 -1
  176. package/dist/modules/search/search.module.js.map +1 -1
  177. package/dist/modules/search/search.service.js +2 -2
  178. package/dist/modules/search/search.service.js.map +1 -1
  179. package/dist/modules/setting/setting.constant.d.ts +4 -2
  180. package/dist/modules/setting/setting.constant.js +3 -19
  181. package/dist/modules/setting/setting.constant.js.map +1 -1
  182. package/dist/modules/setting/setting.controller.js +11 -11
  183. package/dist/modules/setting/setting.controller.js.map +1 -1
  184. package/dist/modules/setting/setting.entity.d.ts +3 -0
  185. package/dist/modules/setting/setting.entity.js +64 -49
  186. package/dist/modules/setting/setting.entity.js.map +1 -1
  187. package/dist/modules/setting/setting.module.js +2 -2
  188. package/dist/modules/setting/setting.module.js.map +1 -1
  189. package/dist/modules/setting/setting.service.d.ts +13 -2
  190. package/dist/modules/setting/setting.service.js +169 -24
  191. package/dist/modules/setting/setting.service.js.map +1 -1
  192. package/dist/modules/smtp/mail.util.d.ts +7 -6
  193. package/dist/modules/smtp/mail.util.js +5 -9
  194. package/dist/modules/smtp/mail.util.js.map +1 -1
  195. package/dist/modules/smtp/smtp.controller.d.ts +3 -0
  196. package/dist/modules/smtp/smtp.controller.js +27 -14
  197. package/dist/modules/smtp/smtp.controller.js.map +1 -1
  198. package/dist/modules/smtp/smtp.entity.js +15 -15
  199. package/dist/modules/smtp/smtp.entity.js.map +1 -1
  200. package/dist/modules/smtp/smtp.module.js +2 -2
  201. package/dist/modules/smtp/smtp.module.js.map +1 -1
  202. package/dist/modules/smtp/smtp.service.d.ts +14 -0
  203. package/dist/modules/smtp/smtp.service.js +39 -12
  204. package/dist/modules/smtp/smtp.service.js.map +1 -1
  205. package/dist/modules/tag/tag.controller.js +24 -22
  206. package/dist/modules/tag/tag.controller.js.map +1 -1
  207. package/dist/modules/tag/tag.entity.js +12 -12
  208. package/dist/modules/tag/tag.entity.js.map +1 -1
  209. package/dist/modules/tag/tag.module.js +1 -1
  210. package/dist/modules/tag/tag.module.js.map +1 -1
  211. package/dist/modules/tag/tag.service.js +3 -3
  212. package/dist/modules/tag/tag.service.js.map +1 -1
  213. package/dist/modules/user/user.controller.js +36 -26
  214. package/dist/modules/user/user.controller.js.map +1 -1
  215. package/dist/modules/user/user.entity.js +22 -22
  216. package/dist/modules/user/user.entity.js.map +1 -1
  217. package/dist/modules/user/user.module.js +2 -2
  218. package/dist/modules/user/user.module.js.map +1 -1
  219. package/dist/modules/user/user.service.js +7 -4
  220. package/dist/modules/user/user.service.js.map +1 -1
  221. package/dist/modules/view/view.controller.js +20 -19
  222. package/dist/modules/view/view.controller.js.map +1 -1
  223. package/dist/modules/view/view.entity.js +24 -24
  224. package/dist/modules/view/view.entity.js.map +1 -1
  225. package/dist/modules/view/view.module.js +1 -1
  226. package/dist/modules/view/view.module.js.map +1 -1
  227. package/dist/modules/view/view.service.js +4 -4
  228. package/dist/modules/view/view.service.js.map +1 -1
  229. package/dist/modules/webhook/webhook.controller.js +9 -9
  230. package/dist/modules/webhook/webhook.controller.js.map +1 -1
  231. package/dist/modules/webhook/webhook.entity.js +13 -13
  232. package/dist/modules/webhook/webhook.entity.js.map +1 -1
  233. package/dist/modules/webhook/webhook.module.js +1 -1
  234. package/dist/modules/webhook/webhook.module.js.map +1 -1
  235. package/dist/modules/webhook/webhook.service.d.ts +1 -1
  236. package/dist/modules/webhook/webhook.service.js +7 -4
  237. package/dist/modules/webhook/webhook.service.js.map +1 -1
  238. package/dist/public/apple-touch-icon.png +0 -0
  239. package/dist/public/favicon-16.png +0 -0
  240. package/dist/public/favicon-32.png +0 -0
  241. package/dist/public/favicon-48.png +0 -0
  242. package/dist/public/favicon.ico +0 -0
  243. package/dist/public/favicon.png +0 -0
  244. package/dist/public/icon-192.png +0 -0
  245. package/dist/public/icon-512.png +0 -0
  246. package/dist/public/logo-200.png +0 -0
  247. package/dist/public/logo-400.png +0 -0
  248. package/dist/public/logo.png +0 -0
  249. package/dist/public/logo.svg +7 -0
  250. package/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  251. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  252. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  253. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  254. package/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
  255. package/dist/starter.d.ts +2 -1
  256. package/dist/starter.js +200 -13
  257. package/dist/starter.js.map +1 -1
  258. package/dist/tsconfig.build.tsbuildinfo +1 -16966
  259. package/dist/tsconfig.tsbuildinfo +1 -0
  260. package/dist/utils/date.util.js +1 -1
  261. package/dist/utils/date.util.js.map +1 -1
  262. package/dist/utils/html-sanitize.util.d.ts +1 -0
  263. package/dist/utils/html-sanitize.util.js +33 -0
  264. package/dist/utils/html-sanitize.util.js.map +1 -0
  265. package/dist/utils/image-processor.util.d.ts +23 -0
  266. package/dist/utils/image-processor.util.js +88 -0
  267. package/dist/utils/image-processor.util.js.map +1 -0
  268. package/dist/utils/local-api-quiet.util.d.ts +1 -0
  269. package/dist/utils/local-api-quiet.util.js +8 -0
  270. package/dist/utils/local-api-quiet.util.js.map +1 -0
  271. package/dist/utils/markdown.util.js +1 -1
  272. package/dist/utils/markdown.util.js.map +1 -1
  273. package/dist/utils/oss/aliyun-oss-client.d.ts +3 -1
  274. package/dist/utils/oss/aliyun-oss-client.js +5 -0
  275. package/dist/utils/oss/aliyun-oss-client.js.map +1 -1
  276. package/dist/utils/oss/oss-client.d.ts +3 -1
  277. package/dist/utils/oss/oss-client.js.map +1 -1
  278. package/dist/utils/oss.util.d.ts +3 -1
  279. package/dist/utils/oss.util.js +5 -1
  280. package/dist/utils/oss.util.js.map +1 -1
  281. package/dist/utils/project-root.util.d.ts +2 -0
  282. package/dist/utils/project-root.util.js +42 -0
  283. package/dist/utils/project-root.util.js.map +1 -0
  284. package/dist/utils/query-whitelist.util.d.ts +1 -0
  285. package/dist/utils/query-whitelist.util.js +100 -0
  286. package/dist/utils/query-whitelist.util.js.map +1 -0
  287. package/dist/utils/uniqueid.util.js +1 -1
  288. package/dist/utils/uniqueid.util.js.map +1 -1
  289. package/dist/utils/upload.util.d.ts +6 -2
  290. package/dist/utils/upload.util.js +23 -8
  291. package/dist/utils/upload.util.js.map +1 -1
  292. package/dist/utils/user.util.d.ts +1 -0
  293. package/dist/utils/user.util.js +6 -2
  294. package/dist/utils/user.util.js.map +1 -1
  295. package/package.json +8 -9
  296. package/public/apple-touch-icon.png +0 -0
  297. package/public/favicon-16.png +0 -0
  298. package/public/favicon-32.png +0 -0
  299. package/public/favicon-48.png +0 -0
  300. package/public/favicon.ico +0 -0
  301. package/public/favicon.png +0 -0
  302. package/public/icon-192.png +0 -0
  303. package/public/icon-512.png +0 -0
  304. package/public/logo-200.png +0 -0
  305. package/public/logo-400.png +0 -0
  306. package/public/logo.png +0 -0
  307. package/public/logo.svg +7 -0
  308. package/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  309. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  310. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  311. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  312. package/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
@@ -0,0 +1,140 @@
1
+ import type { SiteThemeState, ThemeAdminLocaleMessages, ThemeConfigurationSchema, ThemeManifest, ThemeMods } from '@fecommunity/reactpress-toolkit/theme';
2
+ import { Repository } from 'typeorm';
3
+ import { SettingService } from '../setting/setting.service';
4
+ import { Setting } from '../setting/setting.entity';
5
+ import { type ThemeRegistryCatalogEntry } from './theme-registry.bridge';
6
+ export interface ThemeNpmLockMeta {
7
+ spec: string;
8
+ resolvedVersion?: string;
9
+ packageName?: string;
10
+ installedAt?: string;
11
+ }
12
+ export interface ThemeCatalogEntry extends ThemeRegistryCatalogEntry {
13
+ }
14
+ export interface ThemeListItem extends ThemeManifest {
15
+ source: 'local' | 'npm' | 'installed';
16
+ installed: boolean;
17
+ active: boolean;
18
+ official?: boolean;
19
+ coverUrl?: string;
20
+ npm?: ThemeNpmLockMeta;
21
+ catalog?: Pick<ThemeCatalogEntry, 'dependency' | 'npm' | 'featured' | 'themeUri' | 'previewUrl'>;
22
+ }
23
+ export type ThemePreviewSessionResult = SiteThemeState & {
24
+ siteUrl: string;
25
+ previewSiteUrl?: string;
26
+ };
27
+ export declare class ThemeService {
28
+ private readonly settingRepository;
29
+ private readonly settingService;
30
+ private static readonly COPY_SKIP_NAMES;
31
+ constructor(settingRepository: Repository<Setting>, settingService: SettingService);
32
+ private themesRoot;
33
+ private templatesDir;
34
+ private runtimeDir;
35
+ private ensureSiteRuntimeLink;
36
+ private legacyStarterDirs;
37
+ private legacyBundledDir;
38
+ private applyTemplateAppearanceSchema;
39
+ private readManifest;
40
+ private readNpmThemeLock;
41
+ private readThemeCatalogFile;
42
+ getThemeCatalog(): ThemeCatalogEntry[];
43
+ private findCatalogEntry;
44
+ private getThemeManifestFromSources;
45
+ private ensureThemeMaterialized;
46
+ private listDirThemes;
47
+ private getSettingRow;
48
+ private parseGlobalSetting;
49
+ getThemeState(): Promise<SiteThemeState>;
50
+ private saveThemeState;
51
+ private listLocalThemes;
52
+ private listBundledThemes;
53
+ private isRegistryLocalTheme;
54
+ private hasOfficialTag;
55
+ private resolveThemeOfficial;
56
+ private catalogMetaFromEntry;
57
+ listThemes(): Promise<ThemeListItem[]>;
58
+ getTheme(id: string): Promise<ThemeListItem>;
59
+ getThemeAdminLocale(themeId: string, locale: string): Promise<{
60
+ themeId: string;
61
+ locale: string;
62
+ messages: ThemeAdminLocaleMessages;
63
+ }>;
64
+ private themeLocaleSearchDirs;
65
+ private getThemeManifestForConfig;
66
+ getThemeConfigurationSchema(themeId: string): Promise<{
67
+ themeId: string;
68
+ schema: ThemeConfigurationSchema | null;
69
+ }>;
70
+ getThemeConfiguration(themeId: string): Promise<{
71
+ themeId: string;
72
+ configuration: Record<string, unknown>;
73
+ }>;
74
+ updateThemeConfiguration(themeId: string, patch: Record<string, unknown>, options?: {
75
+ replace?: boolean;
76
+ locale?: string;
77
+ }): Promise<{
78
+ themeId: string;
79
+ configuration: Record<string, unknown>;
80
+ }>;
81
+ private isValidThemeId;
82
+ private isUnderDir;
83
+ private isSafeThemeDirRel;
84
+ private resolveThemeDir;
85
+ installTheme(id: string): Promise<SiteThemeState>;
86
+ installThemeFromNpm(spec: string, options?: {
87
+ skipDependencies?: boolean;
88
+ }): Promise<SiteThemeState & {
89
+ themeId: string;
90
+ npmSpec: string;
91
+ }>;
92
+ private writeThemeDevManifest;
93
+ private syncActiveThemeManifest;
94
+ private ensureRuntimeThemeTsconfigBase;
95
+ private scheduleProductionClientRestart;
96
+ private syncPreviewThemeManifest;
97
+ private clearPreviewThemeManifest;
98
+ private readLocalDevActiveThemeId;
99
+ private readPreviewPoolManifest;
100
+ private writePreviewPoolEntry;
101
+ private reservePreviewPortForTheme;
102
+ private resolvePreviewSiteUrl;
103
+ activateTheme(id: string): Promise<SiteThemeState & {
104
+ siteUrl?: string;
105
+ }>;
106
+ getActiveThemePublic(): Promise<{
107
+ activeTheme: string;
108
+ themeDir: string | null;
109
+ siteUrl: string;
110
+ }>;
111
+ updateThemeMods(themeId: string, mods: ThemeMods): Promise<SiteThemeState>;
112
+ beginPreviewSession(themeId: string): Promise<ThemePreviewSessionResult>;
113
+ endPreviewSession(): Promise<SiteThemeState & {
114
+ siteUrl: string;
115
+ }>;
116
+ getCoverPath(id: string): string | null;
117
+ private themeAppearanceDefaults;
118
+ buildPlaceholderCoverSvg(id: string): string;
119
+ private resolveSiteUrlFromRow;
120
+ buildPreviewHtml(themeId: string, mods?: ThemeMods): string;
121
+ getPreviewMods(themeId: string, overrideMods?: ThemeMods): Promise<ThemeMods>;
122
+ createPreviewDraft(payload: {
123
+ themeId?: string;
124
+ mods?: ThemeMods;
125
+ configuration?: Record<string, unknown>;
126
+ }): {
127
+ token: string;
128
+ };
129
+ resolvePreviewDraft(token: string): {
130
+ themeId?: string;
131
+ mods?: ThemeMods;
132
+ configuration?: Record<string, unknown>;
133
+ } | null;
134
+ private resolveFallbackActiveTheme;
135
+ ensureDefaultTheme(): Promise<void>;
136
+ private materializeRuntimeTheme;
137
+ private copyDir;
138
+ private linkTemplateNodeModules;
139
+ private removeDir;
140
+ }