@fecommunity/reactpress-server 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +325 -56
  2. package/bin/reactpress-server.js +6 -50
  3. package/dist/app.module.js +30 -18
  4. package/dist/app.module.js.map +1 -1
  5. package/dist/filters/http-exception.filter.js +1 -1
  6. package/dist/filters/http-exception.filter.js.map +1 -1
  7. package/dist/generate-swagger.d.ts +1 -1
  8. package/dist/generate-swagger.js +11 -12
  9. package/dist/generate-swagger.js.map +1 -1
  10. package/dist/interceptors/transform.interceptor.d.ts +6 -2
  11. package/dist/interceptors/transform.interceptor.js +5 -10
  12. package/dist/interceptors/transform.interceptor.js.map +1 -1
  13. package/dist/logger/index.js +4 -5
  14. package/dist/logger/index.js.map +1 -1
  15. package/dist/main.d.ts +1 -3
  16. package/dist/main.js +23 -47
  17. package/dist/main.js.map +1 -1
  18. package/dist/modules/article/article.controller.d.ts +2 -7
  19. package/dist/modules/article/article.controller.js +48 -103
  20. package/dist/modules/article/article.controller.js.map +1 -1
  21. package/dist/modules/article/article.entity.d.ts +0 -4
  22. package/dist/modules/article/article.entity.js +41 -61
  23. package/dist/modules/article/article.entity.js.map +1 -1
  24. package/dist/modules/article/article.module.js +3 -18
  25. package/dist/modules/article/article.module.js.map +1 -1
  26. package/dist/modules/article/article.service.d.ts +2 -16
  27. package/dist/modules/article/article.service.js +29 -151
  28. package/dist/modules/article/article.service.js.map +1 -1
  29. package/dist/modules/auth/auth.controller.js +11 -11
  30. package/dist/modules/auth/auth.controller.js.map +1 -1
  31. package/dist/modules/auth/auth.module.js +4 -4
  32. package/dist/modules/auth/auth.module.js.map +1 -1
  33. package/dist/modules/auth/auth.service.js +7 -8
  34. package/dist/modules/auth/auth.service.js.map +1 -1
  35. package/dist/modules/auth/jwt-auth.guard.js +3 -4
  36. package/dist/modules/auth/jwt-auth.guard.js.map +1 -1
  37. package/dist/modules/auth/jwt.strategy.js +3 -4
  38. package/dist/modules/auth/jwt.strategy.js.map +1 -1
  39. package/dist/modules/auth/roles.guard.js +2 -2
  40. package/dist/modules/auth/roles.guard.js.map +1 -1
  41. package/dist/modules/category/category.controller.js +20 -21
  42. package/dist/modules/category/category.controller.js.map +1 -1
  43. package/dist/modules/category/category.entity.js +13 -13
  44. package/dist/modules/category/category.entity.js.map +1 -1
  45. package/dist/modules/category/category.module.js +1 -1
  46. package/dist/modules/category/category.module.js.map +1 -1
  47. package/dist/modules/category/category.service.js +4 -5
  48. package/dist/modules/category/category.service.js.map +1 -1
  49. package/dist/modules/comment/comment.controller.js +20 -24
  50. package/dist/modules/comment/comment.controller.js.map +1 -1
  51. package/dist/modules/comment/comment.entity.js +31 -31
  52. package/dist/modules/comment/comment.entity.js.map +1 -1
  53. package/dist/modules/comment/comment.module.js +2 -11
  54. package/dist/modules/comment/comment.module.js.map +1 -1
  55. package/dist/modules/comment/comment.service.d.ts +1 -5
  56. package/dist/modules/comment/comment.service.js +16 -43
  57. package/dist/modules/comment/comment.service.js.map +1 -1
  58. package/dist/modules/comment/html.d.ts +1 -1
  59. package/dist/modules/comment/html.js +3 -3
  60. package/dist/modules/comment/html.js.map +1 -1
  61. package/dist/modules/file/file.controller.d.ts +1 -1
  62. package/dist/modules/file/file.controller.js +20 -22
  63. package/dist/modules/file/file.controller.js.map +1 -1
  64. package/dist/modules/file/file.entity.d.ts +0 -7
  65. package/dist/modules/file/file.entity.js +15 -20
  66. package/dist/modules/file/file.entity.js.map +1 -1
  67. package/dist/modules/file/file.module.js +4 -16
  68. package/dist/modules/file/file.module.js.map +1 -1
  69. package/dist/modules/file/file.service.d.ts +1 -6
  70. package/dist/modules/file/file.service.js +38 -88
  71. package/dist/modules/file/file.service.js.map +1 -1
  72. package/dist/modules/install/install.controller.js +5 -5
  73. package/dist/modules/install/install.controller.js.map +1 -1
  74. package/dist/modules/install/install.module.js +1 -1
  75. package/dist/modules/install/install.module.js.map +1 -1
  76. package/dist/modules/install/install.service.js +2 -2
  77. package/dist/modules/install/install.service.js.map +1 -1
  78. package/dist/modules/knowledge/knowledge.controller.js +33 -35
  79. package/dist/modules/knowledge/knowledge.controller.js.map +1 -1
  80. package/dist/modules/knowledge/knowledge.entity.js +33 -33
  81. package/dist/modules/knowledge/knowledge.entity.js.map +1 -1
  82. package/dist/modules/knowledge/knowledge.module.js +1 -1
  83. package/dist/modules/knowledge/knowledge.module.js.map +1 -1
  84. package/dist/modules/knowledge/knowledge.service.js +11 -12
  85. package/dist/modules/knowledge/knowledge.service.js.map +1 -1
  86. package/dist/modules/page/page.controller.js +23 -24
  87. package/dist/modules/page/page.controller.js.map +1 -1
  88. package/dist/modules/page/page.entity.js +27 -27
  89. package/dist/modules/page/page.entity.js.map +1 -1
  90. package/dist/modules/page/page.module.js +1 -1
  91. package/dist/modules/page/page.module.js.map +1 -1
  92. package/dist/modules/page/page.service.js +12 -12
  93. package/dist/modules/page/page.service.js.map +1 -1
  94. package/dist/modules/search/search.controller.js +12 -12
  95. package/dist/modules/search/search.controller.js.map +1 -1
  96. package/dist/modules/search/search.entity.js +13 -13
  97. package/dist/modules/search/search.entity.js.map +1 -1
  98. package/dist/modules/search/search.module.js +1 -1
  99. package/dist/modules/search/search.module.js.map +1 -1
  100. package/dist/modules/search/search.service.js +2 -2
  101. package/dist/modules/search/search.service.js.map +1 -1
  102. package/dist/modules/setting/setting.constant.d.ts +4 -5
  103. package/dist/modules/setting/setting.constant.js +20 -5
  104. package/dist/modules/setting/setting.constant.js.map +1 -1
  105. package/dist/modules/setting/setting.controller.js +11 -11
  106. package/dist/modules/setting/setting.controller.js.map +1 -1
  107. package/dist/modules/setting/setting.entity.d.ts +0 -3
  108. package/dist/modules/setting/setting.entity.js +49 -64
  109. package/dist/modules/setting/setting.entity.js.map +1 -1
  110. package/dist/modules/setting/setting.module.js +2 -2
  111. package/dist/modules/setting/setting.module.js.map +1 -1
  112. package/dist/modules/setting/setting.service.d.ts +2 -13
  113. package/dist/modules/setting/setting.service.js +24 -169
  114. package/dist/modules/setting/setting.service.js.map +1 -1
  115. package/dist/modules/smtp/mail.util.d.ts +6 -7
  116. package/dist/modules/smtp/mail.util.js +9 -5
  117. package/dist/modules/smtp/mail.util.js.map +1 -1
  118. package/dist/modules/smtp/smtp.controller.d.ts +0 -3
  119. package/dist/modules/smtp/smtp.controller.js +14 -27
  120. package/dist/modules/smtp/smtp.controller.js.map +1 -1
  121. package/dist/modules/smtp/smtp.entity.js +15 -15
  122. package/dist/modules/smtp/smtp.entity.js.map +1 -1
  123. package/dist/modules/smtp/smtp.module.js +2 -2
  124. package/dist/modules/smtp/smtp.module.js.map +1 -1
  125. package/dist/modules/smtp/smtp.service.d.ts +0 -14
  126. package/dist/modules/smtp/smtp.service.js +12 -40
  127. package/dist/modules/smtp/smtp.service.js.map +1 -1
  128. package/dist/modules/tag/tag.controller.js +22 -24
  129. package/dist/modules/tag/tag.controller.js.map +1 -1
  130. package/dist/modules/tag/tag.entity.js +12 -12
  131. package/dist/modules/tag/tag.entity.js.map +1 -1
  132. package/dist/modules/tag/tag.module.js +1 -1
  133. package/dist/modules/tag/tag.module.js.map +1 -1
  134. package/dist/modules/tag/tag.service.js +4 -5
  135. package/dist/modules/tag/tag.service.js.map +1 -1
  136. package/dist/modules/user/user.controller.js +28 -39
  137. package/dist/modules/user/user.controller.js.map +1 -1
  138. package/dist/modules/user/user.entity.js +22 -22
  139. package/dist/modules/user/user.entity.js.map +1 -1
  140. package/dist/modules/user/user.module.js +2 -2
  141. package/dist/modules/user/user.module.js.map +1 -1
  142. package/dist/modules/user/user.service.js +14 -18
  143. package/dist/modules/user/user.service.js.map +1 -1
  144. package/dist/modules/view/view.controller.js +19 -20
  145. package/dist/modules/view/view.controller.js.map +1 -1
  146. package/dist/modules/view/view.entity.js +24 -24
  147. package/dist/modules/view/view.entity.js.map +1 -1
  148. package/dist/modules/view/view.module.js +1 -1
  149. package/dist/modules/view/view.module.js.map +1 -1
  150. package/dist/modules/view/view.service.js +4 -4
  151. package/dist/modules/view/view.service.js.map +1 -1
  152. package/dist/public/favicon.png +0 -0
  153. package/dist/starter.d.ts +1 -3
  154. package/dist/starter.js +14 -202
  155. package/dist/starter.js.map +1 -1
  156. package/dist/tsconfig.build.tsbuildinfo +15957 -1
  157. package/dist/utils/date.util.js +1 -1
  158. package/dist/utils/date.util.js.map +1 -1
  159. package/dist/utils/markdown.util.js +1 -1
  160. package/dist/utils/markdown.util.js.map +1 -1
  161. package/dist/utils/oss/aliyun-oss-client.d.ts +1 -3
  162. package/dist/utils/oss/aliyun-oss-client.js +0 -5
  163. package/dist/utils/oss/aliyun-oss-client.js.map +1 -1
  164. package/dist/utils/oss/oss-client.d.ts +1 -3
  165. package/dist/utils/oss/oss-client.js.map +1 -1
  166. package/dist/utils/oss.util.d.ts +1 -3
  167. package/dist/utils/oss.util.js +1 -6
  168. package/dist/utils/oss.util.js.map +1 -1
  169. package/dist/utils/uniqueid.util.js +1 -1
  170. package/dist/utils/uniqueid.util.js.map +1 -1
  171. package/dist/utils/upload.util.d.ts +2 -6
  172. package/dist/utils/upload.util.js +8 -23
  173. package/dist/utils/upload.util.js.map +1 -1
  174. package/dist/utils/user.util.d.ts +0 -1
  175. package/dist/utils/user.util.js +2 -6
  176. package/dist/utils/user.util.js.map +1 -1
  177. package/package.json +32 -36
  178. package/public/favicon.png +0 -0
  179. package/dist/common/api-messages.d.ts +0 -41
  180. package/dist/common/api-messages.js +0 -45
  181. package/dist/common/api-messages.js.map +0 -1
  182. package/dist/database/typeorm-options.d.ts +0 -3
  183. package/dist/database/typeorm-options.js +0 -71
  184. package/dist/database/typeorm-options.js.map +0 -1
  185. package/dist/modules/api-key/api-key.controller.d.ts +0 -14
  186. package/dist/modules/api-key/api-key.controller.js +0 -63
  187. package/dist/modules/api-key/api-key.controller.js.map +0 -1
  188. package/dist/modules/api-key/api-key.entity.d.ts +0 -11
  189. package/dist/modules/api-key/api-key.entity.js +0 -63
  190. package/dist/modules/api-key/api-key.entity.js.map +0 -1
  191. package/dist/modules/api-key/api-key.guard.d.ts +0 -7
  192. package/dist/modules/api-key/api-key.guard.js +0 -39
  193. package/dist/modules/api-key/api-key.guard.js.map +0 -1
  194. package/dist/modules/api-key/api-key.module.d.ts +0 -2
  195. package/dist/modules/api-key/api-key.module.js +0 -28
  196. package/dist/modules/api-key/api-key.module.js.map +0 -1
  197. package/dist/modules/api-key/api-key.service.d.ts +0 -15
  198. package/dist/modules/api-key/api-key.service.js +0 -81
  199. package/dist/modules/api-key/api-key.service.js.map +0 -1
  200. package/dist/modules/article/article-revision.entity.d.ts +0 -11
  201. package/dist/modules/article/article-revision.entity.js +0 -53
  202. package/dist/modules/article/article-revision.entity.js.map +0 -1
  203. package/dist/modules/article/article-slug.util.d.ts +0 -2
  204. package/dist/modules/article/article-slug.util.js +0 -19
  205. package/dist/modules/article/article-slug.util.js.map +0 -1
  206. package/dist/modules/article/scheduled-publish.service.d.ts +0 -13
  207. package/dist/modules/article/scheduled-publish.service.js +0 -65
  208. package/dist/modules/article/scheduled-publish.service.js.map +0 -1
  209. package/dist/modules/bootstrap/bootstrap.constants.d.ts +0 -20
  210. package/dist/modules/bootstrap/bootstrap.constants.js +0 -171
  211. package/dist/modules/bootstrap/bootstrap.constants.js.map +0 -1
  212. package/dist/modules/bootstrap/bootstrap.service.d.ts +0 -22
  213. package/dist/modules/bootstrap/bootstrap.service.js +0 -183
  214. package/dist/modules/bootstrap/bootstrap.service.js.map +0 -1
  215. package/dist/modules/bootstrap/install-locale.d.ts +0 -2
  216. package/dist/modules/bootstrap/install-locale.js +0 -11
  217. package/dist/modules/bootstrap/install-locale.js.map +0 -1
  218. package/dist/modules/extension/extension.module.d.ts +0 -9
  219. package/dist/modules/extension/extension.module.js +0 -52
  220. package/dist/modules/extension/extension.module.js.map +0 -1
  221. package/dist/modules/extension/plugin-loader.service.d.ts +0 -12
  222. package/dist/modules/extension/plugin-loader.service.js +0 -96
  223. package/dist/modules/extension/plugin-loader.service.js.map +0 -1
  224. package/dist/modules/extension/plugin-registry.bridge.d.ts +0 -3
  225. package/dist/modules/extension/plugin-registry.bridge.js +0 -44
  226. package/dist/modules/extension/plugin-registry.bridge.js.map +0 -1
  227. package/dist/modules/extension/plugin.controller.d.ts +0 -22
  228. package/dist/modules/extension/plugin.controller.js +0 -155
  229. package/dist/modules/extension/plugin.controller.js.map +0 -1
  230. package/dist/modules/extension/plugin.service.d.ts +0 -54
  231. package/dist/modules/extension/plugin.service.js +0 -414
  232. package/dist/modules/extension/plugin.service.js.map +0 -1
  233. package/dist/modules/extension/preview-draft.store.d.ts +0 -13
  234. package/dist/modules/extension/preview-draft.store.js +0 -41
  235. package/dist/modules/extension/preview-draft.store.js.map +0 -1
  236. package/dist/modules/extension/theme-registry.bridge.d.ts +0 -56
  237. package/dist/modules/extension/theme-registry.bridge.js +0 -68
  238. package/dist/modules/extension/theme-registry.bridge.js.map +0 -1
  239. package/dist/modules/extension/theme.controller.d.ts +0 -66
  240. package/dist/modules/extension/theme.controller.js +0 -301
  241. package/dist/modules/extension/theme.controller.js.map +0 -1
  242. package/dist/modules/extension/theme.service.d.ts +0 -140
  243. package/dist/modules/extension/theme.service.js +0 -1039
  244. package/dist/modules/extension/theme.service.js.map +0 -1
  245. package/dist/modules/file/content-image-scan.util.d.ts +0 -52
  246. package/dist/modules/file/content-image-scan.util.js +0 -222
  247. package/dist/modules/file/content-image-scan.util.js.map +0 -1
  248. package/dist/modules/file/file-optimization.controller.d.ts +0 -12
  249. package/dist/modules/file/file-optimization.controller.js +0 -79
  250. package/dist/modules/file/file-optimization.controller.js.map +0 -1
  251. package/dist/modules/file/file-optimization.service.d.ts +0 -36
  252. package/dist/modules/file/file-optimization.service.js +0 -387
  253. package/dist/modules/file/file-optimization.service.js.map +0 -1
  254. package/dist/modules/file/file-optimization.types.d.ts +0 -66
  255. package/dist/modules/file/file-optimization.types.js +0 -5
  256. package/dist/modules/file/file-optimization.types.js.map +0 -1
  257. package/dist/modules/file/image-optimizer-plugin.guard.d.ts +0 -7
  258. package/dist/modules/file/image-optimizer-plugin.guard.js +0 -33
  259. package/dist/modules/file/image-optimizer-plugin.guard.js.map +0 -1
  260. package/dist/modules/health/health.controller.d.ts +0 -11
  261. package/dist/modules/health/health.controller.js +0 -55
  262. package/dist/modules/health/health.controller.js.map +0 -1
  263. package/dist/modules/health/health.module.d.ts +0 -2
  264. package/dist/modules/health/health.module.js +0 -20
  265. package/dist/modules/health/health.module.js.map +0 -1
  266. package/dist/modules/hook/hook.module.d.ts +0 -2
  267. package/dist/modules/hook/hook.module.js +0 -22
  268. package/dist/modules/hook/hook.module.js.map +0 -1
  269. package/dist/modules/hook/hook.service.d.ts +0 -26
  270. package/dist/modules/hook/hook.service.js +0 -105
  271. package/dist/modules/hook/hook.service.js.map +0 -1
  272. package/dist/modules/webhook/webhook.controller.d.ts +0 -12
  273. package/dist/modules/webhook/webhook.controller.js +0 -63
  274. package/dist/modules/webhook/webhook.controller.js.map +0 -1
  275. package/dist/modules/webhook/webhook.entity.d.ts +0 -9
  276. package/dist/modules/webhook/webhook.entity.js +0 -54
  277. package/dist/modules/webhook/webhook.entity.js.map +0 -1
  278. package/dist/modules/webhook/webhook.module.d.ts +0 -2
  279. package/dist/modules/webhook/webhook.module.js +0 -27
  280. package/dist/modules/webhook/webhook.module.js.map +0 -1
  281. package/dist/modules/webhook/webhook.service.d.ts +0 -16
  282. package/dist/modules/webhook/webhook.service.js +0 -100
  283. package/dist/modules/webhook/webhook.service.js.map +0 -1
  284. package/dist/node-polyfills.d.ts +0 -18
  285. package/dist/node-polyfills.js +0 -24
  286. package/dist/node-polyfills.js.map +0 -1
  287. package/dist/public/apple-touch-icon.png +0 -0
  288. package/dist/public/favicon-16.png +0 -0
  289. package/dist/public/favicon-32.png +0 -0
  290. package/dist/public/favicon-48.png +0 -0
  291. package/dist/public/favicon.ico +0 -0
  292. package/dist/public/icon-192.png +0 -0
  293. package/dist/public/icon-512.png +0 -0
  294. package/dist/public/logo-200.png +0 -0
  295. package/dist/public/logo-400.png +0 -0
  296. package/dist/public/logo.png +0 -0
  297. package/dist/public/logo.svg +0 -7
  298. package/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  299. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  300. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  301. package/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  302. package/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
  303. package/dist/tsconfig.tsbuildinfo +0 -1
  304. package/dist/utils/html-sanitize.util.d.ts +0 -1
  305. package/dist/utils/html-sanitize.util.js +0 -33
  306. package/dist/utils/html-sanitize.util.js.map +0 -1
  307. package/dist/utils/image-processor.util.d.ts +0 -23
  308. package/dist/utils/image-processor.util.js +0 -88
  309. package/dist/utils/image-processor.util.js.map +0 -1
  310. package/dist/utils/local-api-quiet.util.d.ts +0 -1
  311. package/dist/utils/local-api-quiet.util.js +0 -8
  312. package/dist/utils/local-api-quiet.util.js.map +0 -1
  313. package/dist/utils/project-root.util.d.ts +0 -2
  314. package/dist/utils/project-root.util.js +0 -42
  315. package/dist/utils/project-root.util.js.map +0 -1
  316. package/dist/utils/query-whitelist.util.d.ts +0 -1
  317. package/dist/utils/query-whitelist.util.js +0 -100
  318. package/dist/utils/query-whitelist.util.js.map +0 -1
  319. package/dist/utils/theme-placeholder-cover.d.ts +0 -7
  320. package/dist/utils/theme-placeholder-cover.js +0 -94
  321. package/dist/utils/theme-placeholder-cover.js.map +0 -1
  322. package/dist/utils/upload-url.util.d.ts +0 -4
  323. package/dist/utils/upload-url.util.js +0 -34
  324. package/dist/utils/upload-url.util.js.map +0 -1
  325. package/public/apple-touch-icon.png +0 -0
  326. package/public/favicon-16.png +0 -0
  327. package/public/favicon-32.png +0 -0
  328. package/public/favicon-48.png +0 -0
  329. package/public/favicon.ico +0 -0
  330. package/public/icon-192.png +0 -0
  331. package/public/icon-512.png +0 -0
  332. package/public/logo-200.png +0 -0
  333. package/public/logo-400.png +0 -0
  334. package/public/logo.png +0 -0
  335. package/public/logo.svg +0 -7
  336. package/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
  337. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
  338. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
  339. package/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
  340. package/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
