@fecommunity/reactpress 3.7.0 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/reactpress-cli-shim.js +2 -6
- package/bin/reactpress-theme-client.js +2 -0
- package/bin/reactpress.js +1 -380
- package/out/.source-fingerprint-cli +1 -0
- package/out/bin/reactpress-cli-shim.d.ts +3 -0
- package/out/bin/reactpress-cli-shim.d.ts.map +1 -0
- package/out/bin/reactpress-cli-shim.js +28 -0
- package/out/bin/reactpress-cli-shim.js.map +1 -0
- package/out/bin/reactpress-theme-client.d.ts +3 -0
- package/out/bin/reactpress-theme-client.d.ts.map +1 -0
- package/out/bin/reactpress-theme-client.js +113 -0
- package/out/bin/reactpress-theme-client.js.map +1 -0
- package/out/bin/reactpress.d.ts +3 -0
- package/out/bin/reactpress.d.ts.map +1 -0
- package/out/bin/reactpress.js +566 -0
- package/out/bin/reactpress.js.map +1 -0
- package/out/core/services/config.d.ts +12 -0
- package/out/core/services/config.d.ts.map +1 -0
- package/out/core/services/config.js +137 -0
- package/out/core/services/config.js.map +1 -0
- package/out/core/services/database/index.d.ts +17 -0
- package/out/core/services/database/index.d.ts.map +1 -0
- package/out/core/services/database/index.js +242 -0
- package/out/core/services/database/index.js.map +1 -0
- package/out/core/services/database/mysql.d.ts +14 -0
- package/out/core/services/database/mysql.d.ts.map +1 -0
- package/out/core/services/database/mysql.js +82 -0
- package/out/core/services/database/mysql.js.map +1 -0
- package/out/core/services/database/profile.d.ts +6 -0
- package/out/core/services/database/profile.d.ts.map +1 -0
- package/out/core/services/database/profile.js +60 -0
- package/out/core/services/database/profile.js.map +1 -0
- package/out/core/services/database/sqlite.d.ts +10 -0
- package/out/core/services/database/sqlite.d.ts.map +1 -0
- package/out/core/services/database/sqlite.js +73 -0
- package/out/core/services/database/sqlite.js.map +1 -0
- package/out/core/services/exec.d.ts +21 -0
- package/out/core/services/exec.d.ts.map +1 -0
- package/out/core/services/exec.js +56 -0
- package/out/core/services/exec.js.map +1 -0
- package/out/core/services/init.d.ts +11 -0
- package/out/core/services/init.d.ts.map +1 -0
- package/out/core/services/init.js +60 -0
- package/out/core/services/init.js.map +1 -0
- package/out/core/services/local-site.d.ts +24 -0
- package/out/core/services/local-site.d.ts.map +1 -0
- package/out/core/services/local-site.js +144 -0
- package/out/core/services/local-site.js.map +1 -0
- package/out/core/utils/cli-context.d.ts +3 -0
- package/out/core/utils/cli-context.d.ts.map +1 -0
- package/out/core/utils/cli-context.js +12 -0
- package/out/core/utils/cli-context.js.map +1 -0
- package/out/core/utils/paths.d.ts +20 -0
- package/out/core/utils/paths.d.ts.map +1 -0
- package/out/core/utils/paths.js +34 -0
- package/out/core/utils/paths.js.map +1 -0
- package/out/core/utils/platform.d.ts +7 -0
- package/out/core/utils/platform.d.ts.map +1 -0
- package/out/core/utils/platform.js +28 -0
- package/out/core/utils/platform.js.map +1 -0
- package/out/core/utils/port.d.ts +4 -0
- package/out/core/utils/port.d.ts.map +1 -0
- package/out/core/utils/port.js +32 -0
- package/out/core/utils/port.js.map +1 -0
- package/out/lib/api-dev-runner.d.ts +3 -0
- package/out/lib/api-dev-runner.d.ts.map +1 -0
- package/{lib → out/lib}/api-dev-runner.js +4 -1
- package/out/lib/api-dev-runner.js.map +1 -0
- package/out/lib/api-dev.d.ts +2 -0
- package/out/lib/api-dev.d.ts.map +1 -0
- package/out/lib/api-dev.js +101 -0
- package/out/lib/api-dev.js.map +1 -0
- package/out/lib/bootstrap.d.ts +18 -0
- package/out/lib/bootstrap.d.ts.map +1 -0
- package/out/lib/bootstrap.js +93 -0
- package/out/lib/bootstrap.js.map +1 -0
- package/out/lib/build.d.ts +2 -0
- package/out/lib/build.d.ts.map +1 -0
- package/out/lib/build.js +191 -0
- package/out/lib/build.js.map +1 -0
- package/out/lib/db-backup.d.ts +2 -0
- package/out/lib/db-backup.d.ts.map +1 -0
- package/out/lib/db-backup.js +68 -0
- package/out/lib/db-backup.js.map +1 -0
- package/out/lib/dev-banner.d.ts +2 -0
- package/out/lib/dev-banner.d.ts.map +1 -0
- package/out/lib/dev-banner.js +102 -0
- package/out/lib/dev-banner.js.map +1 -0
- package/out/lib/dev-child-io.d.ts +2 -0
- package/out/lib/dev-child-io.d.ts.map +1 -0
- package/out/lib/dev-child-io.js +80 -0
- package/out/lib/dev-child-io.js.map +1 -0
- package/out/lib/dev-log.d.ts +2 -0
- package/out/lib/dev-log.d.ts.map +1 -0
- package/out/lib/dev-log.js +64 -0
- package/out/lib/dev-log.js.map +1 -0
- package/out/lib/dev-session.d.ts +2 -0
- package/out/lib/dev-session.d.ts.map +1 -0
- package/out/lib/dev-session.js +95 -0
- package/out/lib/dev-session.js.map +1 -0
- package/out/lib/dev.d.ts +2 -0
- package/out/lib/dev.d.ts.map +1 -0
- package/out/lib/dev.js +914 -0
- package/out/lib/dev.js.map +1 -0
- package/out/lib/docker.d.ts +2 -0
- package/out/lib/docker.d.ts.map +1 -0
- package/out/lib/docker.js +398 -0
- package/out/lib/docker.js.map +1 -0
- package/out/lib/doctor.d.ts +2 -0
- package/out/lib/doctor.d.ts.map +1 -0
- package/out/lib/doctor.js +260 -0
- package/out/lib/doctor.js.map +1 -0
- package/out/lib/health-parse.d.ts +5 -0
- package/out/lib/health-parse.d.ts.map +1 -0
- package/out/lib/health-parse.js +36 -0
- package/out/lib/health-parse.js.map +1 -0
- package/out/lib/health-parse.test.d.ts +2 -0
- package/out/lib/health-parse.test.d.ts.map +1 -0
- package/out/lib/health-parse.test.js +19 -0
- package/out/lib/health-parse.test.js.map +1 -0
- package/out/lib/http.d.ts +2 -0
- package/out/lib/http.d.ts.map +1 -0
- package/out/lib/http.js +234 -0
- package/out/lib/http.js.map +1 -0
- package/out/lib/i18n/index.d.ts +2 -0
- package/out/lib/i18n/index.d.ts.map +1 -0
- package/out/lib/i18n/index.js +29 -0
- package/out/lib/i18n/index.js.map +1 -0
- package/out/lib/i18n/strings.d.ts +2 -0
- package/out/lib/i18n/strings.d.ts.map +1 -0
- package/out/lib/i18n/strings.js +1192 -0
- package/out/lib/i18n/strings.js.map +1 -0
- package/out/lib/lifecycle.d.ts +2 -0
- package/out/lib/lifecycle.d.ts.map +1 -0
- package/out/lib/lifecycle.js +169 -0
- package/out/lib/lifecycle.js.map +1 -0
- package/out/lib/nginx.d.ts +2 -0
- package/out/lib/nginx.d.ts.map +1 -0
- package/out/lib/nginx.js +618 -0
- package/out/lib/nginx.js.map +1 -0
- package/out/lib/paths.d.ts +2 -0
- package/out/lib/paths.d.ts.map +1 -0
- package/out/lib/paths.js +106 -0
- package/out/lib/paths.js.map +1 -0
- package/out/lib/plugin-build.d.ts +2 -0
- package/out/lib/plugin-build.d.ts.map +1 -0
- package/out/lib/plugin-build.js +104 -0
- package/out/lib/plugin-build.js.map +1 -0
- package/out/lib/plugin-cli.d.ts +2 -0
- package/out/lib/plugin-cli.d.ts.map +1 -0
- package/out/lib/plugin-cli.js +142 -0
- package/out/lib/plugin-cli.js.map +1 -0
- package/out/lib/pm2.d.ts +2 -0
- package/out/lib/pm2.d.ts.map +1 -0
- package/out/lib/pm2.js +32 -0
- package/out/lib/pm2.js.map +1 -0
- package/out/lib/ports.d.ts +2 -0
- package/out/lib/ports.d.ts.map +1 -0
- package/out/lib/ports.js +394 -0
- package/out/lib/ports.js.map +1 -0
- package/out/lib/process.d.ts +2 -0
- package/out/lib/process.d.ts.map +1 -0
- package/out/lib/process.js +47 -0
- package/out/lib/process.js.map +1 -0
- package/out/lib/prod-memory.d.ts +6 -0
- package/out/lib/prod-memory.d.ts.map +1 -0
- package/out/lib/prod-memory.js +57 -0
- package/out/lib/prod-memory.js.map +1 -0
- package/out/lib/project-type.d.ts +2 -0
- package/out/lib/project-type.d.ts.map +1 -0
- package/out/lib/project-type.js +95 -0
- package/out/lib/project-type.js.map +1 -0
- package/out/lib/publish.d.ts +3 -0
- package/out/lib/publish.d.ts.map +1 -0
- package/out/lib/publish.js +388 -0
- package/out/lib/publish.js.map +1 -0
- package/out/lib/remote-dev.d.ts +2 -0
- package/out/lib/remote-dev.d.ts.map +1 -0
- package/out/lib/remote-dev.js +158 -0
- package/out/lib/remote-dev.js.map +1 -0
- package/out/lib/root.d.ts +2 -0
- package/out/lib/root.d.ts.map +1 -0
- package/out/lib/root.js +85 -0
- package/out/lib/root.js.map +1 -0
- package/out/lib/spawn.d.ts +2 -0
- package/out/lib/spawn.d.ts.map +1 -0
- package/out/lib/spawn.js +96 -0
- package/out/lib/spawn.js.map +1 -0
- package/out/lib/status.d.ts +2 -0
- package/out/lib/status.d.ts.map +1 -0
- package/out/lib/status.js +78 -0
- package/out/lib/status.js.map +1 -0
- package/out/lib/theme-catalog.d.ts +2 -0
- package/out/lib/theme-catalog.d.ts.map +1 -0
- package/out/lib/theme-catalog.js +6 -0
- package/out/lib/theme-catalog.js.map +1 -0
- package/out/lib/theme-cli.d.ts +2 -0
- package/out/lib/theme-cli.d.ts.map +1 -0
- package/out/lib/theme-cli.js +50 -0
- package/out/lib/theme-cli.js.map +1 -0
- package/out/lib/theme-dev.d.ts +2 -0
- package/out/lib/theme-dev.d.ts.map +1 -0
- package/out/lib/theme-dev.js +759 -0
- package/out/lib/theme-dev.js.map +1 -0
- package/out/lib/theme-env.d.ts +2 -0
- package/out/lib/theme-env.d.ts.map +1 -0
- package/out/lib/theme-env.js +101 -0
- package/out/lib/theme-env.js.map +1 -0
- package/out/lib/theme-install.d.ts +2 -0
- package/out/lib/theme-install.d.ts.map +1 -0
- package/out/lib/theme-install.js +363 -0
- package/out/lib/theme-install.js.map +1 -0
- package/out/lib/theme-lock.d.ts +2 -0
- package/out/lib/theme-lock.d.ts.map +1 -0
- package/out/lib/theme-lock.js +70 -0
- package/out/lib/theme-lock.js.map +1 -0
- package/out/lib/theme-paths.d.ts +2 -0
- package/out/lib/theme-paths.d.ts.map +1 -0
- package/out/lib/theme-paths.js +73 -0
- package/out/lib/theme-paths.js.map +1 -0
- package/out/lib/theme-placeholder-cover.d.ts +13 -0
- package/out/lib/theme-placeholder-cover.d.ts.map +1 -0
- package/out/lib/theme-placeholder-cover.js +95 -0
- package/out/lib/theme-placeholder-cover.js.map +1 -0
- package/out/lib/theme-preview-frame.d.ts +2 -0
- package/out/lib/theme-preview-frame.d.ts.map +1 -0
- package/out/lib/theme-preview-frame.js +107 -0
- package/out/lib/theme-preview-frame.js.map +1 -0
- package/out/lib/theme-preview-pool.d.ts +2 -0
- package/out/lib/theme-preview-pool.d.ts.map +1 -0
- package/out/lib/theme-preview-pool.js +484 -0
- package/out/lib/theme-preview-pool.js.map +1 -0
- package/out/lib/theme-preview-proxy.d.ts +2 -0
- package/out/lib/theme-preview-proxy.d.ts.map +1 -0
- package/out/lib/theme-preview-proxy.js +101 -0
- package/out/lib/theme-preview-proxy.js.map +1 -0
- package/out/lib/theme-prod.d.ts +2 -0
- package/out/lib/theme-prod.d.ts.map +1 -0
- package/out/lib/theme-prod.js +400 -0
- package/out/lib/theme-prod.js.map +1 -0
- package/out/lib/theme-registry.d.ts +2 -0
- package/out/lib/theme-registry.d.ts.map +1 -0
- package/out/lib/theme-registry.js +135 -0
- package/out/lib/theme-registry.js.map +1 -0
- package/out/lib/theme-runtime.d.ts +2 -0
- package/out/lib/theme-runtime.d.ts.map +1 -0
- package/out/lib/theme-runtime.js +344 -0
- package/out/lib/theme-runtime.js.map +1 -0
- package/out/lib/theme-sources.d.ts +2 -0
- package/out/lib/theme-sources.d.ts.map +1 -0
- package/out/lib/theme-sources.js +347 -0
- package/out/lib/theme-sources.js.map +1 -0
- package/out/lib/theme-warmup.d.ts +2 -0
- package/out/lib/theme-warmup.d.ts.map +1 -0
- package/out/lib/theme-warmup.js +167 -0
- package/out/lib/theme-warmup.js.map +1 -0
- package/out/lib/toolkit-build.d.ts +2 -0
- package/out/lib/toolkit-build.d.ts.map +1 -0
- package/out/lib/toolkit-build.js +57 -0
- package/out/lib/toolkit-build.js.map +1 -0
- package/out/types/config.d.ts +57 -0
- package/out/types/config.d.ts.map +1 -0
- package/out/types/config.js +3 -0
- package/out/types/config.js.map +1 -0
- package/out/ui/banner.d.ts +2 -0
- package/out/ui/banner.d.ts.map +1 -0
- package/out/ui/banner.js +358 -0
- package/out/ui/banner.js.map +1 -0
- package/out/ui/interactive.d.ts +2 -0
- package/out/ui/interactive.d.ts.map +1 -0
- package/out/ui/interactive.js +378 -0
- package/out/ui/interactive.js.map +1 -0
- package/out/ui/prompts.d.ts +2 -0
- package/out/ui/prompts.d.ts.map +1 -0
- package/out/ui/prompts.js +91 -0
- package/out/ui/prompts.js.map +1 -0
- package/out/ui/theme.d.ts +2 -0
- package/out/ui/theme.d.ts.map +1 -0
- package/out/ui/theme.js +250 -0
- package/out/ui/theme.js.map +1 -0
- package/package.json +13 -7
- package/server/dist/common/api-messages.d.ts +9 -0
- package/server/dist/common/api-messages.js +9 -0
- package/server/dist/common/api-messages.js.map +1 -1
- package/server/dist/database/typeorm-options.d.ts +3 -0
- package/server/dist/database/typeorm-options.js +60 -0
- package/server/dist/database/typeorm-options.js.map +1 -0
- package/server/dist/modules/api-key/api-key.controller.js.map +1 -1
- package/server/dist/modules/api-key/api-key.entity.js.map +1 -1
- package/server/dist/modules/api-key/api-key.guard.js +2 -3
- package/server/dist/modules/api-key/api-key.guard.js.map +1 -1
- package/server/dist/modules/api-key/api-key.module.js.map +1 -1
- package/server/dist/modules/api-key/api-key.service.js +1 -1
- package/server/dist/modules/api-key/api-key.service.js.map +1 -1
- package/server/dist/modules/article/article-revision.entity.js +3 -3
- package/server/dist/modules/article/article-revision.entity.js.map +1 -1
- package/server/dist/modules/article/article-slug.util.d.ts +2 -0
- package/server/dist/modules/article/article-slug.util.js +19 -0
- package/server/dist/modules/article/article-slug.util.js.map +1 -0
- package/server/dist/modules/article/scheduled-publish.service.js.map +1 -1
- package/server/dist/modules/bootstrap/bootstrap.constants.d.ts +20 -0
- package/server/dist/modules/bootstrap/bootstrap.constants.js +171 -0
- package/server/dist/modules/bootstrap/bootstrap.constants.js.map +1 -0
- package/server/dist/modules/bootstrap/bootstrap.service.d.ts +22 -0
- package/server/dist/modules/bootstrap/bootstrap.service.js +183 -0
- package/server/dist/modules/bootstrap/bootstrap.service.js.map +1 -0
- package/server/dist/modules/bootstrap/install-locale.d.ts +2 -0
- package/server/dist/modules/bootstrap/install-locale.js +11 -0
- package/server/dist/modules/bootstrap/install-locale.js.map +1 -0
- package/server/dist/modules/extension/extension.module.d.ts +9 -0
- package/server/dist/modules/extension/extension.module.js +50 -0
- package/server/dist/modules/extension/extension.module.js.map +1 -0
- package/server/dist/modules/extension/plugin-loader.service.d.ts +12 -0
- package/server/dist/modules/extension/plugin-loader.service.js +96 -0
- package/server/dist/modules/extension/plugin-loader.service.js.map +1 -0
- package/server/dist/modules/extension/plugin-registry.bridge.d.ts +3 -0
- package/server/dist/modules/extension/plugin-registry.bridge.js +44 -0
- package/server/dist/modules/extension/plugin-registry.bridge.js.map +1 -0
- package/server/dist/modules/extension/plugin.controller.d.ts +22 -0
- package/server/dist/modules/extension/plugin.controller.js +155 -0
- package/server/dist/modules/extension/plugin.controller.js.map +1 -0
- package/server/dist/modules/extension/plugin.service.d.ts +52 -0
- package/server/dist/modules/extension/plugin.service.js +391 -0
- package/server/dist/modules/extension/plugin.service.js.map +1 -0
- package/server/dist/modules/extension/preview-draft.store.d.ts +13 -0
- package/server/dist/modules/extension/preview-draft.store.js +41 -0
- package/server/dist/modules/extension/preview-draft.store.js.map +1 -0
- package/server/dist/modules/extension/theme-registry.bridge.d.ts +56 -0
- package/server/dist/modules/extension/theme-registry.bridge.js +46 -0
- package/server/dist/modules/extension/theme-registry.bridge.js.map +1 -0
- package/server/dist/modules/extension/theme.controller.d.ts +66 -0
- package/server/dist/modules/extension/theme.controller.js +301 -0
- package/server/dist/modules/extension/theme.controller.js.map +1 -0
- package/server/dist/modules/extension/theme.service.d.ts +140 -0
- package/server/dist/modules/extension/theme.service.js +1039 -0
- package/server/dist/modules/extension/theme.service.js.map +1 -0
- package/server/dist/modules/file/file-optimization.controller.d.ts +12 -0
- package/server/dist/modules/file/file-optimization.controller.js +79 -0
- package/server/dist/modules/file/file-optimization.controller.js.map +1 -0
- package/server/dist/modules/file/file-optimization.service.d.ts +36 -0
- package/server/dist/modules/file/file-optimization.service.js +385 -0
- package/server/dist/modules/file/file-optimization.service.js.map +1 -0
- package/server/dist/modules/file/file-optimization.types.d.ts +66 -0
- package/server/dist/modules/file/file-optimization.types.js +5 -0
- package/server/dist/modules/file/file-optimization.types.js.map +1 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.d.ts +7 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.js +33 -0
- package/server/dist/modules/file/image-optimizer-plugin.guard.js.map +1 -0
- package/server/dist/modules/health/health.controller.js +2 -4
- package/server/dist/modules/health/health.controller.js.map +1 -1
- package/server/dist/modules/health/health.module.js.map +1 -1
- package/server/dist/modules/hook/hook.module.d.ts +2 -0
- package/server/dist/modules/hook/hook.module.js +22 -0
- package/server/dist/modules/hook/hook.module.js.map +1 -0
- package/server/dist/modules/hook/hook.service.d.ts +26 -0
- package/server/dist/modules/hook/hook.service.js +105 -0
- package/server/dist/modules/hook/hook.service.js.map +1 -0
- package/server/dist/modules/webhook/webhook.controller.js.map +1 -1
- package/server/dist/modules/webhook/webhook.entity.js.map +1 -1
- package/server/dist/modules/webhook/webhook.module.js.map +1 -1
- package/server/dist/modules/webhook/webhook.service.d.ts +1 -1
- package/server/dist/modules/webhook/webhook.service.js +5 -2
- package/server/dist/modules/webhook/webhook.service.js.map +1 -1
- package/server/dist/node-polyfills.d.ts +18 -0
- package/server/dist/node-polyfills.js +24 -0
- package/server/dist/node-polyfills.js.map +1 -0
- package/server/dist/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
- package/server/dist/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
- package/server/dist/tsconfig.tsbuildinfo +1 -0
- package/server/dist/utils/image-processor.util.d.ts +23 -0
- package/server/dist/utils/image-processor.util.js +88 -0
- package/server/dist/utils/image-processor.util.js.map +1 -0
- package/server/dist/utils/local-api-quiet.util.d.ts +1 -0
- package/server/dist/utils/local-api-quiet.util.js +8 -0
- package/server/dist/utils/local-api-quiet.util.js.map +1 -0
- package/server/dist/utils/project-root.util.d.ts +2 -0
- package/server/dist/utils/project-root.util.js +42 -0
- package/server/dist/utils/project-root.util.js.map +1 -0
- package/server/public/uploads/2026-05-30/QR3X4UZQ93ZTUPGXCFA9II..png +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8.webp +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_medium.webp +0 -0
- package/server/public/uploads/2026-05-31/BXQV3NX9ZVWHGNOSX9AXD8_thumb.webp +0 -0
- package/server/public/uploads/2026-05-31/I2SZC0ONA7CF31UM46MN56..jpg +0 -0
- package/templates/config.local.json +13 -0
- package/templates/env.local.default +10 -0
- package/templates/theme-catalog.json +27 -0
- package/lib/api-dev.js +0 -89
- package/lib/bootstrap.js +0 -114
- package/lib/build.js +0 -162
- package/lib/db-backup.js +0 -67
- package/lib/dev-banner.js +0 -72
- package/lib/dev.js +0 -141
- package/lib/docker.js +0 -275
- package/lib/doctor.js +0 -266
- package/lib/http.js +0 -182
- package/lib/i18n/index.js +0 -32
- package/lib/i18n/strings.js +0 -846
- package/lib/lifecycle.js +0 -190
- package/lib/nginx.js +0 -342
- package/lib/paths.js +0 -108
- package/lib/pm2.js +0 -32
- package/lib/process.js +0 -45
- package/lib/project-type.js +0 -72
- package/lib/publish.js +0 -968
- package/lib/root.js +0 -88
- package/lib/spawn.js +0 -92
- package/lib/status.js +0 -132
- package/ui/banner.js +0 -441
- package/ui/interactive.js +0 -380
- package/ui/theme.js +0 -265
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveSqlitePath = resolveSqlitePath;
|
|
7
|
+
exports.getSqliteCredentials = getSqliteCredentials;
|
|
8
|
+
exports.ensureSqliteDatabase = ensureSqliteDatabase;
|
|
9
|
+
exports.probeSqliteDatabase = probeSqliteDatabase;
|
|
10
|
+
exports.isSqliteReady = isSqliteReady;
|
|
11
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
13
|
+
const paths_1 = require("../../utils/paths");
|
|
14
|
+
const config_1 = require("../config");
|
|
15
|
+
async function resolveSqlitePath(projectRoot, override) {
|
|
16
|
+
const paths = (0, paths_1.getProjectPaths)(projectRoot);
|
|
17
|
+
if (override)
|
|
18
|
+
return node_path_1.default.resolve(projectRoot, override);
|
|
19
|
+
if (await fs_extra_1.default.pathExists(paths.envPath)) {
|
|
20
|
+
const env = await (0, config_1.loadEnvFile)(paths.envPath);
|
|
21
|
+
if (env.DB_DATABASE)
|
|
22
|
+
return node_path_1.default.resolve(projectRoot, env.DB_DATABASE);
|
|
23
|
+
}
|
|
24
|
+
return paths.sqlitePath;
|
|
25
|
+
}
|
|
26
|
+
async function getSqliteCredentials(projectRoot) {
|
|
27
|
+
const database = await resolveSqlitePath(projectRoot);
|
|
28
|
+
return { database };
|
|
29
|
+
}
|
|
30
|
+
async function ensureSqliteDatabase(projectRoot) {
|
|
31
|
+
const database = await resolveSqlitePath(projectRoot);
|
|
32
|
+
const dir = node_path_1.default.dirname(database);
|
|
33
|
+
await fs_extra_1.default.ensureDir(dir);
|
|
34
|
+
try {
|
|
35
|
+
await fs_extra_1.default.access(dir, fs_extra_1.default.constants.W_OK);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return { ok: false, message: `SQLite 数据目录不可写: ${dir}` };
|
|
39
|
+
}
|
|
40
|
+
if (!(await fs_extra_1.default.pathExists(database))) {
|
|
41
|
+
await fs_extra_1.default.writeFile(database, Buffer.alloc(0));
|
|
42
|
+
}
|
|
43
|
+
return { ok: true };
|
|
44
|
+
}
|
|
45
|
+
async function probeSqliteDatabase(projectRoot) {
|
|
46
|
+
const database = await resolveSqlitePath(projectRoot);
|
|
47
|
+
const dir = node_path_1.default.dirname(database);
|
|
48
|
+
if (!(await fs_extra_1.default.pathExists(dir))) {
|
|
49
|
+
return { ok: false, message: `SQLite 目录不存在: ${dir}` };
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
await fs_extra_1.default.access(dir, fs_extra_1.default.constants.W_OK);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { ok: false, message: `SQLite 目录不可写: ${dir}` };
|
|
56
|
+
}
|
|
57
|
+
if (await fs_extra_1.default.pathExists(database)) {
|
|
58
|
+
const stat = await fs_extra_1.default.stat(database);
|
|
59
|
+
return {
|
|
60
|
+
ok: true,
|
|
61
|
+
message: `SQLite ${database} (${stat.size} bytes)`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
ok: true,
|
|
66
|
+
message: `SQLite 将在启动时创建: ${database}`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async function isSqliteReady(projectRoot) {
|
|
70
|
+
const result = await ensureSqliteDatabase(projectRoot);
|
|
71
|
+
return result.ok;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/core/services/database/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { spawn, type ChildProcess } from 'node:child_process';
|
|
2
|
+
export interface RunSyncResult {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
code: number | null;
|
|
7
|
+
}
|
|
8
|
+
export declare function runSync(command: string, args: string[], options?: {
|
|
9
|
+
cwd?: string;
|
|
10
|
+
env?: NodeJS.ProcessEnv;
|
|
11
|
+
silent?: boolean;
|
|
12
|
+
}): RunSyncResult;
|
|
13
|
+
export declare function spawnDetached(command: string, args: string[], options?: {
|
|
14
|
+
cwd?: string;
|
|
15
|
+
env?: NodeJS.ProcessEnv;
|
|
16
|
+
}): ChildProcess;
|
|
17
|
+
export declare function isCommandAvailable(command: string): boolean;
|
|
18
|
+
export declare function isDockerAvailable(): boolean;
|
|
19
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
20
|
+
export declare let spawnFn: typeof spawn;
|
|
21
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/core/services/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKzE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,aAAa,CAcf;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GACtD,YAAY,CAQd;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ3D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,eAAO,IAAI,OAAO,cAAQ,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.spawnFn = void 0;
|
|
7
|
+
exports.runSync = runSync;
|
|
8
|
+
exports.spawnDetached = spawnDetached;
|
|
9
|
+
exports.isCommandAvailable = isCommandAvailable;
|
|
10
|
+
exports.isDockerAvailable = isDockerAvailable;
|
|
11
|
+
exports.sleep = sleep;
|
|
12
|
+
const node_child_process_1 = require("node:child_process");
|
|
13
|
+
const cross_spawn_1 = __importDefault(require("cross-spawn"));
|
|
14
|
+
const platform_1 = require("../utils/platform");
|
|
15
|
+
function runSync(command, args, options = {}) {
|
|
16
|
+
const result = (0, node_child_process_1.spawnSync)(command, args, {
|
|
17
|
+
cwd: options.cwd,
|
|
18
|
+
env: { ...process.env, ...options.env },
|
|
19
|
+
encoding: 'utf8',
|
|
20
|
+
shell: (0, platform_1.isWindows)(),
|
|
21
|
+
stdio: options.silent ? 'pipe' : 'inherit',
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
ok: result.status === 0,
|
|
25
|
+
stdout: (result.stdout ?? '').toString(),
|
|
26
|
+
stderr: (result.stderr ?? '').toString(),
|
|
27
|
+
code: result.status,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function spawnDetached(command, args, options = {}) {
|
|
31
|
+
return (0, cross_spawn_1.default)(command, args, {
|
|
32
|
+
cwd: options.cwd,
|
|
33
|
+
env: { ...process.env, ...options.env },
|
|
34
|
+
detached: !(0, platform_1.isWindows)(),
|
|
35
|
+
stdio: 'ignore',
|
|
36
|
+
shell: (0, platform_1.isWindows)(),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function isCommandAvailable(command) {
|
|
40
|
+
const checkCmd = (0, platform_1.isWindows)() ? 'where' : 'which';
|
|
41
|
+
const result = (0, node_child_process_1.spawnSync)(checkCmd, [command], {
|
|
42
|
+
encoding: 'utf8',
|
|
43
|
+
shell: (0, platform_1.isWindows)(),
|
|
44
|
+
stdio: 'pipe',
|
|
45
|
+
});
|
|
46
|
+
return result.status === 0;
|
|
47
|
+
}
|
|
48
|
+
function isDockerAvailable() {
|
|
49
|
+
const result = runSync('docker', ['info'], { silent: true });
|
|
50
|
+
return result.ok;
|
|
51
|
+
}
|
|
52
|
+
async function sleep(ms) {
|
|
53
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
54
|
+
}
|
|
55
|
+
exports.spawnFn = node_child_process_1.spawn;
|
|
56
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/core/services/exec.ts"],"names":[],"mappings":";;;;;;AAYA,0BAsBC;AAED,sCAYC;AAED,gDAQC;AAED,8CAGC;AAED,sBAEC;AAnED,2DAAyE;AACzE,8DAAqC;AAErC,gDAA8C;AAS9C,SAAgB,OAAO,CACrB,OAAe,EACf,IAAc,EACd,UAII,EAAE;IAEN,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,OAAO,EAAE,IAAI,EAAE;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAA,oBAAS,GAAE;QAClB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAC3C,CAAC,CAAC;IACH,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QACvB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxC,IAAI,EAAE,MAAM,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAC3B,OAAe,EACf,IAAc,EACd,UAAqD,EAAE;IAEvD,OAAO,IAAA,qBAAU,EAAC,OAAO,EAAE,IAAI,EAAE;QAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,QAAQ,EAAE,CAAC,IAAA,oBAAS,GAAE;QACtB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAA,oBAAS,GAAE;KACnB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAS,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAC5C,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAA,oBAAS,GAAE;QAClB,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAEU,QAAA,OAAO,GAAG,0BAAK,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface InitProjectOptions {
|
|
2
|
+
directory: string;
|
|
3
|
+
force?: boolean;
|
|
4
|
+
local?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function initProject(options: InitProjectOptions): Promise<{
|
|
7
|
+
ok: boolean;
|
|
8
|
+
projectRoot: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/core/services/init.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAmDhE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.initProject = initProject;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const paths_1 = require("../utils/paths");
|
|
10
|
+
const config_1 = require("./config");
|
|
11
|
+
const database_1 = require("./database");
|
|
12
|
+
const local_site_1 = require("./local-site");
|
|
13
|
+
async function initProject(options) {
|
|
14
|
+
if (options.local) {
|
|
15
|
+
return (0, local_site_1.initLocalProject)(options.directory, { force: options.force });
|
|
16
|
+
}
|
|
17
|
+
const projectRoot = options.directory;
|
|
18
|
+
const paths = (0, paths_1.getProjectPaths)(projectRoot);
|
|
19
|
+
if ((await fs_extra_1.default.pathExists(paths.configPath)) && !options.force) {
|
|
20
|
+
return {
|
|
21
|
+
ok: false,
|
|
22
|
+
projectRoot,
|
|
23
|
+
message: '目录已是 ReactPress 项目。使用 --force 覆盖配置。',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
await fs_extra_1.default.ensureDir(projectRoot);
|
|
27
|
+
await fs_extra_1.default.ensureDir(paths.reactpressDir);
|
|
28
|
+
const templatesDir = (0, paths_1.getTemplatesDir)();
|
|
29
|
+
await copyTemplate((0, node_path_1.join)(templatesDir, 'docker-compose.yml'), paths.dockerComposePath);
|
|
30
|
+
await copyTemplate((0, node_path_1.join)(templatesDir, 'package.json'), (0, node_path_1.join)(projectRoot, 'package.json'));
|
|
31
|
+
const config = (await fs_extra_1.default.readJson((0, node_path_1.join)(templatesDir, 'config.default.json')));
|
|
32
|
+
await (0, config_1.saveConfig)(projectRoot, config);
|
|
33
|
+
await (0, config_1.syncEnvFromConfig)(projectRoot, config);
|
|
34
|
+
if (!(await fs_extra_1.default.pathExists(paths.envPath)) || options.force) {
|
|
35
|
+
const envTemplate = await fs_extra_1.default.readFile((0, node_path_1.join)(templatesDir, 'env.default'), 'utf8');
|
|
36
|
+
await fs_extra_1.default.writeFile(paths.envPath, envTemplate, 'utf8');
|
|
37
|
+
await (0, config_1.syncEnvFromConfig)(projectRoot, config);
|
|
38
|
+
}
|
|
39
|
+
await (0, database_1.ensureDatabaseHostPort)(projectRoot, undefined, config);
|
|
40
|
+
const dbResult = await (0, database_1.ensureDatabase)(projectRoot, config);
|
|
41
|
+
if (!dbResult.ok) {
|
|
42
|
+
return {
|
|
43
|
+
ok: true,
|
|
44
|
+
projectRoot,
|
|
45
|
+
message: `项目已创建,但数据库未就绪: ${dbResult.message}。可稍后运行 reactpress dev。`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
ok: true,
|
|
50
|
+
projectRoot,
|
|
51
|
+
message: 'ReactPress 项目初始化完成。运行 reactpress dev 启动服务。',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function copyTemplate(src, dest) {
|
|
55
|
+
if (!(await fs_extra_1.default.pathExists(src))) {
|
|
56
|
+
throw new Error(`模板文件缺失: ${src}`);
|
|
57
|
+
}
|
|
58
|
+
await fs_extra_1.default.copy(src, dest, { overwrite: true });
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/core/services/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface LocalSitePaths {
|
|
2
|
+
siteRoot: string;
|
|
3
|
+
dataDir: string;
|
|
4
|
+
uploadsDir: string;
|
|
5
|
+
dbPath: string;
|
|
6
|
+
envPath: string;
|
|
7
|
+
reactpressDir: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function getLocalSitePaths(siteRoot: string): LocalSitePaths;
|
|
10
|
+
export interface EnsureLocalSiteOptions {
|
|
11
|
+
monorepoRoot?: string;
|
|
12
|
+
adminUser?: string;
|
|
13
|
+
adminPassword?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function ensureLocalSite(siteRoot: string, port: number, options?: EnsureLocalSiteOptions): LocalSitePaths;
|
|
16
|
+
export declare function initLocalProject(projectRoot: string, options?: {
|
|
17
|
+
force?: boolean;
|
|
18
|
+
port?: number;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
ok: boolean;
|
|
21
|
+
projectRoot: string;
|
|
22
|
+
message: string;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=local-site.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-site.d.ts","sourceRoot":"","sources":["../../../src/core/services/local-site.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAUlE;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,cAAc,CA4ChB;AAwED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBhE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getLocalSitePaths = getLocalSitePaths;
|
|
7
|
+
exports.ensureLocalSite = ensureLocalSite;
|
|
8
|
+
exports.initLocalProject = initLocalProject;
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const paths_1 = require("../utils/paths");
|
|
12
|
+
const config_1 = require("../services/config");
|
|
13
|
+
function getLocalSitePaths(siteRoot) {
|
|
14
|
+
const dataDir = node_path_1.default.join(siteRoot, 'data');
|
|
15
|
+
return {
|
|
16
|
+
siteRoot,
|
|
17
|
+
dataDir,
|
|
18
|
+
uploadsDir: node_path_1.default.join(siteRoot, 'uploads'),
|
|
19
|
+
dbPath: node_path_1.default.join(dataDir, 'reactpress.db'),
|
|
20
|
+
envPath: node_path_1.default.join(siteRoot, '.env'),
|
|
21
|
+
reactpressDir: node_path_1.default.join(siteRoot, '.reactpress'),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function ensureLocalSite(siteRoot, port, options = {}) {
|
|
25
|
+
const paths = getLocalSitePaths(siteRoot);
|
|
26
|
+
fs_extra_1.default.mkdirSync(paths.dataDir, { recursive: true });
|
|
27
|
+
fs_extra_1.default.mkdirSync(paths.uploadsDir, { recursive: true });
|
|
28
|
+
fs_extra_1.default.mkdirSync(paths.reactpressDir, { recursive: true });
|
|
29
|
+
const siteUrl = `http://127.0.0.1:${port}`;
|
|
30
|
+
const clientSiteUrl = 'http://localhost:3001';
|
|
31
|
+
const envLines = [
|
|
32
|
+
'DB_TYPE=sqlite',
|
|
33
|
+
`DB_DATABASE=${paths.dbPath}`,
|
|
34
|
+
`SERVER_PORT=${port}`,
|
|
35
|
+
`SERVER_SITE_URL=${siteUrl}`,
|
|
36
|
+
`CLIENT_SITE_URL=${clientSiteUrl}`,
|
|
37
|
+
'SERVER_API_PREFIX=/api',
|
|
38
|
+
`REACTPRESS_UPLOAD_DIR=${paths.uploadsDir}`,
|
|
39
|
+
`ADMIN_USER=${options.adminUser ?? 'admin'}`,
|
|
40
|
+
`ADMIN_PASSWD=${options.adminPassword ?? 'admin'}`,
|
|
41
|
+
`REACTPRESS_LANG=${process.env.REACTPRESS_LANG ?? 'zh'}`,
|
|
42
|
+
'',
|
|
43
|
+
];
|
|
44
|
+
fs_extra_1.default.writeFileSync(paths.envPath, envLines.join('\n'), 'utf8');
|
|
45
|
+
if (options.monorepoRoot) {
|
|
46
|
+
seedBundledAssets(siteRoot, options.monorepoRoot);
|
|
47
|
+
}
|
|
48
|
+
const configPath = node_path_1.default.join(paths.reactpressDir, 'config.json');
|
|
49
|
+
if (!fs_extra_1.default.existsSync(configPath)) {
|
|
50
|
+
const config = {
|
|
51
|
+
version: 1,
|
|
52
|
+
database: { mode: 'embedded-sqlite', sqlitePath: paths.dbPath },
|
|
53
|
+
server: {
|
|
54
|
+
port,
|
|
55
|
+
apiPrefix: '/api',
|
|
56
|
+
siteUrl,
|
|
57
|
+
clientUrl: clientSiteUrl,
|
|
58
|
+
serverUrl: siteUrl,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
fs_extra_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
62
|
+
}
|
|
63
|
+
return paths;
|
|
64
|
+
}
|
|
65
|
+
function seedBundledAssets(siteRoot, monorepoRoot) {
|
|
66
|
+
seedSymlinkRegistry(node_path_1.default.join(monorepoRoot, 'plugins'), node_path_1.default.join(siteRoot, 'plugins'), 'local');
|
|
67
|
+
seedSymlinkRegistry(node_path_1.default.join(monorepoRoot, 'themes'), node_path_1.default.join(siteRoot, 'themes'), 'local', 'npm');
|
|
68
|
+
seedRuntimeThemes(siteRoot, monorepoRoot);
|
|
69
|
+
}
|
|
70
|
+
function seedSymlinkRegistry(sourceDir, targetDir, ...registryKeys) {
|
|
71
|
+
const sourcePackageJson = node_path_1.default.join(sourceDir, 'package.json');
|
|
72
|
+
const targetPackageJson = node_path_1.default.join(targetDir, 'package.json');
|
|
73
|
+
if (!fs_extra_1.default.existsSync(sourcePackageJson))
|
|
74
|
+
return;
|
|
75
|
+
fs_extra_1.default.mkdirSync(targetDir, { recursive: true });
|
|
76
|
+
if (!fs_extra_1.default.existsSync(targetPackageJson)) {
|
|
77
|
+
fs_extra_1.default.copyFileSync(sourcePackageJson, targetPackageJson);
|
|
78
|
+
}
|
|
79
|
+
let meta = {};
|
|
80
|
+
try {
|
|
81
|
+
meta = JSON.parse(fs_extra_1.default.readFileSync(targetPackageJson, 'utf8'));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
for (const key of registryKeys) {
|
|
87
|
+
const ids = Array.isArray(meta.reactpress?.[key]) ? meta.reactpress[key] : [];
|
|
88
|
+
for (const id of ids) {
|
|
89
|
+
if (typeof id !== 'string' || !id.trim())
|
|
90
|
+
continue;
|
|
91
|
+
const sourcePath = node_path_1.default.join(sourceDir, id.trim());
|
|
92
|
+
const targetPath = node_path_1.default.join(targetDir, id.trim());
|
|
93
|
+
if (!fs_extra_1.default.existsSync(sourcePath) || fs_extra_1.default.existsSync(targetPath))
|
|
94
|
+
continue;
|
|
95
|
+
fs_extra_1.default.symlinkSync(sourcePath, targetPath, 'dir');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function seedRuntimeThemes(siteRoot, monorepoRoot) {
|
|
100
|
+
const sourceRuntime = node_path_1.default.join(monorepoRoot, '.reactpress', 'runtime');
|
|
101
|
+
const targetRuntime = node_path_1.default.join(siteRoot, '.reactpress', 'runtime');
|
|
102
|
+
if (!fs_extra_1.default.existsSync(sourceRuntime))
|
|
103
|
+
return;
|
|
104
|
+
fs_extra_1.default.mkdirSync(node_path_1.default.join(siteRoot, '.reactpress'), { recursive: true });
|
|
105
|
+
for (const entry of fs_extra_1.default.readdirSync(sourceRuntime, { withFileTypes: true })) {
|
|
106
|
+
if (!entry.isDirectory() && !entry.isSymbolicLink())
|
|
107
|
+
continue;
|
|
108
|
+
const sourcePath = node_path_1.default.join(sourceRuntime, entry.name);
|
|
109
|
+
const targetPath = node_path_1.default.join(targetRuntime, entry.name);
|
|
110
|
+
if (fs_extra_1.default.existsSync(targetPath))
|
|
111
|
+
continue;
|
|
112
|
+
try {
|
|
113
|
+
if (!fs_extra_1.default.statSync(sourcePath).isDirectory())
|
|
114
|
+
continue;
|
|
115
|
+
fs_extra_1.default.mkdirSync(targetRuntime, { recursive: true });
|
|
116
|
+
fs_extra_1.default.symlinkSync(sourcePath, targetPath, 'dir');
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// skip broken entries
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function initLocalProject(projectRoot, options = {}) {
|
|
124
|
+
const paths = (0, paths_1.getProjectPaths)(projectRoot);
|
|
125
|
+
const port = options.port ?? 3002;
|
|
126
|
+
if ((await fs_extra_1.default.pathExists(paths.configPath)) && !options.force) {
|
|
127
|
+
return {
|
|
128
|
+
ok: false,
|
|
129
|
+
projectRoot,
|
|
130
|
+
message: '目录已是 ReactPress 项目。使用 --force 覆盖配置,或 --local 初始化 SQLite 本地模式。',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
await fs_extra_1.default.ensureDir(projectRoot);
|
|
134
|
+
ensureLocalSite(projectRoot, port);
|
|
135
|
+
const config = (await fs_extra_1.default.readJson(paths.configPath));
|
|
136
|
+
await (0, config_1.saveConfig)(projectRoot, config);
|
|
137
|
+
await (0, config_1.syncEnvFromConfig)(projectRoot, config);
|
|
138
|
+
return {
|
|
139
|
+
ok: true,
|
|
140
|
+
projectRoot,
|
|
141
|
+
message: 'ReactPress 本地项目(SQLite)初始化完成。运行 reactpress dev --local 启动。',
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=local-site.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-site.js","sourceRoot":"","sources":["../../../src/core/services/local-site.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-context.d.ts","sourceRoot":"","sources":["../../../src/core/utils/cli-context.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setProjectCwd = setProjectCwd;
|
|
4
|
+
exports.getProjectCwd = getProjectCwd;
|
|
5
|
+
let projectCwd;
|
|
6
|
+
function setProjectCwd(cwd) {
|
|
7
|
+
projectCwd = cwd ? cwd : undefined;
|
|
8
|
+
}
|
|
9
|
+
function getProjectCwd() {
|
|
10
|
+
return projectCwd ?? process.cwd();
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cli-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-context.js","sourceRoot":"","sources":["../../../src/core/utils/cli-context.ts"],"names":[],"mappings":";;AAEA,sCAEC;AAED,sCAEC;AARD,IAAI,UAA8B,CAAC;AAEnC,SAAgB,aAAa,CAAC,GAAY;IACxC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const CONFIG_DIR = ".reactpress";
|
|
2
|
+
export declare const CONFIG_FILE = "config.json";
|
|
3
|
+
export declare const PID_FILE = "server.pid";
|
|
4
|
+
export declare const ENV_FILE = ".env";
|
|
5
|
+
/** CLI 包根目录(编译后位于 out/core/utils → ../../../) */
|
|
6
|
+
export declare function getPackageRoot(): string;
|
|
7
|
+
export declare function getTemplatesDir(): string;
|
|
8
|
+
export interface ProjectPaths {
|
|
9
|
+
projectRoot: string;
|
|
10
|
+
reactpressDir: string;
|
|
11
|
+
configPath: string;
|
|
12
|
+
pidPath: string;
|
|
13
|
+
envPath: string;
|
|
14
|
+
dockerComposePath: string;
|
|
15
|
+
dbDataDir: string;
|
|
16
|
+
sqlitePath: string;
|
|
17
|
+
uploadsDir: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function getProjectPaths(projectRoot: string): ProjectPaths;
|
|
20
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/core/utils/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,QAAQ,eAAe,CAAC;AACrC,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,iDAAiD;AACjD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAcjE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENV_FILE = exports.PID_FILE = exports.CONFIG_FILE = exports.CONFIG_DIR = void 0;
|
|
4
|
+
exports.getPackageRoot = getPackageRoot;
|
|
5
|
+
exports.getTemplatesDir = getTemplatesDir;
|
|
6
|
+
exports.getProjectPaths = getProjectPaths;
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
exports.CONFIG_DIR = '.reactpress';
|
|
9
|
+
exports.CONFIG_FILE = 'config.json';
|
|
10
|
+
exports.PID_FILE = 'server.pid';
|
|
11
|
+
exports.ENV_FILE = '.env';
|
|
12
|
+
/** CLI 包根目录(编译后位于 out/core/utils → ../../../) */
|
|
13
|
+
function getPackageRoot() {
|
|
14
|
+
return (0, node_path_1.join)(__dirname, '..', '..', '..');
|
|
15
|
+
}
|
|
16
|
+
function getTemplatesDir() {
|
|
17
|
+
return (0, node_path_1.join)(getPackageRoot(), 'templates');
|
|
18
|
+
}
|
|
19
|
+
function getProjectPaths(projectRoot) {
|
|
20
|
+
const reactpressDir = (0, node_path_1.join)(projectRoot, exports.CONFIG_DIR);
|
|
21
|
+
const dataDir = (0, node_path_1.join)(projectRoot, 'data');
|
|
22
|
+
return {
|
|
23
|
+
projectRoot,
|
|
24
|
+
reactpressDir,
|
|
25
|
+
configPath: (0, node_path_1.join)(reactpressDir, exports.CONFIG_FILE),
|
|
26
|
+
pidPath: (0, node_path_1.join)(reactpressDir, exports.PID_FILE),
|
|
27
|
+
envPath: (0, node_path_1.join)(projectRoot, exports.ENV_FILE),
|
|
28
|
+
dockerComposePath: (0, node_path_1.join)(reactpressDir, 'docker-compose.yml'),
|
|
29
|
+
dbDataDir: (0, node_path_1.join)(reactpressDir, 'data'),
|
|
30
|
+
sqlitePath: (0, node_path_1.join)(dataDir, 'reactpress.db'),
|
|
31
|
+
uploadsDir: (0, node_path_1.join)(projectRoot, 'uploads'),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/utils/paths.ts"],"names":[],"mappings":";;;AAQA,wCAEC;AAED,0CAEC;AAcD,0CAcC;AA1CD,yCAAiC;AAEpB,QAAA,UAAU,GAAG,aAAa,CAAC;AAC3B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,QAAQ,GAAG,YAAY,CAAC;AACxB,QAAA,QAAQ,GAAG,MAAM,CAAC;AAE/B,iDAAiD;AACjD,SAAgB,cAAc;IAC5B,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,IAAA,gBAAI,EAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAcD,SAAgB,eAAe,CAAC,WAAmB;IACjD,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,kBAAU,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO;QACL,WAAW;QACX,aAAa;QACb,UAAU,EAAE,IAAA,gBAAI,EAAC,aAAa,EAAE,mBAAW,CAAC;QAC5C,OAAO,EAAE,IAAA,gBAAI,EAAC,aAAa,EAAE,gBAAQ,CAAC;QACtC,OAAO,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,gBAAQ,CAAC;QACpC,iBAAiB,EAAE,IAAA,gBAAI,EAAC,aAAa,EAAE,oBAAoB,CAAC;QAC5D,SAAS,EAAE,IAAA,gBAAI,EAAC,aAAa,EAAE,MAAM,CAAC;QACtC,UAAU,EAAE,IAAA,gBAAI,EAAC,OAAO,EAAE,eAAe,CAAC;QAC1C,UAAU,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,SAAS,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function isWindows(): boolean;
|
|
2
|
+
export declare function isMac(): boolean;
|
|
3
|
+
export declare function getDockerComposeCommand(): string;
|
|
4
|
+
export declare function getNpmCommand(): string;
|
|
5
|
+
export declare function getNpxCommand(): string;
|
|
6
|
+
export declare function getNodeCommand(): string;
|
|
7
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/core/utils/platform.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isWindows = isWindows;
|
|
4
|
+
exports.isMac = isMac;
|
|
5
|
+
exports.getDockerComposeCommand = getDockerComposeCommand;
|
|
6
|
+
exports.getNpmCommand = getNpmCommand;
|
|
7
|
+
exports.getNpxCommand = getNpxCommand;
|
|
8
|
+
exports.getNodeCommand = getNodeCommand;
|
|
9
|
+
const node_os_1 = require("node:os");
|
|
10
|
+
function isWindows() {
|
|
11
|
+
return (0, node_os_1.platform)() === 'win32';
|
|
12
|
+
}
|
|
13
|
+
function isMac() {
|
|
14
|
+
return (0, node_os_1.platform)() === 'darwin';
|
|
15
|
+
}
|
|
16
|
+
function getDockerComposeCommand() {
|
|
17
|
+
return isWindows() ? 'docker-compose.exe' : 'docker-compose';
|
|
18
|
+
}
|
|
19
|
+
function getNpmCommand() {
|
|
20
|
+
return isWindows() ? 'npm.cmd' : 'npm';
|
|
21
|
+
}
|
|
22
|
+
function getNpxCommand() {
|
|
23
|
+
return isWindows() ? 'npx.cmd' : 'npx';
|
|
24
|
+
}
|
|
25
|
+
function getNodeCommand() {
|
|
26
|
+
return process.execPath;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/core/utils/platform.ts"],"names":[],"mappings":";;AAEA,8BAEC;AAED,sBAEC;AAED,0DAEC;AAED,sCAEC;AAED,sCAEC;AAED,wCAEC;AAxBD,qCAAmC;AAEnC,SAAgB,SAAS;IACvB,OAAO,IAAA,kBAAQ,GAAE,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,SAAgB,KAAK;IACnB,OAAO,IAAA,kBAAQ,GAAE,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC/D,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isPortAvailable(port: number, host?: string): Promise<boolean>;
|
|
2
|
+
export declare function findAvailablePort(startPort: number, maxAttempts?: number): Promise<number>;
|
|
3
|
+
export declare function isDockerPortBindError(output: string): boolean;
|
|
4
|
+
//# sourceMappingURL=port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/core/utils/port.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAShF;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,SAAuB,GACjC,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isPortAvailable = isPortAvailable;
|
|
7
|
+
exports.findAvailablePort = findAvailablePort;
|
|
8
|
+
exports.isDockerPortBindError = isDockerPortBindError;
|
|
9
|
+
const node_net_1 = __importDefault(require("node:net"));
|
|
10
|
+
const DEFAULT_MAX_ATTEMPTS = 100;
|
|
11
|
+
function isPortAvailable(port, host = '0.0.0.0') {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
const server = node_net_1.default.createServer();
|
|
14
|
+
server.once('error', () => resolve(false));
|
|
15
|
+
server.once('listening', () => {
|
|
16
|
+
server.close(() => resolve(true));
|
|
17
|
+
});
|
|
18
|
+
server.listen(port, host);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async function findAvailablePort(startPort, maxAttempts = DEFAULT_MAX_ATTEMPTS) {
|
|
22
|
+
for (let port = startPort; port < startPort + maxAttempts; port++) {
|
|
23
|
+
if (await isPortAvailable(port)) {
|
|
24
|
+
return port;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`在 ${startPort}-${startPort + maxAttempts - 1} 范围内未找到可用端口`);
|
|
28
|
+
}
|
|
29
|
+
function isDockerPortBindError(output) {
|
|
30
|
+
return /port is already allocated|address already in use/i.test(output);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/core/utils/port.ts"],"names":[],"mappings":";;;;;AAIA,0CASC;AAED,8CAUC;AAED,sDAEC;AA7BD,wDAA2B;AAE3B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,SAAgB,eAAe,CAAC,IAAY,EAAE,IAAI,GAAG,SAAS;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,kBAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,WAAW,GAAG,oBAAoB;IAElC,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QAClE,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,KAAK,SAAS,IAAI,SAAS,GAAG,WAAW,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,mDAAmD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-dev-runner.d.ts","sourceRoot":"","sources":["../../src/lib/api-dev-runner.ts"],"names":[],"mappings":""}
|