@fecommunity/reactpress-server 3.7.0 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/app.module.js +8 -45
  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.map +1 -1
  10. package/dist/generate-swagger.d.ts +1 -1
  11. package/dist/generate-swagger.js +2 -1
  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 +8 -3
  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.d.ts +1 -1
  19. package/dist/main.js +41 -19
  20. package/dist/main.js.map +1 -1
  21. package/dist/modules/api-key/api-key.controller.js.map +1 -1
  22. package/dist/modules/api-key/api-key.entity.js.map +1 -1
  23. package/dist/modules/api-key/api-key.guard.js +2 -3
  24. package/dist/modules/api-key/api-key.guard.js.map +1 -1
  25. package/dist/modules/api-key/api-key.module.js.map +1 -1
  26. package/dist/modules/api-key/api-key.service.js +1 -1
  27. package/dist/modules/api-key/api-key.service.js.map +1 -1
  28. package/dist/modules/article/article-revision.entity.js +3 -3
  29. package/dist/modules/article/article-revision.entity.js.map +1 -1
  30. package/dist/modules/article/article-slug.util.d.ts +2 -0
  31. package/dist/modules/article/article-slug.util.js +19 -0
  32. package/dist/modules/article/article-slug.util.js.map +1 -0
  33. package/dist/modules/article/article.controller.d.ts +1 -1
  34. package/dist/modules/article/article.controller.js +6 -4
  35. package/dist/modules/article/article.controller.js.map +1 -1
  36. package/dist/modules/article/article.entity.d.ts +3 -0
  37. package/dist/modules/article/article.entity.js +23 -8
  38. package/dist/modules/article/article.entity.js.map +1 -1
  39. package/dist/modules/article/article.module.js +6 -3
  40. package/dist/modules/article/article.module.js.map +1 -1
  41. package/dist/modules/article/article.service.d.ts +9 -3
  42. package/dist/modules/article/article.service.js +84 -16
  43. package/dist/modules/article/article.service.js.map +1 -1
  44. package/dist/modules/article/scheduled-publish.service.js.map +1 -1
  45. package/dist/modules/auth/auth.controller.js.map +1 -1
  46. package/dist/modules/auth/auth.module.js.map +1 -1
  47. package/dist/modules/auth/auth.service.js +1 -1
  48. package/dist/modules/auth/auth.service.js.map +1 -1
  49. package/dist/modules/auth/jwt-auth.guard.js +1 -1
  50. package/dist/modules/auth/jwt-auth.guard.js.map +1 -1
  51. package/dist/modules/auth/jwt.strategy.js +1 -1
  52. package/dist/modules/auth/jwt.strategy.js.map +1 -1
  53. package/dist/modules/auth/roles.guard.js.map +1 -1
  54. package/dist/modules/bootstrap/bootstrap.constants.d.ts +20 -0
  55. package/dist/modules/bootstrap/bootstrap.constants.js +171 -0
  56. package/dist/modules/bootstrap/bootstrap.constants.js.map +1 -0
  57. package/dist/modules/bootstrap/bootstrap.service.d.ts +22 -0
  58. package/dist/modules/bootstrap/bootstrap.service.js +183 -0
  59. package/dist/modules/bootstrap/bootstrap.service.js.map +1 -0
  60. package/dist/modules/bootstrap/install-locale.d.ts +2 -0
  61. package/dist/modules/bootstrap/install-locale.js +11 -0
  62. package/dist/modules/bootstrap/install-locale.js.map +1 -0
  63. package/dist/modules/category/category.controller.js.map +1 -1
  64. package/dist/modules/category/category.entity.js +1 -1
  65. package/dist/modules/category/category.entity.js.map +1 -1
  66. package/dist/modules/category/category.module.js.map +1 -1
  67. package/dist/modules/category/category.service.js +1 -1
  68. package/dist/modules/category/category.service.js.map +1 -1
  69. package/dist/modules/comment/comment.controller.js.map +1 -1
  70. package/dist/modules/comment/comment.entity.js +3 -3
  71. package/dist/modules/comment/comment.entity.js.map +1 -1
  72. package/dist/modules/comment/comment.module.js +1 -1
  73. package/dist/modules/comment/comment.module.js.map +1 -1
  74. package/dist/modules/comment/comment.service.d.ts +3 -1
  75. package/dist/modules/comment/comment.service.js +20 -4
  76. package/dist/modules/comment/comment.service.js.map +1 -1
  77. package/dist/modules/comment/html.d.ts +1 -1
  78. package/dist/modules/comment/html.js +1 -1
  79. package/dist/modules/comment/html.js.map +1 -1
  80. package/dist/modules/extension/extension.module.d.ts +9 -0
  81. package/dist/modules/extension/extension.module.js +50 -0
  82. package/dist/modules/extension/extension.module.js.map +1 -0
  83. package/dist/modules/extension/plugin-loader.service.d.ts +12 -0
  84. package/dist/modules/extension/plugin-loader.service.js +96 -0
  85. package/dist/modules/extension/plugin-loader.service.js.map +1 -0
  86. package/dist/modules/extension/plugin-registry.bridge.d.ts +3 -0
  87. package/dist/modules/extension/plugin-registry.bridge.js +44 -0
  88. package/dist/modules/extension/plugin-registry.bridge.js.map +1 -0
  89. package/dist/modules/extension/plugin.controller.d.ts +22 -0
  90. package/dist/modules/extension/plugin.controller.js +155 -0
  91. package/dist/modules/extension/plugin.controller.js.map +1 -0
  92. package/dist/modules/extension/plugin.service.d.ts +52 -0
  93. package/dist/modules/extension/plugin.service.js +391 -0
  94. package/dist/modules/extension/plugin.service.js.map +1 -0
  95. package/dist/modules/extension/preview-draft.store.d.ts +13 -0
  96. package/dist/modules/extension/preview-draft.store.js +41 -0
  97. package/dist/modules/extension/preview-draft.store.js.map +1 -0
  98. package/dist/modules/extension/theme-registry.bridge.d.ts +56 -0
  99. package/dist/modules/extension/theme-registry.bridge.js +46 -0
  100. package/dist/modules/extension/theme-registry.bridge.js.map +1 -0
  101. package/dist/modules/extension/theme.controller.d.ts +66 -0
  102. package/dist/modules/extension/theme.controller.js +301 -0
  103. package/dist/modules/extension/theme.controller.js.map +1 -0
  104. package/dist/modules/extension/theme.service.d.ts +140 -0
  105. package/dist/modules/extension/theme.service.js +1039 -0
  106. package/dist/modules/extension/theme.service.js.map +1 -0
  107. package/dist/modules/file/file-optimization.controller.d.ts +12 -0
  108. package/dist/modules/file/file-optimization.controller.js +79 -0
  109. package/dist/modules/file/file-optimization.controller.js.map +1 -0
  110. package/dist/modules/file/file-optimization.service.d.ts +36 -0
  111. package/dist/modules/file/file-optimization.service.js +385 -0
  112. package/dist/modules/file/file-optimization.service.js.map +1 -0
  113. package/dist/modules/file/file-optimization.types.d.ts +66 -0
  114. package/dist/modules/file/file-optimization.types.js +5 -0
  115. package/dist/modules/file/file-optimization.types.js.map +1 -0
  116. package/dist/modules/file/file.controller.d.ts +1 -1
  117. package/dist/modules/file/file.controller.js +5 -4
  118. package/dist/modules/file/file.controller.js.map +1 -1
  119. package/dist/modules/file/file.entity.d.ts +7 -0
  120. package/dist/modules/file/file.entity.js +5 -0
  121. package/dist/modules/file/file.entity.js.map +1 -1
  122. package/dist/modules/file/file.module.js +15 -3
  123. package/dist/modules/file/file.module.js.map +1 -1
  124. package/dist/modules/file/file.service.d.ts +5 -1
  125. package/dist/modules/file/file.service.js +62 -17
  126. package/dist/modules/file/file.service.js.map +1 -1
  127. package/dist/modules/file/image-optimizer-plugin.guard.d.ts +7 -0
  128. package/dist/modules/file/image-optimizer-plugin.guard.js +33 -0
  129. package/dist/modules/file/image-optimizer-plugin.guard.js.map +1 -0
  130. package/dist/modules/health/health.controller.js +2 -4
  131. package/dist/modules/health/health.controller.js.map +1 -1
  132. package/dist/modules/health/health.module.js.map +1 -1
  133. package/dist/modules/hook/hook.module.d.ts +2 -0
  134. package/dist/modules/hook/hook.module.js +22 -0
  135. package/dist/modules/hook/hook.module.js.map +1 -0
  136. package/dist/modules/hook/hook.service.d.ts +26 -0
  137. package/dist/modules/hook/hook.service.js +105 -0
  138. package/dist/modules/hook/hook.service.js.map +1 -0
  139. package/dist/modules/knowledge/knowledge.controller.js.map +1 -1
  140. package/dist/modules/knowledge/knowledge.entity.js +5 -5
  141. package/dist/modules/knowledge/knowledge.entity.js.map +1 -1
  142. package/dist/modules/knowledge/knowledge.module.js.map +1 -1
  143. package/dist/modules/knowledge/knowledge.service.js +1 -1
  144. package/dist/modules/knowledge/knowledge.service.js.map +1 -1
  145. package/dist/modules/page/page.controller.js.map +1 -1
  146. package/dist/modules/page/page.entity.js +5 -5
  147. package/dist/modules/page/page.entity.js.map +1 -1
  148. package/dist/modules/page/page.module.js.map +1 -1
  149. package/dist/modules/page/page.service.js +3 -4
  150. package/dist/modules/page/page.service.js.map +1 -1
  151. package/dist/modules/search/search.controller.js.map +1 -1
  152. package/dist/modules/search/search.entity.js.map +1 -1
  153. package/dist/modules/search/search.module.js.map +1 -1
  154. package/dist/modules/search/search.service.js.map +1 -1
  155. package/dist/modules/setting/setting.constant.d.ts +4 -2
  156. package/dist/modules/setting/setting.constant.js +3 -19
  157. package/dist/modules/setting/setting.constant.js.map +1 -1
  158. package/dist/modules/setting/setting.controller.js.map +1 -1
  159. package/dist/modules/setting/setting.entity.d.ts +3 -0
  160. package/dist/modules/setting/setting.entity.js +15 -0
  161. package/dist/modules/setting/setting.entity.js.map +1 -1
  162. package/dist/modules/setting/setting.module.js.map +1 -1
  163. package/dist/modules/setting/setting.service.d.ts +13 -2
  164. package/dist/modules/setting/setting.service.js +167 -22
  165. package/dist/modules/setting/setting.service.js.map +1 -1
  166. package/dist/modules/smtp/mail.util.d.ts +7 -6
  167. package/dist/modules/smtp/mail.util.js +5 -9
  168. package/dist/modules/smtp/mail.util.js.map +1 -1
  169. package/dist/modules/smtp/smtp.controller.d.ts +3 -0
  170. package/dist/modules/smtp/smtp.controller.js +13 -0
  171. package/dist/modules/smtp/smtp.controller.js.map +1 -1
  172. package/dist/modules/smtp/smtp.entity.js.map +1 -1
  173. package/dist/modules/smtp/smtp.module.js.map +1 -1
  174. package/dist/modules/smtp/smtp.service.d.ts +14 -0
  175. package/dist/modules/smtp/smtp.service.js +37 -10
  176. package/dist/modules/smtp/smtp.service.js.map +1 -1
  177. package/dist/modules/tag/tag.controller.js.map +1 -1
  178. package/dist/modules/tag/tag.entity.js +1 -1
  179. package/dist/modules/tag/tag.entity.js.map +1 -1
  180. package/dist/modules/tag/tag.module.js.map +1 -1
  181. package/dist/modules/tag/tag.service.js +1 -1
  182. package/dist/modules/tag/tag.service.js.map +1 -1
  183. package/dist/modules/user/user.controller.js +9 -1
  184. package/dist/modules/user/user.controller.js.map +1 -1
  185. package/dist/modules/user/user.entity.js +2 -2
  186. package/dist/modules/user/user.entity.js.map +1 -1
  187. package/dist/modules/user/user.module.js.map +1 -1
  188. package/dist/modules/user/user.service.js +4 -1
  189. package/dist/modules/user/user.service.js.map +1 -1
  190. package/dist/modules/view/view.controller.js.map +1 -1
  191. package/dist/modules/view/view.entity.js.map +1 -1
  192. package/dist/modules/view/view.module.js.map +1 -1
  193. package/dist/modules/view/view.service.js.map +1 -1
  194. package/dist/modules/webhook/webhook.controller.js.map +1 -1
  195. package/dist/modules/webhook/webhook.entity.js.map +1 -1
  196. package/dist/modules/webhook/webhook.module.js.map +1 -1
  197. package/dist/modules/webhook/webhook.service.d.ts +1 -1
  198. package/dist/modules/webhook/webhook.service.js +5 -2
  199. package/dist/modules/webhook/webhook.service.js.map +1 -1
  200. package/dist/node-polyfills.d.ts +18 -0
  201. package/dist/node-polyfills.js +24 -0
  202. package/dist/node-polyfills.js.map +1 -0
  203. package/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  204. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  205. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  206. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  207. package/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
  208. package/dist/starter.d.ts +3 -1
  209. package/dist/starter.js +185 -11
  210. package/dist/starter.js.map +1 -1
  211. package/dist/tsconfig.build.tsbuildinfo +1 -1
  212. package/dist/tsconfig.tsbuildinfo +1 -0
  213. package/dist/utils/image-processor.util.d.ts +23 -0
  214. package/dist/utils/image-processor.util.js +88 -0
  215. package/dist/utils/image-processor.util.js.map +1 -0
  216. package/dist/utils/local-api-quiet.util.d.ts +1 -0
  217. package/dist/utils/local-api-quiet.util.js +8 -0
  218. package/dist/utils/local-api-quiet.util.js.map +1 -0
  219. package/dist/utils/markdown.util.js +1 -1
  220. package/dist/utils/markdown.util.js.map +1 -1
  221. package/dist/utils/oss/aliyun-oss-client.d.ts +3 -1
  222. package/dist/utils/oss/aliyun-oss-client.js +5 -0
  223. package/dist/utils/oss/aliyun-oss-client.js.map +1 -1
  224. package/dist/utils/oss/oss-client.d.ts +3 -1
  225. package/dist/utils/oss/oss-client.js.map +1 -1
  226. package/dist/utils/oss.util.d.ts +3 -1
  227. package/dist/utils/oss.util.js +5 -1
  228. package/dist/utils/oss.util.js.map +1 -1
  229. package/dist/utils/project-root.util.d.ts +2 -0
  230. package/dist/utils/project-root.util.js +42 -0
  231. package/dist/utils/project-root.util.js.map +1 -0
  232. package/dist/utils/upload.util.d.ts +6 -2
  233. package/dist/utils/upload.util.js +23 -8
  234. package/dist/utils/upload.util.js.map +1 -1
  235. package/dist/utils/user.util.d.ts +1 -0
  236. package/dist/utils/user.util.js +6 -2
  237. package/dist/utils/user.util.js.map +1 -1
  238. package/package.json +9 -10
  239. package/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  240. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  241. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  242. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  243. package/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" />