@@ -46,8 +46,8 @@ let ViewService = class ViewService {
46
46
  await this.viewRepository.save(newData);
47
47
  return newData;
48
48
  }
49
- const { data: uaInfo } = (0, ua_util_1.parseUserAgent)(userAgent);
50
- const address = (0, ip_util_1.parseIp)(ip);
49
+ const { data: uaInfo } = ua_util_1.parseUserAgent(userAgent);
50
+ const address = ip_util_1.parseIp(ip);
51
51
  const newData = await this.viewRepository.create(Object.assign({ ip, userAgent, url, address }, uaInfo));
52
52
  await this.viewRepository.save(newData);
53
53
  return newData;
@@ -81,8 +81,8 @@ let ViewService = class ViewService {
81
81
  }
82
82
  };
83
83
  ViewService = __decorate([
84
- (0, common_1.Injectable)(),
85
- __param(0, (0, typeorm_1.InjectRepository)(view_entity_1.View)),
84
+ common_1.Injectable(),
85
+ __param(0, typeorm_1.InjectRepository(view_entity_1.View)),
86
86
  __metadata("design:paramtypes", [typeorm_2.Repository])
87
87
  ], ViewService);
88
88
  exports.ViewService = ViewService;
@@ -1 +1 @@
1
- {"version":3,"file":"view.service.js","sourceRoot":"","sources":["../../../src/modules/view/view.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.service.js","sourceRoot":"","sources":["../../../src/modules/view/view.service.ts"],"names":[],"mappings":"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"}
Binary file
package/dist/starter.d.ts CHANGED
@@ -1,3 +1 @@
1
- import './node-polyfills';
2
- import { INestApplication } from '@nestjs/common';
3
- export declare function bootstrap(): Promise<INestApplication>;
1
+ export declare function bootstrap(): Promise<import("@nestjs/common").INestApplication>;
package/dist/starter.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.bootstrap = void 0;
4
- require("./node-polyfills");
5
4
  const core_1 = require("@nestjs/core");
6
5
  const swagger_1 = require("@nestjs/swagger");
7
6
  const bodyParser = require("body-parser");
@@ -9,176 +8,25 @@ const compression = require("compression");
9
8
  const express = require("express");
10
9
  const rateLimit = require("express-rate-limit");
11
10
  const helmet = require("helmet");
12
- const http = require("http");
13
- const net = require("net");
14
- const fs_1 = require("fs");
15
11
  const path_1 = require("path");
16
12
  const swagger_themes_1 = require("swagger-themes");
17
13
  const app_module_1 = require("./app.module");
18
- const api_messages_1 = require("./common/api-messages");
19
14
  const http_exception_filter_1 = require("./filters/http-exception.filter");
20
15
  const transform_interceptor_1 = require("./interceptors/transform.interceptor");
21
- const project_root_util_1 = require("./utils/project-root.util");
22
- const local_api_quiet_util_1 = require("./utils/local-api-quiet.util");
23
- let nestApp = null;
24
- function isPortOpen(port) {
25
- return new Promise((resolve) => {
26
- const socket = net.createConnection({ port, host: '127.0.0.1' }, () => {
27
- socket.destroy();
28
- resolve(true);
29
- });
30
- socket.on('error', () => resolve(false));
31
- socket.setTimeout(800, () => {
32
- socket.destroy();
33
- resolve(false);
34
- });
35
- });
36
- }
37
- function normalizeHealthPayload(raw) {
38
- if (!raw || typeof raw !== 'object')
39
- return null;
40
- const body = raw;
41
- const nested = body.data;
42
- if (nested && typeof nested === 'object' && ('status' in nested || 'database' in nested)) {
43
- return nested;
44
- }
45
- return body;
46
- }
47
- function isHealthPayloadReady(payload) {
48
- if (!payload)
49
- return false;
50
- if (Object.prototype.hasOwnProperty.call(payload, 'database')) {
51
- return payload.status === 'ok' && payload.database === 'up';
52
- }
53
- return payload.status === 'ok' || payload.status === 'OK';
54
- }
55
- function probeApiHealth(port, prefix = '/api') {
56
- return new Promise((resolve) => {
57
- const req = http.request({
58
- hostname: '127.0.0.1',
59
- port,
60
- path: `${prefix.replace(/\/$/, '')}/health`,
61
- method: 'GET',
62
- timeout: 2000,
63
- }, (res) => {
64
- let body = '';
65
- res.on('data', (c) => {
66
- body += c;
67
- });
68
- res.on('end', () => {
69
- if (res.statusCode !== 200) {
70
- resolve(false);
71
- return;
72
- }
73
- try {
74
- const payload = normalizeHealthPayload(JSON.parse(body));
75
- resolve(isHealthPayloadReady(payload));
76
- }
77
- catch (_a) {
78
- resolve(false);
79
- }
80
- });
81
- });
82
- req.on('error', () => resolve(false));
83
- req.on('timeout', () => {
84
- req.destroy();
85
- resolve(false);
86
- });
87
- req.end();
88
- });
89
- }
90
16
  async function bootstrap() {
91
- var _a;
92
- (0, project_root_util_1.resolveProjectRoot)();
93
- const configuredPort = Number(process.env.SERVER_PORT || 3002);
94
- const apiPrefix = String(process.env.SERVER_API_PREFIX || '/api');
95
- if (process.env.REACTPRESS_API_ENTRY === 'starter' &&
96
- (await isPortOpen(configuredPort)) &&
97
- (await probeApiHealth(configuredPort, apiPrefix))) {
98
- console.log(`[ReactPress] API already healthy on :${configuredPort} (nest watch reload — skip bootstrap)`);
99
- return null;
100
- }
101
17
  try {
102
- if (nestApp) {
103
- await nestApp.close();
104
- nestApp = null;
105
- }
106
- const app = await core_1.NestFactory.create(app_module_1.AppModule, {
107
- logger: (0, local_api_quiet_util_1.isLocalApiQuiet)() ? ['error', 'warn'] : undefined,
108
- });
18
+ const app = await core_1.NestFactory.create(app_module_1.AppModule);
109
19
  const configService = app.get('ConfigService');
110
- const listenPort = Number(configService.get('SERVER_PORT', configuredPort));
111
- app.use((req, res, next) => {
112
- const { shouldRedirectDevPortToNginx, buildDevPortRedirectUrl } = require('@fecommunity/reactpress-toolkit/plugin/dev');
113
- if (!shouldRedirectDevPortToNginx({
114
- host: req.headers.host,
115
- method: req.method,
116
- accept: req.headers.accept,
117
- directPort: listenPort,
118
- pathname: req.path,
119
- skipPathPrefixes: ['/public'],
120
- })) {
121
- next();
122
- return;
123
- }
124
- res.redirect(302, buildDevPortRedirectUrl({
125
- directPort: listenPort,
126
- pathname: req.path,
127
- search: req.url.includes('?') ? req.url.slice(req.url.indexOf('?')) : '',
128
- }));
129
- });
130
20
  app.enableCors();
131
- const apiPrefix = String(configService.get('SERVER_API_PREFIX', '/api')).replace(/\/$/, '');
132
- app.setGlobalPrefix(apiPrefix);
21
+ app.setGlobalPrefix(configService.get('SERVER_API_PREFIX', '/api'));
133
22
  app.use(rateLimit({
134
23
  windowMs: 60 * 1000,
135
24
  max: 10000,
136
25
  }));
137
- app.use(`${apiPrefix}/auth/login`, rateLimit({
138
- windowMs: 15 * 60 * 1000,
139
- max: 5,
140
- skipSuccessfulRequests: true,
141
- standardHeaders: true,
142
- legacyHeaders: false,
143
- handler(_req, res) {
144
- res.status(429).json({
145
- statusCode: 429,
146
- msg: api_messages_1.ApiMsg.TOO_MANY_LOGIN_ATTEMPTS,
147
- success: false,
148
- data: null,
149
- });
150
- },
151
- }));
152
- const rootDir = (0, path_1.join)(__dirname, '../public');
153
- const uploadDir = (_a = process.env.REACTPRESS_UPLOAD_DIR) === null || _a === void 0 ? void 0 : _a.trim();
154
- if (uploadDir && (0, fs_1.existsSync)(uploadDir)) {
155
- app.use('/public/uploads', express.static(uploadDir));
156
- }
26
+ const rootDir = path_1.join(__dirname, '../public');
157
27
  app.use('/public', express.static(rootDir));
158
- for (const name of ['logo.png', 'favicon.png', 'favicon.ico']) {
159
- const filePath = (0, path_1.join)(rootDir, name);
160
- if ((0, fs_1.existsSync)(filePath)) {
161
- app.use(`/${name}`, (_req, res) => {
162
- res.sendFile(filePath);
163
- });
164
- }
165
- }
166
28
  app.use(compression());
167
- app.use(helmet({
168
- contentSecurityPolicy: {
169
- directives: {
170
- defaultSrc: ["'self'"],
171
- scriptSrc: ["'self'", "'unsafe-inline'"],
172
- styleSrc: ["'self'", "'unsafe-inline'"],
173
- imgSrc: ["'self'", 'data:', 'blob:'],
174
- connectSrc: ["'self'"],
175
- fontSrc: ["'self'"],
176
- objectSrc: ["'none'"],
177
- mediaSrc: ["'self'"],
178
- frameSrc: ["'none'"],
179
- },
180
- },
181
- }));
29
+ app.use(helmet());
182
30
  app.useGlobalInterceptors(new transform_interceptor_1.TransformInterceptor());
183
31
  app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter());
184
32
  app.use(bodyParser.json({ limit: '10mb' }));
@@ -186,7 +34,7 @@ async function bootstrap() {
186
34
  const swaggerConfig = new swagger_1.DocumentBuilder()
187
35
  .setTitle('ReactPress API Documentation')
188
36
  .setDescription('Comprehensive API documentation for ReactPress - A modern content management system built with NestJS')
189
- .setVersion('3.0')
37
+ .setVersion('2.0')
190
38
  .setContact('ReactPress Team', 'https://github.com/fecommunity/reactpress', 'admin@gaoredu.com')
191
39
  .setLicense('MIT', 'https://github.com/fecommunity/reactpress/blob/main/LICENSE')
192
40
  .addServer(configService.get('SERVER_SITE_URL', 'http://localhost:3002'), 'API Server')
@@ -196,7 +44,7 @@ async function bootstrap() {
196
44
  const options = {
197
45
  customCss: theme.getBuffer(swagger_themes_1.SwaggerThemeNameEnum.MATERIAL),
198
46
  customSiteTitle: 'ReactPress API Documentation',
199
- customfavIcon: '/public/favicon.ico',
47
+ customfavIcon: '/public/favicon.png',
200
48
  swaggerOptions: {
201
49
  docExpansion: 'list',
202
50
  filter: true,
@@ -209,35 +57,15 @@ async function bootstrap() {
209
57
  customCssUrl: '/public/swagger/custom.css',
210
58
  };
211
59
  swagger_1.SwaggerModule.setup('api', app, document, options);
212
- const listenPrefix = String(configService.get('SERVER_API_PREFIX', apiPrefix));
213
- if (process.env.REACTPRESS_API_ENTRY === 'starter' &&
214
- (await isPortOpen(listenPort)) &&
215
- (await probeApiHealth(listenPort, listenPrefix))) {
216
- console.log(`[ReactPress] API already healthy on :${listenPort} (nest watch reload — skip duplicate listen)`);
217
- await app.close();
218
- return null;
219
- }
220
- await app.listen(listenPort);
221
- nestApp = app;
222
- if ((0, local_api_quiet_util_1.isLocalApiQuiet)()) {
223
- const dbType = String(configService.get('DB_TYPE') || 'mysql').toLowerCase();
224
- console.log(`[ReactPress] Local API ready · ${dbType === 'sqlite' ? 'SQLite' : dbType} · http://127.0.0.1:${listenPort}${listenPrefix}/health`);
225
- }
226
- else {
227
- console.log(`[ReactPress] Application started on http://localhost:${listenPort}`);
228
- console.log(`[ReactPress] API Documentation available at http://localhost:${listenPort}/api`);
229
- }
60
+ const configuredPort = configService.get('SERVER_PORT', 3002);
61
+ await app.listen(configuredPort);
62
+ console.log(`[ReactPress] Application started on http://localhost:${configuredPort}`);
63
+ console.log(`[ReactPress] API Documentation available at http://localhost:${configuredPort}/api`);
230
64
  return app;
231
65
  }
232
66
  catch (error) {
233
67
  console.error('[ReactPress] Failed to start application:', error);
234
68
  if (error.code === 'EADDRINUSE') {
235
- const port = Number(process.env.SERVER_PORT || 3002);
236
- const prefix = process.env.SERVER_API_PREFIX || '/api';
237
- if (process.env.REACTPRESS_API_ENTRY === 'starter' && (await probeApiHealth(port, prefix))) {
238
- console.log(`[ReactPress] Port :${port} in use but API healthy — treating watch reload as success`);
239
- return null;
240
- }
241
69
  console.error('[ReactPress] Port is already in use. Please check for other running instances.');
242
70
  console.error('[ReactPress] You can change the port in your .env file or terminate the conflicting process.');
243
71
  }
@@ -245,28 +73,12 @@ async function bootstrap() {
245
73
  }
246
74
  }
247
75
  exports.bootstrap = bootstrap;
248
- async function shutdownNest(signal) {
249
- console.log(`\n[ReactPress] Received ${signal}, shutting down…`);
250
- if (nestApp) {
251
- try {
252
- await nestApp.close();
253
- }
254
- catch (_a) {
255
- }
256
- nestApp = null;
257
- }
258
- process.exit(0);
259
- }
260
76
  process.on('SIGINT', () => {
261
- void shutdownNest('SIGINT');
77
+ console.log('\n[ReactPress] Application shutting down gracefully...');
78
+ process.exit(0);
262
79
  });
263
80
  process.on('SIGTERM', () => {
264
- void shutdownNest('SIGTERM');
81
+ console.log('\n[ReactPress] Application shutting down gracefully...');
82
+ process.exit(0);
265
83
  });
266
- if (require.main === module) {
267
- bootstrap().catch((err) => {
268
- console.error('[ReactPress] Failed to start:', err);
269
- process.exit(1);
270
- });
271
- }
272
84
  //# sourceMappingURL=starter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"starter.js","sourceRoot":"","sources":["../src/starter.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,uCAA2C;AAC3C,6CAAiE;AACjE,0CAA0C;AAC1C,2CAA2C;AAC3C,mCAAmC;AACnC,gDAAgD;AAChD,iCAAiC;AACjC,6BAA6B;AAC7B,2BAA2B;AAC3B,2BAAgC;AAChC,+BAA4B;AAC5B,mDAAoE;AAEpE,6CAAyC;AACzC,wDAA+C;AAC/C,2EAAsE;AACtE,gFAA4E;AAC5E,iEAA+D;AAC/D,uEAA+D;AAE/D,IAAI,OAAO,GAA4B,IAAI,CAAC;AAE5C,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;YACpE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;YAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,IAAK,MAAiB,IAAI,UAAU,IAAK,MAAiB,CAAC,EAAE;QAChH,OAAO,MAAiC,CAAC;KAC1C;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAuC;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;QAC7D,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;KAC7D;IACD,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAM,GAAG,MAAM;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CACtB;YACE,QAAQ,EAAE,WAAW;YACrB,IAAI;YACJ,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS;YAC3C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI;SACd,EACD,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;gBACnB,IAAI,IAAI,CAAC,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;oBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO;iBACR;gBACD,IAAI;oBACF,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzD,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;iBACxC;gBAAC,WAAM;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,SAAS;;IAC7B,IAAA,sCAAkB,GAAE,CAAC;IACrB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAC;IAElE,IACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS;QAC9C,CAAC,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC,MAAM,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,EACjD;QACA,OAAO,CAAC,GAAG,CAAC,wCAAwC,cAAc,uCAAuC,CAAC,CAAC;QAC3G,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,IAAI,OAAO,EAAE;YACX,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;SAChB;QAED,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,EAAE;YAC9C,MAAM,EAAE,IAAA,sCAAe,GAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1D,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAE5E,GAAG,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;YAClF,MAAM,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,4CAA4C,CAAC,CAAC;YACxH,IACE,CAAS,4BAA4B,CAAC;gBACpC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;gBAC1B,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,gBAAgB,EAAE,CAAC,SAAS,CAAC;aAC9B,CAAC,EACF;gBACA,IAAI,EAAE,CAAC;gBACP,OAAO;aACR;YACD,GAAG,CAAC,QAAQ,CACV,GAAG,EACH,uBAAuB,CAAC;gBACtB,UAAU,EAAE,UAAU;gBACtB,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aACzE,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5F,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE/B,GAAG,CAAC,GAAG,CACL,SAAS,CAAC;YACR,QAAQ,EAAE,EAAE,GAAG,IAAI;YACnB,GAAG,EAAE,KAAK;SACX,CAAC,CACH,CAAC;QAEF,GAAG,CAAC,GAAG,CACL,GAAG,SAAS,aAAa,EACzB,SAAS,CAAC;YACR,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACxB,GAAG,EAAE,CAAC;YACN,sBAAsB,EAAE,IAAI;YAC5B,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,OAAO,CAAC,IAAI,EAAE,GAAG;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,UAAU,EAAE,GAAG;oBACf,GAAG,EAAE,qBAAM,CAAC,uBAAuB;oBACnC,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,0CAAE,IAAI,EAAE,CAAC;QAC5D,IAAI,SAAS,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE;YACtC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;SACvD;QACD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAU,EAAE;YACtE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE;gBACxB,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAqB,EAAE,GAAqB,EAAE,EAAE;oBACnE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;aACJ;SACF;QAED,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC,GAAG,CACL,MAAM,CAAC;YACL,qBAAqB,EAAE;gBACrB,UAAU,EAAE;oBACV,UAAU,EAAE,CAAC,QAAQ,CAAC;oBACtB,SAAS,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACxC,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACvC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;oBACpC,UAAU,EAAE,CAAC,QAAQ,CAAC;oBACtB,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,SAAS,EAAE,CAAC,QAAQ,CAAC;oBACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC;oBACpB,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACrB;aACF;SACF,CAAC,CACH,CAAC;QACF,GAAG,CAAC,qBAAqB,CAAC,IAAI,4CAAoB,EAAE,CAAC,CAAC;QACtD,GAAG,CAAC,gBAAgB,CAAC,IAAI,2CAAmB,EAAE,CAAC,CAAC;QAChD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAGlE,MAAM,aAAa,GAAG,IAAI,yBAAe,EAAE;aACxC,QAAQ,CAAC,8BAA8B,CAAC;aACxC,cAAc,CACb,uGAAuG,CACxG;aACA,UAAU,CAAC,KAAK,CAAC;aACjB,UAAU,CAAC,iBAAiB,EAAE,2CAA2C,EAAE,mBAAmB,CAAC;aAC/F,UAAU,CAAC,KAAK,EAAE,6DAA6D,CAAC;aAChF,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,EAAE,YAAY,CAAC;aACtF,KAAK,EAAE,CAAC;QAEX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAGlE,MAAM,KAAK,GAAG,IAAI,6BAAY,EAAE,CAAC;QAGjC,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,qCAAoB,CAAC,QAAQ,CAAC;YACzD,eAAe,EAAE,8BAA8B;YAC/C,aAAa,EAAE,qBAAqB;YACpC,cAAc,EAAE;gBACd,YAAY,EAAE,MAAM;gBACpB,MAAM,EAAE,IAAI;gBACZ,mBAAmB,EAAE,IAAI;gBACzB,oBAAoB,EAAE,IAAI;gBAC1B,kBAAkB,EAAE,IAAI;gBACxB,gBAAgB,EAAE,QAAQ;gBAC1B,UAAU,EAAE,OAAO;aACpB;YACD,YAAY,EAAE,4BAA4B;SAC3C,CAAC;QAGF,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;QAE/E,IACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS;YAC9C,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,EAChD;YACA,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,8CAA8C,CAAC,CAAC;YAC9G,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,OAAO,GAAG,GAAG,CAAC;QACd,IAAI,IAAA,sCAAe,GAAE,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7E,OAAO,CAAC,GAAG,CACT,kCAAkC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,uBAAuB,UAAU,GAAG,YAAY,SAAS,CACnI,CAAC;SACH;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,wDAAwD,UAAU,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,gEAAgE,UAAU,MAAM,CAAC,CAAC;SAC/F;QAED,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QAElE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC;YACvD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE;gBAC1F,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,4DAA4D,CAAC,CAAC;gBACpG,OAAO,IAAI,CAAC;aACb;YACD,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAChG,OAAO,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;SAC/G;QAED,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAtMD,8BAsMC;AAED,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,kBAAkB,CAAC,CAAC;IACjE,IAAI,OAAO,EAAE;QACX,IAAI;YACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;SACvB;QAAC,WAAM;SAEP;QACD,OAAO,GAAG,IAAI,CAAC;KAChB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"starter.js","sourceRoot":"","sources":["../src/starter.ts"],"names":[],"mappings":"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"}