@fecommunity/reactpress 3.0.3 → 3.0.4
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.
- package/bin/reactpress.js +127 -20
- package/dist/index.js +0 -0
- package/lib/build.js +25 -9
- package/lib/db-backup.js +21 -0
- package/lib/dev-banner.js +42 -10
- package/lib/dev.js +48 -29
- package/lib/docker.js +162 -44
- package/lib/doctor.js +71 -15
- package/lib/http.js +39 -4
- package/lib/i18n/strings.js +297 -40
- package/lib/lifecycle.js +43 -2
- package/lib/nginx.js +342 -0
- package/lib/project-type.js +72 -0
- package/lib/publish.js +46 -30
- package/lib/status.js +69 -45
- package/package.json +5 -6
- package/server/dist/dist/app.module.d.ts +2 -0
- package/server/dist/dist/app.module.js +105 -0
- package/server/dist/dist/app.module.js.map +1 -0
- package/server/dist/dist/common/api-messages.d.ts +32 -0
- package/server/dist/dist/common/api-messages.js +36 -0
- package/server/dist/dist/common/api-messages.js.map +1 -0
- package/server/dist/dist/filters/http-exception.filter.d.ts +4 -0
- package/server/dist/dist/filters/http-exception.filter.js +36 -0
- package/server/dist/dist/filters/http-exception.filter.js.map +1 -0
- package/server/dist/dist/generate-swagger.d.ts +1 -0
- package/server/dist/dist/generate-swagger.js +73 -0
- package/server/dist/dist/generate-swagger.js.map +1 -0
- package/server/dist/dist/interceptors/transform.interceptor.d.ts +9 -0
- package/server/dist/dist/interceptors/transform.interceptor.js +36 -0
- package/server/dist/dist/interceptors/transform.interceptor.js.map +1 -0
- package/server/dist/dist/logger/index.d.ts +4 -0
- package/server/dist/dist/logger/index.js +33 -0
- package/server/dist/dist/logger/index.js.map +1 -0
- package/server/dist/dist/main.d.ts +6 -0
- package/server/dist/dist/main.js +263 -0
- package/server/dist/dist/main.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.controller.d.ts +14 -0
- package/server/dist/dist/modules/api-key/api-key.controller.js +63 -0
- package/server/dist/dist/modules/api-key/api-key.controller.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.entity.d.ts +11 -0
- package/server/dist/dist/modules/api-key/api-key.entity.js +63 -0
- package/server/dist/dist/modules/api-key/api-key.entity.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.guard.d.ts +7 -0
- package/server/dist/dist/modules/api-key/api-key.guard.js +40 -0
- package/server/dist/dist/modules/api-key/api-key.guard.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.module.d.ts +2 -0
- package/server/dist/dist/modules/api-key/api-key.module.js +28 -0
- package/server/dist/dist/modules/api-key/api-key.module.js.map +1 -0
- package/server/dist/dist/modules/api-key/api-key.service.d.ts +15 -0
- package/server/dist/dist/modules/api-key/api-key.service.js +81 -0
- package/server/dist/dist/modules/api-key/api-key.service.js.map +1 -0
- package/server/dist/dist/modules/article/article-revision.entity.d.ts +11 -0
- package/server/dist/dist/modules/article/article-revision.entity.js +53 -0
- package/server/dist/dist/modules/article/article-revision.entity.js.map +1 -0
- package/server/dist/dist/modules/article/article.controller.d.ts +32 -0
- package/server/dist/dist/modules/article/article.controller.js +242 -0
- package/server/dist/dist/modules/article/article.controller.js.map +1 -0
- package/server/dist/dist/modules/article/article.entity.d.ts +24 -0
- package/server/dist/dist/modules/article/article.entity.js +133 -0
- package/server/dist/dist/modules/article/article.entity.js.map +1 -0
- package/server/dist/dist/modules/article/article.module.d.ts +2 -0
- package/server/dist/dist/modules/article/article.module.js +42 -0
- package/server/dist/dist/modules/article/article.module.js.map +1 -0
- package/server/dist/dist/modules/article/article.service.d.ts +38 -0
- package/server/dist/dist/modules/article/article.service.js +357 -0
- package/server/dist/dist/modules/article/article.service.js.map +1 -0
- package/server/dist/dist/modules/article/article.util.d.ts +1 -0
- package/server/dist/dist/modules/article/article.util.js +9 -0
- package/server/dist/dist/modules/article/article.util.js.map +1 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.d.ts +13 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.js +65 -0
- package/server/dist/dist/modules/article/scheduled-publish.service.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.controller.d.ts +12 -0
- package/server/dist/dist/modules/auth/auth.controller.js +66 -0
- package/server/dist/dist/modules/auth/auth.controller.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.module.d.ts +2 -0
- package/server/dist/dist/modules/auth/auth.module.js +41 -0
- package/server/dist/dist/modules/auth/auth.module.js.map +1 -0
- package/server/dist/dist/modules/auth/auth.service.d.ts +26 -0
- package/server/dist/dist/modules/auth/auth.service.js +128 -0
- package/server/dist/dist/modules/auth/auth.service.js.map +1 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.d.ts +7 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.js +30 -0
- package/server/dist/dist/modules/auth/jwt-auth.guard.js.map +1 -0
- package/server/dist/dist/modules/auth/jwt.strategy.d.ts +9 -0
- package/server/dist/dist/modules/auth/jwt.strategy.js +39 -0
- package/server/dist/dist/modules/auth/jwt.strategy.js.map +1 -0
- package/server/dist/dist/modules/auth/roles.guard.d.ts +10 -0
- package/server/dist/dist/modules/auth/roles.guard.js +46 -0
- package/server/dist/dist/modules/auth/roles.guard.js.map +1 -0
- package/server/dist/dist/modules/category/category.controller.d.ts +11 -0
- package/server/dist/dist/modules/category/category.controller.js +91 -0
- package/server/dist/dist/modules/category/category.controller.js.map +1 -0
- package/server/dist/dist/modules/category/category.entity.d.ts +9 -0
- package/server/dist/dist/modules/category/category.entity.js +60 -0
- package/server/dist/dist/modules/category/category.entity.js.map +1 -0
- package/server/dist/dist/modules/category/category.module.d.ts +2 -0
- package/server/dist/dist/modules/category/category.module.js +27 -0
- package/server/dist/dist/modules/category/category.module.js.map +1 -0
- package/server/dist/dist/modules/category/category.service.d.ts +12 -0
- package/server/dist/dist/modules/category/category.service.js +90 -0
- package/server/dist/dist/modules/category/category.service.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.controller.d.ts +12 -0
- package/server/dist/dist/modules/comment/comment.controller.js +100 -0
- package/server/dist/dist/modules/comment/comment.controller.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.entity.d.ts +17 -0
- package/server/dist/dist/modules/comment/comment.entity.js +104 -0
- package/server/dist/dist/modules/comment/comment.entity.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.module.d.ts +2 -0
- package/server/dist/dist/modules/comment/comment.module.js +39 -0
- package/server/dist/dist/modules/comment/comment.module.js.map +1 -0
- package/server/dist/dist/modules/comment/comment.service.d.ts +26 -0
- package/server/dist/dist/modules/comment/comment.service.js +182 -0
- package/server/dist/dist/modules/comment/comment.service.js.map +1 -0
- package/server/dist/dist/modules/comment/html.d.ts +15 -0
- package/server/dist/dist/modules/comment/html.js +632 -0
- package/server/dist/dist/modules/comment/html.js.map +1 -0
- package/server/dist/dist/modules/file/file.controller.d.ts +10 -0
- package/server/dist/dist/modules/file/file.controller.js +84 -0
- package/server/dist/dist/modules/file/file.controller.js.map +1 -0
- package/server/dist/dist/modules/file/file.entity.d.ts +9 -0
- package/server/dist/dist/modules/file/file.entity.js +60 -0
- package/server/dist/dist/modules/file/file.entity.js.map +1 -0
- package/server/dist/dist/modules/file/file.module.d.ts +2 -0
- package/server/dist/dist/modules/file/file.module.js +27 -0
- package/server/dist/dist/modules/file/file.module.js.map +1 -0
- package/server/dist/dist/modules/file/file.service.d.ts +17 -0
- package/server/dist/dist/modules/file/file.service.js +111 -0
- package/server/dist/dist/modules/file/file.service.js.map +1 -0
- package/server/dist/dist/modules/health/health.controller.d.ts +11 -0
- package/server/dist/dist/modules/health/health.controller.js +57 -0
- package/server/dist/dist/modules/health/health.controller.js.map +1 -0
- package/server/dist/dist/modules/health/health.module.d.ts +2 -0
- package/server/dist/dist/modules/health/health.module.js +20 -0
- package/server/dist/dist/modules/health/health.module.js.map +1 -0
- package/server/dist/dist/modules/install/install.controller.d.ts +11 -0
- package/server/dist/dist/modules/install/install.controller.js +49 -0
- package/server/dist/dist/modules/install/install.controller.js.map +1 -0
- package/server/dist/dist/modules/install/install.module.d.ts +2 -0
- package/server/dist/dist/modules/install/install.module.js +26 -0
- package/server/dist/dist/modules/install/install.module.js.map +1 -0
- package/server/dist/dist/modules/install/install.service.d.ts +12 -0
- package/server/dist/dist/modules/install/install.service.js +63 -0
- package/server/dist/dist/modules/install/install.service.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.d.ts +14 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.js +128 -0
- package/server/dist/dist/modules/knowledge/knowledge.controller.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.d.ts +18 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.js +109 -0
- package/server/dist/dist/modules/knowledge/knowledge.entity.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.d.ts +2 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.js +27 -0
- package/server/dist/dist/modules/knowledge/knowledge.module.js.map +1 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.d.ts +14 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.js +144 -0
- package/server/dist/dist/modules/knowledge/knowledge.service.js.map +1 -0
- package/server/dist/dist/modules/page/page.controller.d.ts +12 -0
- package/server/dist/dist/modules/page/page.controller.js +102 -0
- package/server/dist/dist/modules/page/page.controller.js.map +1 -0
- package/server/dist/dist/modules/page/page.entity.d.ts +15 -0
- package/server/dist/dist/modules/page/page.entity.js +94 -0
- package/server/dist/dist/modules/page/page.entity.js.map +1 -0
- package/server/dist/dist/modules/page/page.module.d.ts +2 -0
- package/server/dist/dist/modules/page/page.module.js +27 -0
- package/server/dist/dist/modules/page/page.module.js.map +1 -0
- package/server/dist/dist/modules/page/page.service.d.ts +12 -0
- package/server/dist/dist/modules/page/page.service.js +98 -0
- package/server/dist/dist/modules/page/page.service.js.map +1 -0
- package/server/dist/dist/modules/search/search.controller.d.ts +8 -0
- package/server/dist/dist/modules/search/search.controller.js +67 -0
- package/server/dist/dist/modules/search/search.controller.js.map +1 -0
- package/server/dist/dist/modules/search/search.entity.d.ts +8 -0
- package/server/dist/dist/modules/search/search.entity.js +59 -0
- package/server/dist/dist/modules/search/search.entity.js.map +1 -0
- package/server/dist/dist/modules/search/search.module.d.ts +2 -0
- package/server/dist/dist/modules/search/search.module.js +27 -0
- package/server/dist/dist/modules/search/search.module.js.map +1 -0
- package/server/dist/dist/modules/search/search.service.d.ts +12 -0
- package/server/dist/dist/modules/search/search.service.js +84 -0
- package/server/dist/dist/modules/search/search.service.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.constant.d.ts +3 -0
- package/server/dist/dist/modules/setting/setting.constant.js +25 -0
- package/server/dist/dist/modules/setting/setting.constant.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.controller.d.ts +12 -0
- package/server/dist/dist/modules/setting/setting.controller.js +77 -0
- package/server/dist/dist/modules/setting/setting.controller.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.entity.d.ts +26 -0
- package/server/dist/dist/modules/setting/setting.entity.js +149 -0
- package/server/dist/dist/modules/setting/setting.entity.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.module.d.ts +2 -0
- package/server/dist/dist/modules/setting/setting.module.js +28 -0
- package/server/dist/dist/modules/setting/setting.module.js.map +1 -0
- package/server/dist/dist/modules/setting/setting.service.d.ts +10 -0
- package/server/dist/dist/modules/setting/setting.service.js +106 -0
- package/server/dist/dist/modules/setting/setting.service.js.map +1 -0
- package/server/dist/dist/modules/smtp/mail.util.d.ts +6 -0
- package/server/dist/dist/modules/smtp/mail.util.js +33 -0
- package/server/dist/dist/modules/smtp/mail.util.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.controller.d.ts +9 -0
- package/server/dist/dist/modules/smtp/smtp.controller.js +69 -0
- package/server/dist/dist/modules/smtp/smtp.controller.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.entity.d.ts +9 -0
- package/server/dist/dist/modules/smtp/smtp.entity.js +60 -0
- package/server/dist/dist/modules/smtp/smtp.entity.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.module.d.ts +2 -0
- package/server/dist/dist/modules/smtp/smtp.module.js +28 -0
- package/server/dist/dist/modules/smtp/smtp.module.js.map +1 -0
- package/server/dist/dist/modules/smtp/smtp.service.d.ts +11 -0
- package/server/dist/dist/modules/smtp/smtp.service.js +83 -0
- package/server/dist/dist/modules/smtp/smtp.service.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.controller.d.ts +12 -0
- package/server/dist/dist/modules/tag/tag.controller.js +101 -0
- package/server/dist/dist/modules/tag/tag.controller.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.entity.d.ts +9 -0
- package/server/dist/dist/modules/tag/tag.entity.js +59 -0
- package/server/dist/dist/modules/tag/tag.entity.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.module.d.ts +2 -0
- package/server/dist/dist/modules/tag/tag.module.js +27 -0
- package/server/dist/dist/modules/tag/tag.module.js.map +1 -0
- package/server/dist/dist/modules/tag/tag.service.d.ts +13 -0
- package/server/dist/dist/modules/tag/tag.service.js +104 -0
- package/server/dist/dist/modules/tag/tag.service.js.map +1 -0
- package/server/dist/dist/modules/user/user.controller.d.ts +13 -0
- package/server/dist/dist/modules/user/user.controller.js +115 -0
- package/server/dist/dist/modules/user/user.controller.js.map +1 -0
- package/server/dist/dist/modules/user/user.entity.d.ts +15 -0
- package/server/dist/dist/modules/user/user.entity.js +96 -0
- package/server/dist/dist/modules/user/user.entity.js.map +1 -0
- package/server/dist/dist/modules/user/user.module.d.ts +2 -0
- package/server/dist/dist/modules/user/user.module.js +28 -0
- package/server/dist/dist/modules/user/user.module.js.map +1 -0
- package/server/dist/dist/modules/user/user.service.d.ts +16 -0
- package/server/dist/dist/modules/user/user.service.js +152 -0
- package/server/dist/dist/modules/user/user.service.js.map +1 -0
- package/server/dist/dist/modules/view/view.controller.d.ts +11 -0
- package/server/dist/dist/modules/view/view.controller.js +92 -0
- package/server/dist/dist/modules/view/view.controller.js.map +1 -0
- package/server/dist/dist/modules/view/view.entity.d.ts +14 -0
- package/server/dist/dist/modules/view/view.entity.js +88 -0
- package/server/dist/dist/modules/view/view.entity.js.map +1 -0
- package/server/dist/dist/modules/view/view.module.d.ts +2 -0
- package/server/dist/dist/modules/view/view.module.js +27 -0
- package/server/dist/dist/modules/view/view.module.js.map +1 -0
- package/server/dist/dist/modules/view/view.service.d.ts +11 -0
- package/server/dist/dist/modules/view/view.service.js +89 -0
- package/server/dist/dist/modules/view/view.service.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.controller.d.ts +12 -0
- package/server/dist/dist/modules/webhook/webhook.controller.js +63 -0
- package/server/dist/dist/modules/webhook/webhook.controller.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.entity.d.ts +9 -0
- package/server/dist/dist/modules/webhook/webhook.entity.js +54 -0
- package/server/dist/dist/modules/webhook/webhook.entity.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.module.d.ts +2 -0
- package/server/dist/dist/modules/webhook/webhook.module.js +27 -0
- package/server/dist/dist/modules/webhook/webhook.module.js.map +1 -0
- package/server/dist/dist/modules/webhook/webhook.service.d.ts +16 -0
- package/server/dist/dist/modules/webhook/webhook.service.js +97 -0
- package/server/dist/dist/modules/webhook/webhook.service.js.map +1 -0
- package/server/dist/dist/public/favicon.png +0 -0
- package/server/dist/dist/public/index.html +439 -0
- package/server/dist/dist/public/swagger/custom.css +11 -0
- package/server/dist/dist/starter.d.ts +1 -0
- package/server/dist/dist/starter.js +84 -0
- package/server/dist/dist/starter.js.map +1 -0
- package/server/dist/dist/tsconfig.build.tsbuildinfo +16966 -0
- package/server/dist/dist/utils/date.util.d.ts +1 -0
- package/server/dist/dist/utils/date.util.js +13 -0
- package/server/dist/dist/utils/date.util.js.map +1 -0
- package/server/dist/dist/utils/ip.util.d.ts +2 -0
- package/server/dist/dist/utils/ip.util.js +27 -0
- package/server/dist/dist/utils/ip.util.js.map +1 -0
- package/server/dist/dist/utils/markdown.util.d.ts +4 -0
- package/server/dist/dist/utils/markdown.util.js +42 -0
- package/server/dist/dist/utils/markdown.util.js.map +1 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.d.ts +6 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.js +28 -0
- package/server/dist/dist/utils/oss/aliyun-oss-client.js.map +1 -0
- package/server/dist/dist/utils/oss/oss-client.d.ts +6 -0
- package/server/dist/dist/utils/oss/oss-client.js +10 -0
- package/server/dist/dist/utils/oss/oss-client.js.map +1 -0
- package/server/dist/dist/utils/oss.util.d.ts +13 -0
- package/server/dist/dist/utils/oss.util.js +49 -0
- package/server/dist/dist/utils/oss.util.js.map +1 -0
- package/server/dist/dist/utils/ua.util.d.ts +9 -0
- package/server/dist/dist/utils/ua.util.js +36 -0
- package/server/dist/dist/utils/ua.util.js.map +1 -0
- package/server/dist/dist/utils/uniqueid.util.d.ts +1 -0
- package/server/dist/dist/utils/uniqueid.util.js +9 -0
- package/server/dist/dist/utils/uniqueid.util.js.map +1 -0
- package/server/dist/dist/utils/upload.util.d.ts +5 -0
- package/server/dist/dist/utils/upload.util.js +34 -0
- package/server/dist/dist/utils/upload.util.js.map +1 -0
- package/server/dist/dist/utils/user.util.d.ts +1 -0
- package/server/dist/dist/utils/user.util.js +18 -0
- package/server/dist/dist/utils/user.util.js.map +1 -0
- package/server/logs/error/error.log.-2026-05-19.log +123 -0
- package/server/node_modules/@nestjs/cli/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/@nestjs/cli/node_modules/typescript/bin/tsc +0 -0
- package/server/node_modules/@nestjs/cli/node_modules/typescript/bin/tsserver +0 -0
- package/server/node_modules/@nestjs/common/node_modules/axios/README.md +0 -0
- package/server/node_modules/@nestjs/common/node_modules/axios/lib/adapters/http.js +0 -0
- package/server/node_modules/@nestjs/config/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/@nestjs/platform-express/node_modules/mime/cli.js +0 -0
- package/server/node_modules/@nestjs/platform-express/node_modules/mime/src/build.js +0 -0
- package/server/node_modules/@nestjs/typeorm/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/@nuxtjs/opencollective/bin/opencollective.js +0 -0
- package/server/node_modules/@pm2/agent/node_modules/dayjs/plugin/objectSupport.d.ts +0 -0
- package/server/node_modules/@pm2/agent/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/@pm2/io/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/@types/node/LICENSE +0 -0
- package/server/node_modules/@types/node/README.md +0 -0
- package/server/node_modules/@types/node/assert.d.ts +0 -0
- package/server/node_modules/@types/node/async_hooks.d.ts +0 -0
- package/server/node_modules/@types/node/buffer.d.ts +0 -0
- package/server/node_modules/@types/node/child_process.d.ts +0 -0
- package/server/node_modules/@types/node/cluster.d.ts +0 -0
- package/server/node_modules/@types/node/console.d.ts +0 -0
- package/server/node_modules/@types/node/constants.d.ts +0 -0
- package/server/node_modules/@types/node/crypto.d.ts +0 -0
- package/server/node_modules/@types/node/dgram.d.ts +0 -0
- package/server/node_modules/@types/node/dns.d.ts +0 -0
- package/server/node_modules/@types/node/domain.d.ts +0 -0
- package/server/node_modules/@types/node/events.d.ts +0 -0
- package/server/node_modules/@types/node/fs.d.ts +0 -0
- package/server/node_modules/@types/node/globals.d.ts +0 -0
- package/server/node_modules/@types/node/globals.global.d.ts +0 -0
- package/server/node_modules/@types/node/http.d.ts +0 -0
- package/server/node_modules/@types/node/http2.d.ts +0 -0
- package/server/node_modules/@types/node/https.d.ts +0 -0
- package/server/node_modules/@types/node/index.d.ts +0 -0
- package/server/node_modules/@types/node/inspector.d.ts +0 -0
- package/server/node_modules/@types/node/module.d.ts +0 -0
- package/server/node_modules/@types/node/net.d.ts +0 -0
- package/server/node_modules/@types/node/os.d.ts +0 -0
- package/server/node_modules/@types/node/package.json +0 -0
- package/server/node_modules/@types/node/path.d.ts +0 -0
- package/server/node_modules/@types/node/perf_hooks.d.ts +0 -0
- package/server/node_modules/@types/node/process.d.ts +0 -0
- package/server/node_modules/@types/node/punycode.d.ts +0 -0
- package/server/node_modules/@types/node/querystring.d.ts +0 -0
- package/server/node_modules/@types/node/readline.d.ts +0 -0
- package/server/node_modules/@types/node/repl.d.ts +0 -0
- package/server/node_modules/@types/node/stream.d.ts +0 -0
- package/server/node_modules/@types/node/string_decoder.d.ts +0 -0
- package/server/node_modules/@types/node/timers.d.ts +0 -0
- package/server/node_modules/@types/node/tls.d.ts +0 -0
- package/server/node_modules/@types/node/trace_events.d.ts +0 -0
- package/server/node_modules/@types/node/tty.d.ts +0 -0
- package/server/node_modules/@types/node/url.d.ts +0 -0
- package/server/node_modules/@types/node/util.d.ts +0 -0
- package/server/node_modules/@types/node/v8.d.ts +0 -0
- package/server/node_modules/@types/node/vm.d.ts +0 -0
- package/server/node_modules/@types/node/wasi.d.ts +0 -0
- package/server/node_modules/@types/node/worker_threads.d.ts +0 -0
- package/server/node_modules/@types/node/zlib.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/LICENSE +0 -0
- package/server/node_modules/@types/zen-observable/README.md +0 -0
- package/server/node_modules/@types/zen-observable/esm.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/extras.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/index.d.ts +0 -0
- package/server/node_modules/@types/zen-observable/package.json +0 -0
- package/server/node_modules/ajv/scripts/info +0 -0
- package/server/node_modules/ajv/scripts/prepare-tests +0 -0
- package/server/node_modules/ajv/scripts/publish-built-version +0 -0
- package/server/node_modules/ajv/scripts/travis-gh-pages +0 -0
- package/server/node_modules/arr-diff/LICENSE +0 -0
- package/server/node_modules/arr-flatten/LICENSE +0 -0
- package/server/node_modules/arr-flatten/README.md +0 -0
- package/server/node_modules/array-unique/LICENSE +0 -0
- package/server/node_modules/array-unique/README.md +0 -0
- package/server/node_modules/aws-ssl-profiles/package.json +0 -0
- package/server/node_modules/axios/README.md +0 -0
- package/server/node_modules/axios/lib/adapters/http.js +0 -0
- package/server/node_modules/blessed/bin/tput.js +0 -0
- package/server/node_modules/blessed/example/blessed-telnet.js +0 -0
- package/server/node_modules/blessed/example/multiplex.js +0 -0
- package/server/node_modules/blessed/example/ping +0 -0
- package/server/node_modules/blessed/example/time.js +0 -0
- package/server/node_modules/cacache/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/cli-color/bin/generate-color-images +0 -0
- package/server/node_modules/cli-color/test/__playground/throbber.formatted.js +0 -0
- package/server/node_modules/cli-color/test/__playground/throbber.js +0 -0
- package/server/node_modules/cli-highlight/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/cliui/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/constants-browserify/build.sh +0 -0
- package/server/node_modules/copy-concurrently/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/copyfiles/copyfiles +0 -0
- package/server/node_modules/copyfiles/index.js +0 -0
- package/server/node_modules/cross-env/README.md +0 -0
- package/server/node_modules/date-fns/esm/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousDay/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousFriday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousMonday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousSaturday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousSunday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousThursday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousTuesday/index.js +0 -0
- package/server/node_modules/date-fns/esm/previousWednesday/index.js +0 -0
- package/server/node_modules/date-fns/index.js +0 -0
- package/server/node_modules/date-fns/previousDay/index.js +0 -0
- package/server/node_modules/date-fns/previousFriday/index.js +0 -0
- package/server/node_modules/date-fns/previousMonday/index.js +0 -0
- package/server/node_modules/date-fns/previousSaturday/index.js +0 -0
- package/server/node_modules/date-fns/previousSunday/index.js +0 -0
- package/server/node_modules/date-fns/previousThursday/index.js +0 -0
- package/server/node_modules/date-fns/previousTuesday/index.js +0 -0
- package/server/node_modules/date-fns/previousWednesday/index.js +0 -0
- package/server/node_modules/dayjs/plugin/arraySupport.d.ts +0 -0
- package/server/node_modules/dayjs/plugin/objectSupport.d.ts +0 -0
- package/server/node_modules/default-user-agent/node_modules/os-name/cli.js +0 -0
- package/server/node_modules/degenerator/node_modules/escodegen/bin/escodegen.js +0 -0
- package/server/node_modules/degenerator/node_modules/escodegen/bin/esgenerate.js +0 -0
- package/server/node_modules/emojis-list/LICENSE.md +0 -0
- package/server/node_modules/emojis-list/README.md +0 -0
- package/server/node_modules/errno/build.js +0 -0
- package/server/node_modules/errno/cli.js +0 -0
- package/server/node_modules/es5-ext/_postinstall.js +0 -0
- package/server/node_modules/esprima/bin/esparse.js +0 -0
- package/server/node_modules/esprima/bin/esvalidate.js +0 -0
- package/server/node_modules/esrecurse/package.json +0 -0
- package/server/node_modules/execa/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/execa/node_modules/which/bin/which +0 -0
- package/server/node_modules/extrareqp2/README.md +0 -0
- package/server/node_modules/extrareqp2/lib/adapters/http.js +0 -0
- package/server/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/is-class-hotfix/.editorconfig +0 -0
- package/server/node_modules/is-class-hotfix/.gitattributes +0 -0
- package/server/node_modules/is-class-hotfix/CHANGELOG.md +0 -0
- package/server/node_modules/is-class-hotfix/LICENSE.md +0 -0
- package/server/node_modules/is-class-hotfix/README.md +0 -0
- package/server/node_modules/is-class-hotfix/bower.json +0 -0
- package/server/node_modules/is-class-hotfix/is-class.js +0 -0
- package/server/node_modules/is-class-hotfix/package.json +0 -0
- package/server/node_modules/is-class-hotfix/test/is-class.js +0 -0
- package/server/node_modules/is-docker/cli.js +0 -0
- package/server/node_modules/js-yaml/bin/js-yaml.js +0 -0
- package/server/node_modules/jsonwebtoken/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/jstoxml/dist.sh +0 -0
- package/server/node_modules/log4js/lib/appenders/fileSync.js +0 -0
- package/server/node_modules/log4js/lib/connect-logger.js +0 -0
- package/server/node_modules/make-dir/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/micromatch/LICENSE +0 -0
- package/server/node_modules/miller-rabin/bin/miller-rabin +0 -0
- package/server/node_modules/mime/cli.js +0 -0
- package/server/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/move-concurrently/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/nan/tools/1to2.js +0 -0
- package/server/node_modules/needle/bin/needle +0 -0
- package/server/node_modules/node-libs-browser/node_modules/buffer/bin/download-node-tests.js +0 -0
- package/server/node_modules/node-libs-browser/node_modules/buffer/bin/update-authors.sh +0 -0
- package/server/node_modules/open/xdg-open +0 -0
- package/server/node_modules/osx-release/cli.js +0 -0
- package/server/node_modules/pm2/bin/pm2 +0 -0
- package/server/node_modules/pm2/bin/pm2-dev +0 -0
- package/server/node_modules/pm2/bin/pm2-docker +0 -0
- package/server/node_modules/pm2/bin/pm2-runtime +0 -0
- package/server/node_modules/pm2/lib/templates/init-scripts/openrc.tpl +0 -0
- package/server/node_modules/pm2/lib/tools/xdg-open +0 -0
- package/server/node_modules/pm2/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/pm2/pm2 +0 -0
- package/server/node_modules/pm2-deploy/deploy +0 -0
- package/server/node_modules/require-in-the-middle/node_modules/resolve/bin/resolve +0 -0
- package/server/node_modules/rimraf/bin.js +0 -0
- package/server/node_modules/segment/repl +0 -0
- package/server/node_modules/semver/bin/semver.js +0 -0
- package/server/node_modules/send/node_modules/mime/cli.js +0 -0
- package/server/node_modules/send/node_modules/mime/src/build.js +0 -0
- package/server/node_modules/sha.js/bin.js +0 -0
- package/server/node_modules/systeminformation/lib/cli.js +0 -0
- package/server/node_modules/terser/bin/terser +0 -0
- package/server/node_modules/terser/bin/uglifyjs +0 -0
- package/server/node_modules/tree-kill/cli.js +0 -0
- package/server/node_modules/tree-kill/index.js +0 -0
- package/server/node_modules/typeorm/cli.js +0 -0
- package/server/node_modules/typeorm/node_modules/mkdirp/bin/cmd.js +0 -0
- package/server/node_modules/typeorm/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/typeorm/node_modules/wrap-ansi/index.js +0 -0
- package/server/node_modules/ua-parser-js/script/cli.js +0 -0
- package/server/node_modules/ua-parser-js/src/ua-parser.js +0 -0
- package/server/node_modules/upath/LICENSE +0 -0
- package/server/node_modules/uri-js/LICENSE +0 -0
- package/server/node_modules/uri-js/README.md +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.d.ts +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.js +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.js.map +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.d.ts +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.js +0 -0
- package/server/node_modules/uri-js/dist/es5/uri.all.min.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/index.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-iri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/regexps-uri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/http.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/https.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/mailto.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/urn.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/ws.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/schemes/wss.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/uri.js.map +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.d.ts +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.js +0 -0
- package/server/node_modules/uri-js/dist/esnext/util.js.map +0 -0
- package/server/node_modules/uri-js/package.json +0 -0
- package/server/node_modules/uri-js/yarn.lock +0 -0
- package/server/node_modules/uuid/dist/bin/uuid +0 -0
- package/server/node_modules/webpack/node_modules/acorn/bin/acorn +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/info +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/prepare-tests +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/publish-built-version +0 -0
- package/server/node_modules/webpack/node_modules/ajv/scripts/travis-gh-pages +0 -0
- package/server/node_modules/which/bin/node-which +0 -0
- package/server/node_modules/win-release/node_modules/semver/bin/semver +0 -0
- package/server/node_modules/wrap-ansi/index.js +0 -0
- package/templates/nginx.dev.conf +57 -0
- package/templates/nginx.prod.conf +75 -0
- package/ui/banner.js +432 -13
- package/ui/interactive.js +248 -52
- package/ui/theme.js +250 -10
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>ReactPress › Installation</title>
|
|
7
|
+
<style>
|
|
8
|
+
/* 保持原有样式不变 */
|
|
9
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
10
|
+
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #f1f1f1; color: #444; line-height: 1.4; }
|
|
11
|
+
.wp-container { max-width: 600px; margin: 40px auto; background: #fff; border: 1px solid #ccd0d4; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }
|
|
12
|
+
.wp-header { background: #0073aa; color: #fff; padding: 24px; text-align: center; border-bottom: 1px solid #005a87; }
|
|
13
|
+
.wp-header h1 { font-size: 24px; font-weight: 400; margin-bottom: 8px; }
|
|
14
|
+
.wp-header p { font-size: 16px; opacity: 0.9; }
|
|
15
|
+
.wp-content { padding: 24px; }
|
|
16
|
+
.wp-step { display: none; }
|
|
17
|
+
.wp-step.active { display: block; }
|
|
18
|
+
.wp-step h2 { font-size: 22px; font-weight: 600; margin-bottom: 20px; color: #1d2327; }
|
|
19
|
+
.wp-description { background: #f0f6fc; border: 1px solid #c3e4f0; border-left: 4px solid #0073aa; padding: 12px 16px; margin-bottom: 20px; font-size: 14px; color: #0c4a6e; }
|
|
20
|
+
.wp-form-table { width: 100%; margin-bottom: 20px; }
|
|
21
|
+
.wp-form-table th { text-align: left; padding: 10px 0; width: 140px; vertical-align: top; font-weight: 600; color: #1d2327; }
|
|
22
|
+
.wp-form-table td { padding: 10px 0; }
|
|
23
|
+
.wp-form-table input[type="text"], .wp-form-table input[type="password"], .wp-form-table input[type="number"], .wp-form-table input[type="url"] { width: 100%; max-width: 320px; padding: 8px 12px; border: 1px solid #8c8f94; border-radius: 4px; font-size: 14px; line-height: 1.4; transition: border-color 0.15s ease-in-out; }
|
|
24
|
+
.wp-form-table input:focus { border-color: #0073aa; outline: 0; box-shadow: 0 0 0 1px #0073aa; }
|
|
25
|
+
.wp-form-table .description { font-size: 13px; color: #646970; margin-top: 4px; }
|
|
26
|
+
.wp-button { background: #0073aa; color: #fff; border: 1px solid #0073aa; padding: 8px 16px; font-size: 14px; font-weight: 600; border-radius: 3px; cursor: pointer; transition: all 0.15s ease-in-out; text-decoration: none; display: inline-block; }
|
|
27
|
+
.wp-button:hover { background: #005a87; border-color: #005a87; }
|
|
28
|
+
.wp-button:disabled { background: #f0f0f1; border-color: #dcdcde; color: #a7aaad; cursor: not-allowed; }
|
|
29
|
+
.wp-button.button-large { padding: 12px 24px; font-size: 16px; }
|
|
30
|
+
.wp-notice { border: 1px solid #c3c4c7; border-left-width: 4px; padding: 12px; margin: 16px 0; background: #fff; }
|
|
31
|
+
.wp-notice.notice-success { border-left-color: #00a32a; background: #f7fcf7; }
|
|
32
|
+
.wp-notice.notice-error { border-left-color: #d63638; background: #fcf2f2; }
|
|
33
|
+
.wp-notice p { margin: 0; font-size: 14px; }
|
|
34
|
+
.wp-progress { background: #f0f0f1; height: 4px; margin-bottom: 20px; }
|
|
35
|
+
.wp-progress-bar { background: #0073aa; height: 100%; transition: width 0.3s ease; }
|
|
36
|
+
.wp-loader { display: inline-block; width: 16px; height: 16px; border: 2px solid #f3f3f3; border-top: 2px solid #0073aa; border-radius: 50%; animation: wp-spin 1s linear infinite; margin-right: 8px; }
|
|
37
|
+
@keyframes wp-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
|
38
|
+
.wp-footer { background: #f6f7f7; border-top: 1px solid #c3c4c7; padding: 16px 24px; text-align: center; font-size: 13px; color: #646970; }
|
|
39
|
+
.text-center { text-align: center; }
|
|
40
|
+
.countdown-container { display: none; text-align: center; margin: 20px 0; }
|
|
41
|
+
.countdown-timer { font-weight: bold; color: #0073aa; }
|
|
42
|
+
|
|
43
|
+
/* 新增重试按钮样式 */
|
|
44
|
+
.retry-button {
|
|
45
|
+
background: #d63638;
|
|
46
|
+
color: white;
|
|
47
|
+
border: none;
|
|
48
|
+
padding: 8px 16px;
|
|
49
|
+
border-radius: 3px;
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
margin-top: 10px;
|
|
52
|
+
}
|
|
53
|
+
.retry-button:hover {
|
|
54
|
+
background: #b32d2e;
|
|
55
|
+
}
|
|
56
|
+
</style>
|
|
57
|
+
</head>
|
|
58
|
+
<body>
|
|
59
|
+
<div class="wp-container">
|
|
60
|
+
<div class="wp-header">
|
|
61
|
+
<h1>ReactPress</h1>
|
|
62
|
+
<p>5-Minute Installation</p>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="wp-progress">
|
|
66
|
+
<div class="wp-progress-bar" id="progressBar" style="width: 33%;"></div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div class="wp-content">
|
|
70
|
+
<!-- Step 1: Database Configuration -->
|
|
71
|
+
<div class="wp-step active" id="step1">
|
|
72
|
+
<h2>Database Connection Information</h2>
|
|
73
|
+
|
|
74
|
+
<div class="wp-description">
|
|
75
|
+
You should have this information available from your web hosting provider. If you don't have it, contact them before continuing.
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<table class="wp-form-table">
|
|
79
|
+
<tr>
|
|
80
|
+
<th><label for="dbHost">Database Host</label></th>
|
|
81
|
+
<td>
|
|
82
|
+
<input type="text" id="dbHost" value="127.0.0.1" />
|
|
83
|
+
<p class="description">Usually "localhost" or "127.0.0.1"</p>
|
|
84
|
+
</td>
|
|
85
|
+
</tr>
|
|
86
|
+
<tr>
|
|
87
|
+
<th><label for="dbPort">Database Port</label></th>
|
|
88
|
+
<td>
|
|
89
|
+
<input type="number" id="dbPort" value="3306" />
|
|
90
|
+
<p class="description">Default MySQL port is 3306</p>
|
|
91
|
+
</td>
|
|
92
|
+
</tr>
|
|
93
|
+
<tr>
|
|
94
|
+
<th><label for="dbUser">Username</label></th>
|
|
95
|
+
<td>
|
|
96
|
+
<input type="text" id="dbUser" value="" placeholder="Database username" />
|
|
97
|
+
<p class="description">Your MySQL username</p>
|
|
98
|
+
</td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<th><label for="dbPassword">Password</label></th>
|
|
102
|
+
<td>
|
|
103
|
+
<input type="password" id="dbPassword" value="" placeholder="Database password" />
|
|
104
|
+
<p class="description">Your MySQL password</p>
|
|
105
|
+
</td>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<th><label for="dbName">Database Name</label></th>
|
|
109
|
+
<td>
|
|
110
|
+
<input type="text" id="dbName" value="reactpress" />
|
|
111
|
+
<p class="description">The name of the database you want to use with ReactPress</p>
|
|
112
|
+
</td>
|
|
113
|
+
</tr>
|
|
114
|
+
</table>
|
|
115
|
+
|
|
116
|
+
<div id="dbResult"></div>
|
|
117
|
+
|
|
118
|
+
<p class="text-center">
|
|
119
|
+
<button class="wp-button button-large" onclick="testDatabase()" id="testBtn">
|
|
120
|
+
Test Database Connection
|
|
121
|
+
</button>
|
|
122
|
+
</p>
|
|
123
|
+
</div>
|
|
124
|
+
|
|
125
|
+
<!-- Step 2: Site Configuration -->
|
|
126
|
+
<div class="wp-step" id="step2">
|
|
127
|
+
<h2>Site Information</h2>
|
|
128
|
+
|
|
129
|
+
<div class="wp-description">
|
|
130
|
+
Please provide the following information. Don't worry, you can always change these settings later.
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<table class="wp-form-table">
|
|
134
|
+
<tr>
|
|
135
|
+
<th><label for="clientUrl">Client Site URL</label></th>
|
|
136
|
+
<td>
|
|
137
|
+
<input type="url" id="clientUrl" value="http://localhost:3001" />
|
|
138
|
+
<p class="description">The URL where your ReactPress frontend will be accessible</p>
|
|
139
|
+
</td>
|
|
140
|
+
</tr>
|
|
141
|
+
<tr>
|
|
142
|
+
<th><label for="serverUrl">API Server URL</label></th>
|
|
143
|
+
<td>
|
|
144
|
+
<input type="url" id="serverUrl" value="http://localhost:3002" />
|
|
145
|
+
<p class="description">The URL where your ReactPress API server will run</p>
|
|
146
|
+
</td>
|
|
147
|
+
</tr>
|
|
148
|
+
</table>
|
|
149
|
+
|
|
150
|
+
<div id="installResult"></div>
|
|
151
|
+
|
|
152
|
+
<p class="text-center">
|
|
153
|
+
<button class="wp-button button-large" onclick="installReactPress()" id="installBtn">
|
|
154
|
+
Install & Start ReactPress
|
|
155
|
+
</button>
|
|
156
|
+
</p>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<!-- Step 3: Success -->
|
|
160
|
+
<div class="wp-step" id="step3">
|
|
161
|
+
<h2>🎉 Installation Complete!</h2>
|
|
162
|
+
|
|
163
|
+
<div class="wp-notice notice-success">
|
|
164
|
+
<p><strong>ReactPress has been installed successfully!</strong></p>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<p>Your ReactPress server configuration has been saved. You can:</p>
|
|
168
|
+
|
|
169
|
+
<ul style="margin: 16px 0 16px 20px;">
|
|
170
|
+
<li>Close this browser window</li>
|
|
171
|
+
<li>Restart the server by running <code>npx @fecommunity/reactpress-server</code> in your terminal</li>
|
|
172
|
+
<li>Access your admin panel at <strong id="adminUrl">http://localhost:3001/admin</strong> (when client is running)</li>
|
|
173
|
+
</ul>
|
|
174
|
+
|
|
175
|
+
<!-- 重定向状态显示 -->
|
|
176
|
+
<div class="wp-notice" id="redirectStatus">
|
|
177
|
+
<p>Waiting for server to start...</p>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<div class="text-center">
|
|
181
|
+
<button class="wp-button" onclick="checkServerStatus()" id="checkStatusBtn">
|
|
182
|
+
Check Server Status
|
|
183
|
+
</button>
|
|
184
|
+
<button class="retry-button" onclick="retryRedirect()" id="retryBtn" style="display: none;">
|
|
185
|
+
Retry Connection
|
|
186
|
+
</button>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<div class="wp-description">
|
|
190
|
+
<strong>Note:</strong> To start the server with your new configuration, run <code>npx @fecommunity/reactpress-server</code> in your terminal.
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<div class="wp-footer">
|
|
196
|
+
<p>Need help? <a href="https://github.com/fecommunity/reactpress/issues" target="_blank">ReactPress Documentation</a></p>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
200
|
+
<script>
|
|
201
|
+
// State management
|
|
202
|
+
let currentStep = 1;
|
|
203
|
+
const totalSteps = 3;
|
|
204
|
+
let isTestingConnection = false;
|
|
205
|
+
let countdownInterval = null;
|
|
206
|
+
let serverUrl = 'http://localhost:3002';
|
|
207
|
+
let redirectAttempts = 0;
|
|
208
|
+
const maxRedirectAttempts = 30; // 30秒超时
|
|
209
|
+
|
|
210
|
+
// Update progress bar
|
|
211
|
+
function updateProgress() {
|
|
212
|
+
const progress = (currentStep / totalSteps) * 100;
|
|
213
|
+
document.getElementById('progressBar').style.width = progress + '%';
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Show a specific step
|
|
217
|
+
function showStep(step) {
|
|
218
|
+
document.querySelectorAll('.wp-step').forEach(s => s.classList.remove('active'));
|
|
219
|
+
document.getElementById('step' + step).classList.add('active');
|
|
220
|
+
currentStep = step;
|
|
221
|
+
updateProgress();
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Show a notice message
|
|
225
|
+
function showNotice(message, type = 'error', containerId = 'dbResult') {
|
|
226
|
+
const container = document.getElementById(containerId);
|
|
227
|
+
container.innerHTML = `
|
|
228
|
+
<div class="wp-notice notice-${type}">
|
|
229
|
+
<p>${message}</p>
|
|
230
|
+
</div>
|
|
231
|
+
`;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// 检查服务器状态
|
|
235
|
+
async function checkServerStatus() {
|
|
236
|
+
const statusElement = document.getElementById('redirectStatus');
|
|
237
|
+
const checkBtn = document.getElementById('checkStatusBtn');
|
|
238
|
+
const retryBtn = document.getElementById('retryBtn');
|
|
239
|
+
|
|
240
|
+
statusElement.innerHTML = '<p>Checking server status...</p>';
|
|
241
|
+
statusElement.className = 'wp-notice';
|
|
242
|
+
checkBtn.disabled = true;
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
const response = await fetch(`${serverUrl}/api`, {
|
|
246
|
+
method: 'GET',
|
|
247
|
+
headers: { 'Content-Type': 'application/json' },
|
|
248
|
+
// 添加超时处理
|
|
249
|
+
signal: AbortSignal.timeout(5000)
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
if (response.ok) {
|
|
253
|
+
statusElement.innerHTML = '<p>Server is running! Redirecting to API documentation...</p>';
|
|
254
|
+
statusElement.className = 'wp-notice notice-success';
|
|
255
|
+
|
|
256
|
+
// 服务器已启动,重定向到API页面
|
|
257
|
+
setTimeout(() => {
|
|
258
|
+
window.location.href = `${serverUrl}/api`;
|
|
259
|
+
}, 1000);
|
|
260
|
+
} else {
|
|
261
|
+
statusElement.innerHTML = '<p>Server responded but with an error. Please try again later.</p>';
|
|
262
|
+
statusElement.className = 'wp-notice notice-error';
|
|
263
|
+
retryBtn.style.display = 'inline-block';
|
|
264
|
+
}
|
|
265
|
+
} catch (error) {
|
|
266
|
+
statusElement.innerHTML = `<p>Cannot connect to server: ${error.message}. The server may still be starting up.</p>`;
|
|
267
|
+
statusElement.className = 'wp-notice notice-error';
|
|
268
|
+
retryBtn.style.display = 'inline-block';
|
|
269
|
+
} finally {
|
|
270
|
+
checkBtn.disabled = false;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// 重试重定向
|
|
275
|
+
function retryRedirect() {
|
|
276
|
+
const retryBtn = document.getElementById('retryBtn');
|
|
277
|
+
retryBtn.style.display = 'none';
|
|
278
|
+
checkServerStatus();
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// 启动服务器状态检查
|
|
282
|
+
function startServerStatusCheck() {
|
|
283
|
+
// 每2秒检查一次服务器状态,最多尝试30次(60秒)
|
|
284
|
+
const checkInterval = setInterval(() => {
|
|
285
|
+
if (redirectAttempts >= maxRedirectAttempts) {
|
|
286
|
+
clearInterval(checkInterval);
|
|
287
|
+
const statusElement = document.getElementById('redirectStatus');
|
|
288
|
+
statusElement.innerHTML = '<p>Server did not start in time. Please check your terminal for errors and try restarting the server manually.</p>';
|
|
289
|
+
statusElement.className = 'wp-notice notice-error';
|
|
290
|
+
document.getElementById('retryBtn').style.display = 'inline-block';
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
fetch(`${serverUrl}/api`, {
|
|
295
|
+
method: 'HEAD',
|
|
296
|
+
// 添加超时处理
|
|
297
|
+
signal: AbortSignal.timeout(3000)
|
|
298
|
+
})
|
|
299
|
+
.then(response => {
|
|
300
|
+
if (response.ok) {
|
|
301
|
+
clearInterval(checkInterval);
|
|
302
|
+
const statusElement = document.getElementById('redirectStatus');
|
|
303
|
+
statusElement.innerHTML = '<p>Server is running! Redirecting to API documentation...</p>';
|
|
304
|
+
statusElement.className = 'wp-notice notice-success';
|
|
305
|
+
|
|
306
|
+
// 服务器已启动,重定向到API页面
|
|
307
|
+
setTimeout(() => {
|
|
308
|
+
window.location.href = `${serverUrl}/api`;
|
|
309
|
+
}, 1000);
|
|
310
|
+
}
|
|
311
|
+
})
|
|
312
|
+
.catch(() => {
|
|
313
|
+
// 忽略错误,继续尝试
|
|
314
|
+
redirectAttempts++;
|
|
315
|
+
const statusElement = document.getElementById('redirectStatus');
|
|
316
|
+
statusElement.innerHTML = `<p>Waiting for server to start... (${redirectAttempts}/${maxRedirectAttempts})</p>`;
|
|
317
|
+
});
|
|
318
|
+
}, 2000);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Validate database input fields
|
|
322
|
+
function validateDatabaseInputs() {
|
|
323
|
+
const host = document.getElementById('dbHost').value.trim();
|
|
324
|
+
const port = document.getElementById('dbPort').value.trim();
|
|
325
|
+
const user = document.getElementById('dbUser').value.trim();
|
|
326
|
+
const password = document.getElementById('dbPassword').value;
|
|
327
|
+
const database = document.getElementById('dbName').value.trim();
|
|
328
|
+
|
|
329
|
+
if (!host || !port || !user || !database) {
|
|
330
|
+
showNotice('Please fill in all required fields.', 'error');
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
335
|
+
showNotice('Please enter a valid port number (1-65535).', 'error');
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
return { host, port, user, password, database };
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Test database connection
|
|
343
|
+
async function testDatabase() {
|
|
344
|
+
if (isTestingConnection) return;
|
|
345
|
+
|
|
346
|
+
const dbData = validateDatabaseInputs();
|
|
347
|
+
if (!dbData) return;
|
|
348
|
+
|
|
349
|
+
isTestingConnection = true;
|
|
350
|
+
const testBtn = document.getElementById('testBtn');
|
|
351
|
+
const originalText = testBtn.innerHTML;
|
|
352
|
+
|
|
353
|
+
testBtn.disabled = true;
|
|
354
|
+
testBtn.innerHTML = '<span class="wp-loader"></span>Testing connection...';
|
|
355
|
+
|
|
356
|
+
try {
|
|
357
|
+
const response = await fetch('/test-db', {
|
|
358
|
+
method: 'POST',
|
|
359
|
+
headers: { 'Content-Type': 'application/json' },
|
|
360
|
+
body: JSON.stringify(dbData)
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
const result = await response.json();
|
|
364
|
+
|
|
365
|
+
if (result.success) {
|
|
366
|
+
showNotice(result.message, 'success');
|
|
367
|
+
setTimeout(() => {
|
|
368
|
+
showStep(2);
|
|
369
|
+
}, 1500);
|
|
370
|
+
} else {
|
|
371
|
+
showNotice(result.message, 'error');
|
|
372
|
+
}
|
|
373
|
+
} catch (error) {
|
|
374
|
+
showNotice('Failed to connect to server. Please try again.', 'error');
|
|
375
|
+
} finally {
|
|
376
|
+
isTestingConnection = false;
|
|
377
|
+
testBtn.disabled = false;
|
|
378
|
+
testBtn.innerHTML = originalText;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// Install ReactPress
|
|
383
|
+
async function installReactPress() {
|
|
384
|
+
const dbData = validateDatabaseInputs();
|
|
385
|
+
if (!dbData) {
|
|
386
|
+
showStep(1);
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
const clientUrl = document.getElementById('clientUrl').value.trim();
|
|
391
|
+
serverUrl = document.getElementById('serverUrl').value.trim();
|
|
392
|
+
|
|
393
|
+
if (!clientUrl || !serverUrl) {
|
|
394
|
+
showNotice('Please fill in all site URLs.', 'error', 'installResult');
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// 更新管理URL显示
|
|
399
|
+
document.getElementById('adminUrl').textContent = `${clientUrl}/admin`;
|
|
400
|
+
|
|
401
|
+
const installBtn = document.getElementById('installBtn');
|
|
402
|
+
const originalText = installBtn.innerHTML;
|
|
403
|
+
|
|
404
|
+
installBtn.disabled = true;
|
|
405
|
+
installBtn.innerHTML = '<span class="wp-loader"></span>Installing & Starting...';
|
|
406
|
+
|
|
407
|
+
try {
|
|
408
|
+
const response = await fetch('/install', {
|
|
409
|
+
method: 'POST',
|
|
410
|
+
headers: { 'Content-Type': 'application/json' },
|
|
411
|
+
body: JSON.stringify({
|
|
412
|
+
db: dbData,
|
|
413
|
+
site: { clientUrl, serverUrl }
|
|
414
|
+
})
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
const result = await response.json();
|
|
418
|
+
|
|
419
|
+
if (result.success) {
|
|
420
|
+
showStep(3);
|
|
421
|
+
// 启动服务器状态检查
|
|
422
|
+
startServerStatusCheck();
|
|
423
|
+
} else {
|
|
424
|
+
showNotice(result.message, 'error', 'installResult');
|
|
425
|
+
}
|
|
426
|
+
} catch (error) {
|
|
427
|
+
showNotice('Installation failed. Please try again.', 'error', 'installResult');
|
|
428
|
+
} finally {
|
|
429
|
+
installBtn.disabled = false;
|
|
430
|
+
installBtn.innerHTML = originalText;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
// Initialize the wizard
|
|
435
|
+
updateProgress();
|
|
436
|
+
document.getElementById('dbHost').focus();
|
|
437
|
+
</script>
|
|
438
|
+
</body>
|
|
439
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bootstrap(): Promise<import("@nestjs/common").INestApplication>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bootstrap = void 0;
|
|
4
|
+
const core_1 = require("@nestjs/core");
|
|
5
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
+
const bodyParser = require("body-parser");
|
|
7
|
+
const compression = require("compression");
|
|
8
|
+
const express = require("express");
|
|
9
|
+
const rateLimit = require("express-rate-limit");
|
|
10
|
+
const helmet = require("helmet");
|
|
11
|
+
const path_1 = require("path");
|
|
12
|
+
const swagger_themes_1 = require("swagger-themes");
|
|
13
|
+
const app_module_1 = require("./app.module");
|
|
14
|
+
const http_exception_filter_1 = require("./filters/http-exception.filter");
|
|
15
|
+
const transform_interceptor_1 = require("./interceptors/transform.interceptor");
|
|
16
|
+
async function bootstrap() {
|
|
17
|
+
try {
|
|
18
|
+
const app = await core_1.NestFactory.create(app_module_1.AppModule);
|
|
19
|
+
const configService = app.get('ConfigService');
|
|
20
|
+
app.enableCors();
|
|
21
|
+
app.setGlobalPrefix(configService.get('SERVER_API_PREFIX', '/api'));
|
|
22
|
+
app.use(rateLimit({
|
|
23
|
+
windowMs: 60 * 1000,
|
|
24
|
+
max: 10000,
|
|
25
|
+
}));
|
|
26
|
+
const rootDir = path_1.join(__dirname, '../public');
|
|
27
|
+
app.use('/public', express.static(rootDir));
|
|
28
|
+
app.use(compression());
|
|
29
|
+
app.use(helmet());
|
|
30
|
+
app.useGlobalInterceptors(new transform_interceptor_1.TransformInterceptor());
|
|
31
|
+
app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter());
|
|
32
|
+
app.use(bodyParser.json({ limit: '10mb' }));
|
|
33
|
+
app.use(bodyParser.urlencoded({ limit: '10mb', extended: true }));
|
|
34
|
+
const swaggerConfig = new swagger_1.DocumentBuilder()
|
|
35
|
+
.setTitle('ReactPress API Documentation')
|
|
36
|
+
.setDescription('Comprehensive API documentation for ReactPress - A modern content management system built with NestJS')
|
|
37
|
+
.setVersion('3.0')
|
|
38
|
+
.setContact('ReactPress Team', 'https://github.com/fecommunity/reactpress', 'admin@gaoredu.com')
|
|
39
|
+
.setLicense('MIT', 'https://github.com/fecommunity/reactpress/blob/main/LICENSE')
|
|
40
|
+
.addServer(configService.get('SERVER_SITE_URL', 'http://localhost:3002'), 'API Server')
|
|
41
|
+
.build();
|
|
42
|
+
const document = swagger_1.SwaggerModule.createDocument(app, swaggerConfig);
|
|
43
|
+
const theme = new swagger_themes_1.SwaggerTheme();
|
|
44
|
+
const options = {
|
|
45
|
+
customCss: theme.getBuffer(swagger_themes_1.SwaggerThemeNameEnum.MATERIAL),
|
|
46
|
+
customSiteTitle: 'ReactPress API Documentation',
|
|
47
|
+
customfavIcon: '/public/favicon.png',
|
|
48
|
+
swaggerOptions: {
|
|
49
|
+
docExpansion: 'list',
|
|
50
|
+
filter: true,
|
|
51
|
+
showRequestDuration: true,
|
|
52
|
+
persistAuthorization: true,
|
|
53
|
+
displayOperationId: true,
|
|
54
|
+
operationsSorter: 'method',
|
|
55
|
+
tagsSorter: 'alpha',
|
|
56
|
+
},
|
|
57
|
+
customCssUrl: '/public/swagger/custom.css',
|
|
58
|
+
};
|
|
59
|
+
swagger_1.SwaggerModule.setup('api', app, document, options);
|
|
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`);
|
|
64
|
+
return app;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('[ReactPress] Failed to start application:', error);
|
|
68
|
+
if (error.code === 'EADDRINUSE') {
|
|
69
|
+
console.error('[ReactPress] Port is already in use. Please check for other running instances.');
|
|
70
|
+
console.error('[ReactPress] You can change the port in your .env file or terminate the conflicting process.');
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.bootstrap = bootstrap;
|
|
76
|
+
process.on('SIGINT', () => {
|
|
77
|
+
console.log('\n[ReactPress] Application shutting down gracefully...');
|
|
78
|
+
process.exit(0);
|
|
79
|
+
});
|
|
80
|
+
process.on('SIGTERM', () => {
|
|
81
|
+
console.log('\n[ReactPress] Application shutting down gracefully...');
|
|
82
|
+
process.exit(0);
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=starter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"starter.js","sourceRoot":"","sources":["../src/starter.ts"],"names":[],"mappings":"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"}
|