2
+ export type ImageVariant = 'large' | 'medium' | 'thumb' | 'avatar';
3
+ export type ImageScene = 'default' | 'content' | 'cover' | 'avatar';
4
+ export interface ProcessedImageVariant {
5
+ buffer: Buffer;
6
+ width: number;
7
+ height: number;
8
+ size: number;
9
+ }
10
+ export interface ImageVariantMeta {
11
+ url: string;
12
+ filename: string;
13
+ width: number;
14
+ height: number;
15
+ size: number;
16
+ }
17
+ export declare function isProcessableImage(mimetype: string): boolean;
18
+ export declare function variantsForScene(scene: ImageScene): ImageVariant[];
19
+ export declare function primaryVariantForScene(scene: ImageScene): ImageVariant;
20
+ export declare function buildVariantFilename(baseFilename: string, variant: ImageVariant): string;
21
+ export declare function listVariantFilenames(baseFilename: string): string[];
22
+ export declare function processImageBuffer(buffer: Buffer, variant: ImageVariant): Promise<ProcessedImageVariant>;
23
+ export declare function processImageVariants(buffer: Buffer, variants: ImageVariant[]): Promise<Map<ImageVariant, ProcessedImageVariant>>;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processImageVariants = exports.processImageBuffer = exports.listVariantFilenames = exports.buildVariantFilename = exports.primaryVariantForScene = exports.variantsForScene = exports.isProcessableImage = void 0;
4
+ const path = require("path");
5
+ const sharp = require("sharp");
6
+ const PROCESSABLE_MIMETYPES = new Set(['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif']);
7
+ const IMAGE_VARIANT_CONFIG = {
8
+ large: { maxWidth: 1920, quality: 82, fit: 'inside' },
9
+ medium: { maxWidth: 1200, quality: 80, fit: 'inside' },
10
+ thumb: { maxWidth: 400, quality: 75, fit: 'inside' },
11
+ avatar: { maxWidth: 256, maxHeight: 256, quality: 80, fit: 'cover' },
12
+ };
13
+ function isProcessableImage(mimetype) {
14
+ return PROCESSABLE_MIMETYPES.has(String(mimetype || '').toLowerCase());
15
+ }
16
+ exports.isProcessableImage = isProcessableImage;
17
+ function variantsForScene(scene) {
18
+ switch (scene) {
19
+ case 'avatar':
20
+ return ['avatar'];
21
+ case 'content':
22
+ return ['large', 'medium', 'thumb'];
23
+ case 'cover':
24
+ return ['large', 'medium', 'thumb'];
25
+ default:
26
+ return ['large', 'medium', 'thumb'];
27
+ }
28
+ }
29
+ exports.variantsForScene = variantsForScene;
30
+ function primaryVariantForScene(scene) {
31
+ switch (scene) {
32
+ case 'avatar':
33
+ return 'avatar';
34
+ case 'content':
35
+ return 'medium';
36
+ case 'cover':
37
+ return 'large';
38
+ default:
39
+ return 'large';
40
+ }
41
+ }
42
+ exports.primaryVariantForScene = primaryVariantForScene;
43
+ function buildVariantFilename(baseFilename, variant) {
44
+ const parsed = path.parse(baseFilename);
45
+ const baseName = parsed.name.replace(/_(medium|thumb|avatar)$/i, '');
46
+ if (variant === 'large') {
47
+ return path.join(parsed.dir, `${baseName}.webp`);
48
+ }
49
+ return path.join(parsed.dir, `${baseName}_${variant}.webp`);
50
+ }
51
+ exports.buildVariantFilename = buildVariantFilename;
52
+ function listVariantFilenames(baseFilename) {
53
+ return ['large', 'medium', 'thumb', 'avatar'].map((variant) => buildVariantFilename(baseFilename, variant));
54
+ }
55
+ exports.listVariantFilenames = listVariantFilenames;
56
+ async function processImageBuffer(buffer, variant) {
57
+ const config = IMAGE_VARIANT_CONFIG[variant];
58
+ let pipeline = sharp(buffer, { animated: false }).rotate();
59
+ if (config.fit === 'cover' && config.maxHeight) {
60
+ pipeline = pipeline.resize(config.maxWidth, config.maxHeight, {
61
+ fit: 'cover',
62
+ position: 'centre',
63
+ });
64
+ }
65
+ else {
66
+ pipeline = pipeline.resize(config.maxWidth, undefined, {
67
+ fit: 'inside',
68
+ withoutEnlargement: true,
69
+ });
70
+ }
71
+ const output = await pipeline.webp({ quality: config.quality, effort: 4 }).toBuffer({ resolveWithObject: true });
72
+ return {
73
+ buffer: output.data,
74
+ width: output.info.width,
75
+ height: output.info.height,
76
+ size: output.info.size,
77
+ };
78
+ }
79
+ exports.processImageBuffer = processImageBuffer;
80
+ async function processImageVariants(buffer, variants) {
81
+ const results = new Map();
82
+ for (const variant of variants) {
83
+ results.set(variant, await processImageBuffer(buffer, variant));
84
+ }
85
+ return results;
86
+ }
87
+ exports.processImageVariants = processImageVariants;
88
+ //# sourceMappingURL=image-processor.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-processor.util.js","sourceRoot":"","sources":["../../src/utils/image-processor.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function isLocalApiQuiet(): boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLocalApiQuiet = void 0;
4
+ function isLocalApiQuiet() {
5
+ return process.env.REACTPRESS_LOCAL_API_QUIET === '1';
6
+ }
7
+ exports.isLocalApiQuiet = isLocalApiQuiet;
8
+ //# sourceMappingURL=local-api-quiet.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api-quiet.util.js","sourceRoot":"","sources":["../../src/utils/local-api-quiet.util.ts"],"names":[],"mappings":";;;AACA,SAAgB,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC;AACxD,CAAC;AAFD,0CAEC"}
@@ -27,7 +27,7 @@ const marked = (content) => {
27
27
  const toc = [];
28
28
  renderer.heading = (text, level) => {
29
29
  const anchor = 'heading-' + toc.length;
30
- toc.push([level, anchor, text]);
30
+ toc.push({ level, id: anchor, text });
31
31
  return `<h${level} id="${anchor}">${text}</h${level}>`;
32
32
  };
33
33
  const marked = (text) => {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.util.js","sourceRoot":"","sources":["../../src/utils/markdown.util.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAEvC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE/D,OAAO;IACL,KAAK;aACI,WAAW,2BAA2B,WAAW;;;IAG1D,IAAI;KACH,KAAK,GAAG,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,UAAU,CAAC;IAChB,SAAS,CAAC,IAAY,EAAE,IAAY;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC;SACzC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ;CACT,CAAC,CAAC;AAEI,MAAM,MAAM,GAAG,CAAC,OAAe,EAAiC,EAAE;IACvE,MAAM,GAAG,GAAG,EAAE,CAAC;IAEf,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC,CAAC;AAlBW,QAAA,MAAM,UAkBjB"}
1
+ {"version":3,"file":"markdown.util.js","sourceRoot":"","sources":["../../src/utils/markdown.util.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,iCAAiC;AAEjC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAEvC,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE/D,OAAO;IACL,KAAK;aACI,WAAW,2BAA2B,WAAW;;;IAG1D,IAAI;KACH,KAAK,GAAG,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,UAAU,CAAC;IAChB,SAAS,CAAC,IAAY,EAAE,IAAY;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC;SACzC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ;CACT,CAAC,CAAC;AAEI,MAAM,MAAM,GAAG,CAAC,OAAe,EAAiC,EAAE;IACvE,MAAM,GAAG,GAAuD,EAAE,CAAC;IAEnE,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAEvC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,KAAK,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC,CAAC;AAlBW,QAAA,MAAM,UAkBjB"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="node" />
1
2
  import { OssClient } from './oss-client';
2
3
  export declare class AliyunOssClient extends OssClient {
3
4
  private buildClient;
4
- putFile(filepath: string, buffer: ReadableStream): Promise<any>;
5
+ putFile(filepath: string, buffer: Buffer): Promise<any>;
6
+ getFile(filepath: string): Promise<Buffer>;
5
7
  deleteFile(url: string): Promise<void>;
6
8
  }
@@ -19,6 +19,11 @@ class AliyunOssClient extends oss_client_1.OssClient {
19
19
  const { url } = await client.put(filepath, buffer);
20
20
  return url;
21
21
  }
22
+ async getFile(filepath) {
23
+ const client = await this.buildClient();
24
+ const result = await client.get(filepath);
25
+ return result.content;
26
+ }
22
27
  async deleteFile(url) {
23
28
  const client = await this.buildClient();
24
29
  await client.delete(url);
@@ -1 +1 @@
1
- {"version":3,"file":"aliyun-oss-client.js","sourceRoot":"","sources":["../../../src/utils/oss/aliyun-oss-client.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAErC,6CAAyC;AAEzC,MAAa,eAAgB,SAAQ,sBAAS;IACpC,KAAK,CAAC,WAAW;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,IAAI,SAAS,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAsB;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAtBD,0CAsBC"}
1
+ {"version":3,"file":"aliyun-oss-client.js","sourceRoot":"","sources":["../../../src/utils/oss/aliyun-oss-client.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAErC,6CAAyC;AAEzC,MAAa,eAAgB,SAAQ,sBAAS;IACpC,KAAK,CAAC,WAAW;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,IAAI,SAAS,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,OAAiB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AA5BD,0CA4BC"}
@@ -1,6 +1,8 @@
1
+ /// <reference types="node" />
1
2
  export declare abstract class OssClient {
2
3
  config: Record<string, unknown>;
3
4
  constructor(config: any);
4
- abstract putFile(filepath: string, buffer: ReadableStream): Promise<string>;
5
+ abstract putFile(filepath: string, buffer: Buffer): Promise<string>;
6
+ abstract getFile(filepath: string): Promise<Buffer>;
5
7
  abstract deleteFile(url: string): Promise<void>;
6
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oss-client.js","sourceRoot":"","sources":["../../../src/utils/oss/oss-client.ts"],"names":[],"mappings":";;;AAAA,MAAsB,SAAS;IAG7B,YAAY,MAAM;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CAIF;AATD,8BASC"}
1
+ {"version":3,"file":"oss-client.js","sourceRoot":"","sources":["../../../src/utils/oss/oss-client.ts"],"names":[],"mappings":";;;AAAA,MAAsB,SAAS;IAG7B,YAAY,MAAM;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CAKF;AAVD,8BAUC"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import { SettingService } from '../modules/setting/setting.service';
2
3
  import { OssClient } from './oss/oss-client';
3
4
  export declare class Oss {
@@ -8,6 +9,7 @@ export declare class Oss {
8
9
  hasOssConfig(): Promise<boolean>;
9
10
  private getConfig;
10
11
  private getOssClient;
11
- putFile(filepath: string, buffer: ReadableStream): Promise<any>;
12
+ putFile(filepath: string, buffer: Buffer): Promise<any>;
13
+ getFile(filepath: string): Promise<Buffer>;
12
14
  deleteFile(url: string): Promise<void>;
13
15
  }
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Oss = void 0;
4
- const api_messages_1 = require("../common/api-messages");
5
4
  const common_1 = require("@nestjs/common");
5
+ const api_messages_1 = require("../common/api-messages");
6
6
  const aliyun_oss_client_1 = require("./oss/aliyun-oss-client");
7
7
  class Oss {
8
8
  constructor(settingService) {
@@ -40,6 +40,10 @@ class Oss {
40
40
  const url = await client.putFile(filepath, buffer);
41
41
  return url;
42
42
  }
43
+ async getFile(filepath) {
44
+ const client = await this.getOssClient();
45
+ return client.getFile(filepath);
46
+ }
43
47
  async deleteFile(url) {
44
48
  const client = await this.getOssClient();
45
49
  await client.deleteFile(url);
@@ -1 +1 @@
1
- {"version":3,"file":"oss.util.js","sourceRoot":"","sources":["../../src/utils/oss.util.ts"],"names":[],"mappings":";;;AAAA,yDAAgD;AAChD,2CAA2D;AAG3D,+DAA0D;AAG1D,MAAa,GAAG;IAKd,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAKM,KAAK,CAAC,YAAY;QACvB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,MAAM,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,sBAAa,CAAC,qBAAM,CAAC,qBAAqB,EAAE,mBAAU,CAAC,WAAW,CAAC,CAAC;SAC/E;QACD,OAAO,MAAiC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/C,QAAQ,IAAI,EAAE;YACZ,KAAK,QAAQ,CAAC;YACd;gBACE,OAAO,IAAI,mCAAe,CAAC,MAAM,CAAC,CAAC;SACtC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAsB;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AApDD,kBAoDC"}
1
+ {"version":3,"file":"oss.util.js","sourceRoot":"","sources":["../../src/utils/oss.util.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAE3D,yDAAgD;AAEhD,+DAA0D;AAG1D,MAAa,GAAG;IAKd,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAKM,KAAK,CAAC,YAAY;QACvB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,MAAM,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,sBAAa,CAAC,qBAAM,CAAC,qBAAqB,EAAE,mBAAU,CAAC,WAAW,CAAC,CAAC;SAC/E;QACD,OAAO,MAAiC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE/C,QAAQ,IAAI,EAAE;YACZ,KAAK,QAAQ,CAAC;YACd;gBACE,OAAO,IAAI,mCAAe,CAAC,MAAM,CAAC,CAAC;SACtC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AAzDD,kBAyDC"}
@@ -0,0 +1,2 @@
1
+ export declare function resolveProjectRoot(): string;
2
+ export declare function resolveMonorepoRoot(): string;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveMonorepoRoot = exports.resolveProjectRoot = void 0;
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ function resolveProjectRoot() {
7
+ if (process.env.REACTPRESS_ORIGINAL_CWD) {
8
+ return process.env.REACTPRESS_ORIGINAL_CWD;
9
+ }
10
+ let dir = process.cwd();
11
+ for (let depth = 0; depth < 8; depth += 1) {
12
+ if (fs.existsSync(path.join(dir, 'themes'))) {
13
+ process.env.REACTPRESS_ORIGINAL_CWD = dir;
14
+ return dir;
15
+ }
16
+ const parent = path.dirname(dir);
17
+ if (parent === dir)
18
+ break;
19
+ dir = parent;
20
+ }
21
+ return process.cwd();
22
+ }
23
+ exports.resolveProjectRoot = resolveProjectRoot;
24
+ function resolveMonorepoRoot() {
25
+ if (process.env.REACTPRESS_MONOREPO_ROOT) {
26
+ return process.env.REACTPRESS_MONOREPO_ROOT;
27
+ }
28
+ let dir = process.cwd();
29
+ for (let depth = 0; depth < 10; depth += 1) {
30
+ if (fs.existsSync(path.join(dir, 'cli', 'out', 'lib', 'theme-registry.js'))) {
31
+ process.env.REACTPRESS_MONOREPO_ROOT = dir;
32
+ return dir;
33
+ }
34
+ const parent = path.dirname(dir);
35
+ if (parent === dir)
36
+ break;
37
+ dir = parent;
38
+ }
39
+ return process.cwd();
40
+ }
41
+ exports.resolveMonorepoRoot = resolveMonorepoRoot;
42
+ //# sourceMappingURL=project-root.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-root.util.js","sourceRoot":"","sources":["../../src/utils/project-root.util.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAG7B,SAAgB,kBAAkB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;KAC5C;IAED,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;QACzC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC;YAC1C,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;KACd;IAED,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAjBD,gDAiBC;AAGD,SAAgB,mBAAmB;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;KAC7C;IAED,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE;YAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC;YAC3C,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;KACd;IAED,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAjBD,kDAiBC"}
@@ -1,5 +1,9 @@
1
+ /// <reference types="node" />
1
2
  export declare class LocalUpload {
3
+ private readonly uploadRoot;
4
+ constructor();
2
5
  private mkdDirsSync;
3
- putFile(filename: any, buffer: ReadableStream): string;
4
- deleteFile(filename: any): void;
6
+ putFile(filename: string, buffer: Buffer): string;
7
+ getFile(filename: string): Buffer;
8
+ deleteFile(filename: string): void;
5
9
  }
@@ -3,28 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LocalUpload = void 0;
4
4
  const fs = require("fs");
5
5
  const path = require("path");
6
+ function resolveUploadRoot() {
7
+ var _a;
8
+ const fromEnv = (_a = process.env.REACTPRESS_UPLOAD_DIR) === null || _a === void 0 ? void 0 : _a.trim();
9
+ if (fromEnv)
10
+ return fromEnv;
11
+ return path.join(__dirname, '../../public/uploads');
12
+ }
6
13
  class LocalUpload {
14
+ constructor() {
15
+ this.uploadRoot = resolveUploadRoot();
16
+ }
7
17
  mkdDirsSync(dirname) {
8
18
  if (fs.existsSync(dirname)) {
9
19
  return true;
10
20
  }
11
- else {
12
- if (this.mkdDirsSync(path.dirname(dirname))) {
13
- fs.mkdirSync(dirname);
14
- return true;
15
- }
21
+ if (this.mkdDirsSync(path.dirname(dirname))) {
22
+ fs.mkdirSync(dirname);
23
+ return true;
16
24
  }
25
+ return false;
17
26
  }
18
27
  putFile(filename, buffer) {
19
- const saveFile = path.join(__dirname, `../../public/uploads/${filename}`);
28
+ const saveFile = path.join(this.uploadRoot, filename);
20
29
  const dirName = path.dirname(saveFile);
21
30
  this.mkdDirsSync(dirName);
22
31
  fs.writeFileSync(saveFile, buffer);
23
32
  return saveFile;
24
33
  }
34
+ getFile(filename) {
35
+ const filePath = path.join(this.uploadRoot, filename);
36
+ if (!fs.existsSync(filePath)) {
37
+ throw new Error(`File not found: ${filename}`);
38
+ }
39
+ return fs.readFileSync(filePath);
40
+ }
25
41
  deleteFile(filename) {
26
- const saveFileFolder = path.join(__dirname, '../../public/uploads');
27
- const filePath = `${saveFileFolder}/${filename}`;
42
+ const filePath = path.join(this.uploadRoot, filename);
28
43
  if (fs.existsSync(filePath)) {
29
44
  fs.unlinkSync(filePath);
30
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.util.js","sourceRoot":"","sources":["../../src/utils/upload.util.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAE7B,MAAa,WAAW;IAEd,WAAW,CAAC,OAAO;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;gBAC3C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,IAAI,CAAC;aACb;SACF;IACH,CAAC;IAEM,OAAO,CAAC,QAAQ,EAAE,MAAsB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE1B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,UAAU,CAAC,QAAQ;QACxB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,GAAG,cAAc,IAAI,QAAQ,EAAE,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC3B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACzB;IACH,CAAC;CACF;AA9BD,kCA8BC"}
1
+ {"version":3,"file":"upload.util.js","sourceRoot":"","sources":["../../src/utils/upload.util.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6BAA6B;AAE7B,SAAS,iBAAiB;;IACxB,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,0CAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;AACtD,CAAC;AAED,MAAa,WAAW;IAGtB;QACE,IAAI,CAAC,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACxC,CAAC;IAGO,WAAW,CAAC,OAAe;QACjC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;YAC3C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,QAAgB,EAAE,MAAc;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,OAAO,CAAC,QAAgB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;SAChD;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC3B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACzB;IACH,CAAC;CACF;AAzCD,kCAyCC"}
@@ -1 +1,2 @@
1
+ export declare function isValidEmail(email: string): boolean;
1
2
  export declare function isValidUsername(username: any): boolean;
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidUsername = void 0;
3
+ exports.isValidUsername = exports.isValidEmail = void 0;
4
+ function isValidEmail(email) {
5
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
6
+ }
7
+ exports.isValidEmail = isValidEmail;
4
8
  function isValidUsername(username) {
5
- var reg = /^[a-zA-Z0-9_]+$/;
9
+ const reg = /^[a-zA-Z0-9_]+$/;
6
10
  if (!reg.test(username)) {
7
11
  return false;
8
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user.util.js","sourceRoot":"","sources":["../../src/utils/user.util.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe,CAAC,QAAQ;IAEtC,IAAI,GAAG,GAAG,iBAAiB,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnE,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAfD,0CAeC"}
1
+ {"version":3,"file":"user.util.js","sourceRoot":"","sources":["../../src/utils/user.util.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAFD,oCAEC;AAED,SAAgB,eAAe,CAAC,QAAQ;IAEtC,MAAM,GAAG,GAAG,iBAAiB,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnE,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAfD,0CAeC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fecommunity/reactpress-server",
3
- "version": "3.7.0",
4
- "deprecated": "请使用 @fecommunity/reactpress-cli 内置 API,3.1 起停止发布",
3
+ "version": "4.0.0-beta.1",
4
+ "deprecated": "Use the built-in API in @fecommunity/reactpress (CLI). Standalone server publishing stopped from 3.1.",
5
5
  "description": "ReactPress Server - NestJS-based backend API for ReactPress CMS",
6
6
  "author": "fecommunity",
7
7
  "license": "MIT",
@@ -35,7 +35,7 @@
35
35
  "node": ">=16.5.0"
36
36
  },
37
37
  "dependencies": {
38
- "@fecommunity/reactpress-toolkit": "3.7.0",
38
+ "@fecommunity/reactpress-toolkit": "4.0.0-beta.1",
39
39
  "@nestjs/cli": "^6.9.0",
40
40
  "@nestjs/common": "^6.7.2",
41
41
  "@nestjs/config": "^0.6.3",
@@ -50,9 +50,7 @@
50
50
  "axios": "^0.23.0",
51
51
  "bcryptjs": "^2.4.3",
52
52
  "body-parser": "^1.19.0",
53
- "chalk": "^4.1.2",
54
53
  "class-transformer": "^0.2.3",
55
- "commander": "^9.4.1",
56
54
  "compression": "^1.7.4",
57
55
  "cross-env": "^7.0.3",
58
56
  "date-fns": "^2.17.0",
@@ -63,11 +61,11 @@
63
61
  "fs-extra": "^10.0.0",
64
62
  "helmet": "^3.21.2",
65
63
  "highlight.js": "^9.18.0",
66
- "inquirer": "^8.2.4",
67
64
  "lodash": "^4.17.21",
68
65
  "log4js": "^6.1.0",
69
66
  "marked": "^0.8.0",
70
67
  "mysql2": "^3.12.0",
68
+ "sqlite3": "^5.1.7",
71
69
  "node-ip2region": "^1.0.2",
72
70
  "nodemailer": "^6.4.2",
73
71
  "nuid": "^1.1.0",
@@ -79,6 +77,7 @@
79
77
  "rimraf": "^3.0.0",
80
78
  "rxjs": "^6.5.3",
81
79
  "segment": "^0.1.3",
80
+ "sharp": "^0.34.5",
82
81
  "swagger-themes": "^1.4.3",
83
82
  "swagger-ui-express": "^4.1.6",
84
83
  "typeorm": "^0.2.45",
@@ -99,7 +98,6 @@
99
98
  "eslint-plugin-prettier": "^4.0.0",
100
99
  "eslint-plugin-simple-import-sort": "^7.0.0",
101
100
  "jest": "^24.9.0",
102
- "next-transpile-modules": "^6.3.0",
103
101
  "prettier": "^1.18.2",
104
102
  "supertest": "^4.0.2",
105
103
  "ts-jest": "^24.1.0",
@@ -107,7 +105,7 @@
107
105
  "ts-node": "^8.4.1",
108
106
  "tsconfig-paths": "^3.9.0",
109
107
  "tslint": "^5.20.0",
110
- "typescript": "4.6.2"
108
+ "typescript": "~4.9.5"
111
109
  },
112
110
  "jest": {
113
111
  "moduleFileExtensions": [
@@ -124,11 +122,12 @@
124
122
  "testEnvironment": "node"
125
123
  },
126
124
  "scripts": {
127
- "prebuild": "rimraf dist",
125
+ "clean": "rimraf dist",
128
126
  "build": "nest build && npm run copy-assets",
129
127
  "copy-assets": "cp -r public dist/ 2>/dev/null || true",
130
128
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
131
- "dev": "nest start --watch",
129
+ "predev": "node scripts/ensure-dev-dist.js",
130
+ "dev": "cross-env REACTPRESS_API_ENTRY=starter nest start --watch",
132
131
  "debug": "nest start --debug --watch",
133
132
  "start": "cross-env NODE_ENV=production node dist/main",
134
133
  "pm2": "pm2 start npm --name @fecommunity/reactpress-server -- start",