@wasmsoft/fantastic 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/bin/run.js +27 -0
- package/bin/supervisor.js +65 -0
- package/dist/acquire/central-url.d.ts +9 -0
- package/dist/acquire/central-url.d.ts.map +1 -0
- package/dist/acquire/central-url.js +74 -0
- package/dist/acquire/central-url.js.map +1 -0
- package/dist/acquire/code.d.ts +21 -0
- package/dist/acquire/code.d.ts.map +1 -0
- package/dist/acquire/code.js +66 -0
- package/dist/acquire/code.js.map +1 -0
- package/dist/acquire/compatibility.d.ts +18 -0
- package/dist/acquire/compatibility.d.ts.map +1 -0
- package/dist/acquire/compatibility.js +36 -0
- package/dist/acquire/compatibility.js.map +1 -0
- package/dist/acquire/fetch.d.ts +26 -0
- package/dist/acquire/fetch.d.ts.map +1 -0
- package/dist/acquire/fetch.js +72 -0
- package/dist/acquire/fetch.js.map +1 -0
- package/dist/acquire/latest.d.ts +24 -0
- package/dist/acquire/latest.d.ts.map +1 -0
- package/dist/acquire/latest.js +95 -0
- package/dist/acquire/latest.js.map +1 -0
- package/dist/backup/archive.d.ts +26 -0
- package/dist/backup/archive.d.ts.map +1 -0
- package/dist/backup/archive.js +123 -0
- package/dist/backup/archive.js.map +1 -0
- package/dist/backup/restore.d.ts +46 -0
- package/dist/backup/restore.d.ts.map +1 -0
- package/dist/backup/restore.js +164 -0
- package/dist/backup/restore.js.map +1 -0
- package/dist/base-command.d.ts +54 -0
- package/dist/base-command.d.ts.map +1 -0
- package/dist/base-command.js +120 -0
- package/dist/base-command.js.map +1 -0
- package/dist/bundle-format/index.d.ts +6 -0
- package/dist/bundle-format/index.d.ts.map +1 -0
- package/dist/bundle-format/index.js +36 -0
- package/dist/bundle-format/index.js.map +1 -0
- package/dist/commands/activate.d.ts +15 -0
- package/dist/commands/activate.d.ts.map +1 -0
- package/dist/commands/activate.js +139 -0
- package/dist/commands/activate.js.map +1 -0
- package/dist/commands/backup.d.ts +11 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +75 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/config/get.d.ts +10 -0
- package/dist/commands/config/get.d.ts.map +1 -0
- package/dist/commands/config/get.js +33 -0
- package/dist/commands/config/get.js.map +1 -0
- package/dist/commands/config/list.d.ts +7 -0
- package/dist/commands/config/list.d.ts.map +1 -0
- package/dist/commands/config/list.js +43 -0
- package/dist/commands/config/list.js.map +1 -0
- package/dist/commands/config/set.d.ts +11 -0
- package/dist/commands/config/set.d.ts.map +1 -0
- package/dist/commands/config/set.js +56 -0
- package/dist/commands/config/set.js.map +1 -0
- package/dist/commands/db/migrate.d.ts +10 -0
- package/dist/commands/db/migrate.d.ts.map +1 -0
- package/dist/commands/db/migrate.js +67 -0
- package/dist/commands/db/migrate.js.map +1 -0
- package/dist/commands/dev.d.ts +19 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +149 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +11 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +75 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/health.d.ts +12 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +109 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/install.d.ts +60 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +486 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/iptv/snapshot.d.ts +10 -0
- package/dist/commands/iptv/snapshot.d.ts.map +1 -0
- package/dist/commands/iptv/snapshot.js +55 -0
- package/dist/commands/iptv/snapshot.js.map +1 -0
- package/dist/commands/library/drives.d.ts +7 -0
- package/dist/commands/library/drives.d.ts.map +1 -0
- package/dist/commands/library/drives.js +71 -0
- package/dist/commands/library/drives.js.map +1 -0
- package/dist/commands/library/relink.d.ts +10 -0
- package/dist/commands/library/relink.d.ts.map +1 -0
- package/dist/commands/library/relink.js +72 -0
- package/dist/commands/library/relink.js.map +1 -0
- package/dist/commands/library/scan.d.ts +16 -0
- package/dist/commands/library/scan.d.ts.map +1 -0
- package/dist/commands/library/scan.js +87 -0
- package/dist/commands/library/scan.js.map +1 -0
- package/dist/commands/library/sections.d.ts +7 -0
- package/dist/commands/library/sections.d.ts.map +1 -0
- package/dist/commands/library/sections.js +33 -0
- package/dist/commands/library/sections.js.map +1 -0
- package/dist/commands/library/status.d.ts +7 -0
- package/dist/commands/library/status.d.ts.map +1 -0
- package/dist/commands/library/status.js +37 -0
- package/dist/commands/library/status.js.map +1 -0
- package/dist/commands/list.d.ts +7 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +73 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/live/channels.d.ts +10 -0
- package/dist/commands/live/channels.d.ts.map +1 -0
- package/dist/commands/live/channels.js +55 -0
- package/dist/commands/live/channels.js.map +1 -0
- package/dist/commands/live/test.d.ts +15 -0
- package/dist/commands/live/test.d.ts.map +1 -0
- package/dist/commands/live/test.js +116 -0
- package/dist/commands/live/test.js.map +1 -0
- package/dist/commands/logs.d.ts +16 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +77 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/migrate-cli.d.ts +11 -0
- package/dist/commands/migrate-cli.d.ts.map +1 -0
- package/dist/commands/migrate-cli.js +116 -0
- package/dist/commands/migrate-cli.js.map +1 -0
- package/dist/commands/owner/reset.d.ts +7 -0
- package/dist/commands/owner/reset.d.ts.map +1 -0
- package/dist/commands/owner/reset.js +74 -0
- package/dist/commands/owner/reset.js.map +1 -0
- package/dist/commands/restart.d.ts +11 -0
- package/dist/commands/restart.d.ts.map +1 -0
- package/dist/commands/restart.js +53 -0
- package/dist/commands/restart.js.map +1 -0
- package/dist/commands/restore.d.ts +17 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +148 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/self-update.d.ts +10 -0
- package/dist/commands/self-update.d.ts.map +1 -0
- package/dist/commands/self-update.js +98 -0
- package/dist/commands/self-update.js.map +1 -0
- package/dist/commands/setup.d.ts +19 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +111 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/shell.d.ts +118 -0
- package/dist/commands/shell.d.ts.map +1 -0
- package/dist/commands/shell.js +415 -0
- package/dist/commands/shell.js.map +1 -0
- package/dist/commands/start.d.ts +12 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +108 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +115 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +11 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +45 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/stream/cancel.d.ts +13 -0
- package/dist/commands/stream/cancel.d.ts.map +1 -0
- package/dist/commands/stream/cancel.js +31 -0
- package/dist/commands/stream/cancel.js.map +1 -0
- package/dist/commands/stream/encoders.d.ts +7 -0
- package/dist/commands/stream/encoders.d.ts.map +1 -0
- package/dist/commands/stream/encoders.js +42 -0
- package/dist/commands/stream/encoders.js.map +1 -0
- package/dist/commands/stream/queue.d.ts +7 -0
- package/dist/commands/stream/queue.d.ts.map +1 -0
- package/dist/commands/stream/queue.js +52 -0
- package/dist/commands/stream/queue.js.map +1 -0
- package/dist/commands/stream/sessions.d.ts +7 -0
- package/dist/commands/stream/sessions.d.ts.map +1 -0
- package/dist/commands/stream/sessions.js +44 -0
- package/dist/commands/stream/sessions.js.map +1 -0
- package/dist/commands/uninstall.d.ts +23 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +290 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +21 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +290 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/watch.d.ts +10 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +38 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config/local-config.d.ts +22 -0
- package/dist/config/local-config.d.ts.map +1 -0
- package/dist/config/local-config.js +79 -0
- package/dist/config/local-config.js.map +1 -0
- package/dist/core-scripts/run.d.ts +22 -0
- package/dist/core-scripts/run.d.ts.map +1 -0
- package/dist/core-scripts/run.js +65 -0
- package/dist/core-scripts/run.js.map +1 -0
- package/dist/doctor/check.types.d.ts +51 -0
- package/dist/doctor/check.types.d.ts.map +1 -0
- package/dist/doctor/check.types.js +14 -0
- package/dist/doctor/check.types.js.map +1 -0
- package/dist/doctor/checks/core.check.d.ts +11 -0
- package/dist/doctor/checks/core.check.d.ts.map +1 -0
- package/dist/doctor/checks/core.check.js +104 -0
- package/dist/doctor/checks/core.check.js.map +1 -0
- package/dist/doctor/checks/data.check.d.ts +11 -0
- package/dist/doctor/checks/data.check.d.ts.map +1 -0
- package/dist/doctor/checks/data.check.js +70 -0
- package/dist/doctor/checks/data.check.js.map +1 -0
- package/dist/doctor/checks/environment.check.d.ts +6 -0
- package/dist/doctor/checks/environment.check.d.ts.map +1 -0
- package/dist/doctor/checks/environment.check.js +70 -0
- package/dist/doctor/checks/environment.check.js.map +1 -0
- package/dist/doctor/checks/integrity.check.d.ts +4 -0
- package/dist/doctor/checks/integrity.check.d.ts.map +1 -0
- package/dist/doctor/checks/integrity.check.js +89 -0
- package/dist/doctor/checks/integrity.check.js.map +1 -0
- package/dist/doctor/checks/isolation.check.d.ts +49 -0
- package/dist/doctor/checks/isolation.check.d.ts.map +1 -0
- package/dist/doctor/checks/isolation.check.js +220 -0
- package/dist/doctor/checks/isolation.check.js.map +1 -0
- package/dist/doctor/checks/licence.check.d.ts +8 -0
- package/dist/doctor/checks/licence.check.d.ts.map +1 -0
- package/dist/doctor/checks/licence.check.js +172 -0
- package/dist/doctor/checks/licence.check.js.map +1 -0
- package/dist/doctor/checks/ports.check.d.ts +4 -0
- package/dist/doctor/checks/ports.check.d.ts.map +1 -0
- package/dist/doctor/checks/ports.check.js +52 -0
- package/dist/doctor/checks/ports.check.js.map +1 -0
- package/dist/doctor/checks/supervisor.check.d.ts +19 -0
- package/dist/doctor/checks/supervisor.check.d.ts.map +1 -0
- package/dist/doctor/checks/supervisor.check.js +152 -0
- package/dist/doctor/checks/supervisor.check.js.map +1 -0
- package/dist/doctor/checks/tooling.check.d.ts +3 -0
- package/dist/doctor/checks/tooling.check.d.ts.map +1 -0
- package/dist/doctor/checks/tooling.check.js +43 -0
- package/dist/doctor/checks/tooling.check.js.map +1 -0
- package/dist/doctor/registry.d.ts +15 -0
- package/dist/doctor/registry.d.ts.map +1 -0
- package/dist/doctor/registry.js +53 -0
- package/dist/doctor/registry.js.map +1 -0
- package/dist/exit-codes.d.ts +18 -0
- package/dist/exit-codes.d.ts.map +1 -0
- package/dist/exit-codes.js +23 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/logs/sink.d.ts +11 -0
- package/dist/logs/sink.d.ts.map +1 -0
- package/dist/logs/sink.js +73 -0
- package/dist/logs/sink.js.map +1 -0
- package/dist/logs/tail.d.ts +17 -0
- package/dist/logs/tail.d.ts.map +1 -0
- package/dist/logs/tail.js +98 -0
- package/dist/logs/tail.js.map +1 -0
- package/dist/packaging/boot-task.d.ts +56 -0
- package/dist/packaging/boot-task.d.ts.map +1 -0
- package/dist/packaging/boot-task.js +151 -0
- package/dist/packaging/boot-task.js.map +1 -0
- package/dist/packaging/install.d.ts +154 -0
- package/dist/packaging/install.d.ts.map +1 -0
- package/dist/packaging/install.js +381 -0
- package/dist/packaging/install.js.map +1 -0
- package/dist/packaging/layout.d.ts +153 -0
- package/dist/packaging/layout.d.ts.map +1 -0
- package/dist/packaging/layout.js +168 -0
- package/dist/packaging/layout.js.map +1 -0
- package/dist/packaging/machine-path.d.ts +52 -0
- package/dist/packaging/machine-path.d.ts.map +1 -0
- package/dist/packaging/machine-path.js +237 -0
- package/dist/packaging/machine-path.js.map +1 -0
- package/dist/packaging/manifest.d.ts +37 -0
- package/dist/packaging/manifest.d.ts.map +1 -0
- package/dist/packaging/manifest.js +115 -0
- package/dist/packaging/manifest.js.map +1 -0
- package/dist/packaging/shims.d.ts +31 -0
- package/dist/packaging/shims.d.ts.map +1 -0
- package/dist/packaging/shims.js +165 -0
- package/dist/packaging/shims.js.map +1 -0
- package/dist/probes/internal-paths.d.ts +35 -0
- package/dist/probes/internal-paths.d.ts.map +1 -0
- package/dist/probes/internal-paths.js +58 -0
- package/dist/probes/internal-paths.js.map +1 -0
- package/dist/probes/internal.client.d.ts +54 -0
- package/dist/probes/internal.client.d.ts.map +1 -0
- package/dist/probes/internal.client.js +123 -0
- package/dist/probes/internal.client.js.map +1 -0
- package/dist/probes/port.probe.d.ts +21 -0
- package/dist/probes/port.probe.d.ts.map +1 -0
- package/dist/probes/port.probe.js +42 -0
- package/dist/probes/port.probe.js.map +1 -0
- package/dist/probes/service.probe.d.ts +29 -0
- package/dist/probes/service.probe.d.ts.map +1 -0
- package/dist/probes/service.probe.js +65 -0
- package/dist/probes/service.probe.js.map +1 -0
- package/dist/profiles/appliance.profile.d.ts +20 -0
- package/dist/profiles/appliance.profile.d.ts.map +1 -0
- package/dist/profiles/appliance.profile.js +137 -0
- package/dist/profiles/appliance.profile.js.map +1 -0
- package/dist/profiles/dev.profile.d.ts +22 -0
- package/dist/profiles/dev.profile.d.ts.map +1 -0
- package/dist/profiles/dev.profile.js +104 -0
- package/dist/profiles/dev.profile.js.map +1 -0
- package/dist/profiles/resolve.d.ts +37 -0
- package/dist/profiles/resolve.d.ts.map +1 -0
- package/dist/profiles/resolve.js +198 -0
- package/dist/profiles/resolve.js.map +1 -0
- package/dist/profiles/types.d.ts +57 -0
- package/dist/profiles/types.d.ts.map +1 -0
- package/dist/profiles/types.js +15 -0
- package/dist/profiles/types.js.map +1 -0
- package/dist/registry/local-registry.d.ts +79 -0
- package/dist/registry/local-registry.d.ts.map +1 -0
- package/dist/registry/local-registry.js +252 -0
- package/dist/registry/local-registry.js.map +1 -0
- package/dist/render/banner.d.ts +13 -0
- package/dist/render/banner.d.ts.map +1 -0
- package/dist/render/banner.js +83 -0
- package/dist/render/banner.js.map +1 -0
- package/dist/render/boot.render.d.ts +123 -0
- package/dist/render/boot.render.d.ts.map +1 -0
- package/dist/render/boot.render.js +288 -0
- package/dist/render/boot.render.js.map +1 -0
- package/dist/render/brand.d.ts +16 -0
- package/dist/render/brand.d.ts.map +1 -0
- package/dist/render/brand.js +22 -0
- package/dist/render/brand.js.map +1 -0
- package/dist/render/doctor.render.d.ts +12 -0
- package/dist/render/doctor.render.d.ts.map +1 -0
- package/dist/render/doctor.render.js +95 -0
- package/dist/render/doctor.render.js.map +1 -0
- package/dist/render/json.d.ts +29 -0
- package/dist/render/json.d.ts.map +1 -0
- package/dist/render/json.js +19 -0
- package/dist/render/json.js.map +1 -0
- package/dist/render/licence.render.d.ts +10 -0
- package/dist/render/licence.render.d.ts.map +1 -0
- package/dist/render/licence.render.js +167 -0
- package/dist/render/licence.render.js.map +1 -0
- package/dist/render/status.render.d.ts +6 -0
- package/dist/render/status.render.d.ts.map +1 -0
- package/dist/render/status.render.js +52 -0
- package/dist/render/status.render.js.map +1 -0
- package/dist/render/theme.d.ts +66 -0
- package/dist/render/theme.d.ts.map +1 -0
- package/dist/render/theme.js +89 -0
- package/dist/render/theme.js.map +1 -0
- package/dist/runtime-guard.d.ts +19 -0
- package/dist/runtime-guard.d.ts.map +1 -0
- package/dist/runtime-guard.js +57 -0
- package/dist/runtime-guard.js.map +1 -0
- package/dist/shell/input-mode.d.ts +25 -0
- package/dist/shell/input-mode.d.ts.map +1 -0
- package/dist/shell/input-mode.js +17 -0
- package/dist/shell/input-mode.js.map +1 -0
- package/dist/shell/parse-line.d.ts +6 -0
- package/dist/shell/parse-line.d.ts.map +1 -0
- package/dist/shell/parse-line.js +62 -0
- package/dist/shell/parse-line.js.map +1 -0
- package/dist/shell/suggestions.d.ts +14 -0
- package/dist/shell/suggestions.d.ts.map +1 -0
- package/dist/shell/suggestions.js +35 -0
- package/dist/shell/suggestions.js.map +1 -0
- package/dist/supervisor/dependencies.d.ts +2 -0
- package/dist/supervisor/dependencies.d.ts.map +1 -0
- package/dist/supervisor/dependencies.js +38 -0
- package/dist/supervisor/dependencies.js.map +1 -0
- package/dist/supervisor/entry.d.ts +36 -0
- package/dist/supervisor/entry.d.ts.map +1 -0
- package/dist/supervisor/entry.js +171 -0
- package/dist/supervisor/entry.js.map +1 -0
- package/dist/supervisor/inspect.d.ts +17 -0
- package/dist/supervisor/inspect.d.ts.map +1 -0
- package/dist/supervisor/inspect.js +39 -0
- package/dist/supervisor/inspect.js.map +1 -0
- package/dist/supervisor/invocation.d.ts +27 -0
- package/dist/supervisor/invocation.d.ts.map +1 -0
- package/dist/supervisor/invocation.js +33 -0
- package/dist/supervisor/invocation.js.map +1 -0
- package/dist/supervisor/monitor.d.ts +63 -0
- package/dist/supervisor/monitor.d.ts.map +1 -0
- package/dist/supervisor/monitor.js +141 -0
- package/dist/supervisor/monitor.js.map +1 -0
- package/dist/supervisor/orchestrator.d.ts +52 -0
- package/dist/supervisor/orchestrator.d.ts.map +1 -0
- package/dist/supervisor/orchestrator.js +154 -0
- package/dist/supervisor/orchestrator.js.map +1 -0
- package/dist/supervisor/pidfile.d.ts +21 -0
- package/dist/supervisor/pidfile.d.ts.map +1 -0
- package/dist/supervisor/pidfile.js +39 -0
- package/dist/supervisor/pidfile.js.map +1 -0
- package/dist/supervisor/process-identity.d.ts +19 -0
- package/dist/supervisor/process-identity.d.ts.map +1 -0
- package/dist/supervisor/process-identity.js +51 -0
- package/dist/supervisor/process-identity.js.map +1 -0
- package/dist/supervisor/readiness.d.ts +17 -0
- package/dist/supervisor/readiness.d.ts.map +1 -0
- package/dist/supervisor/readiness.js +52 -0
- package/dist/supervisor/readiness.js.map +1 -0
- package/dist/supervisor/restart-consumer.d.ts +37 -0
- package/dist/supervisor/restart-consumer.d.ts.map +1 -0
- package/dist/supervisor/restart-consumer.js +119 -0
- package/dist/supervisor/restart-consumer.js.map +1 -0
- package/dist/supervisor/runner.d.ts +2 -0
- package/dist/supervisor/runner.d.ts.map +1 -0
- package/dist/supervisor/runner.js +118 -0
- package/dist/supervisor/runner.js.map +1 -0
- package/dist/supervisor/schedule-timer.d.ts +38 -0
- package/dist/supervisor/schedule-timer.d.ts.map +1 -0
- package/dist/supervisor/schedule-timer.js +148 -0
- package/dist/supervisor/schedule-timer.js.map +1 -0
- package/dist/supervisor/spawn.d.ts +18 -0
- package/dist/supervisor/spawn.d.ts.map +1 -0
- package/dist/supervisor/spawn.js +119 -0
- package/dist/supervisor/spawn.js.map +1 -0
- package/dist/supervisor/state-files.d.ts +33 -0
- package/dist/supervisor/state-files.d.ts.map +1 -0
- package/dist/supervisor/state-files.js +110 -0
- package/dist/supervisor/state-files.js.map +1 -0
- package/dist/supervisor/tree-kill.d.ts +14 -0
- package/dist/supervisor/tree-kill.d.ts.map +1 -0
- package/dist/supervisor/tree-kill.js +82 -0
- package/dist/supervisor/tree-kill.js.map +1 -0
- package/dist/ui/health-panel.d.ts +8 -0
- package/dist/ui/health-panel.d.ts.map +1 -0
- package/dist/ui/health-panel.js +91 -0
- package/dist/ui/health-panel.js.map +1 -0
- package/dist/updating/apply.d.ts +50 -0
- package/dist/updating/apply.d.ts.map +1 -0
- package/dist/updating/apply.js +172 -0
- package/dist/updating/apply.js.map +1 -0
- package/dist/updating/download.d.ts +44 -0
- package/dist/updating/download.d.ts.map +1 -0
- package/dist/updating/download.js +144 -0
- package/dist/updating/download.js.map +1 -0
- package/dist/updating/rollback.d.ts +33 -0
- package/dist/updating/rollback.d.ts.map +1 -0
- package/dist/updating/rollback.js +54 -0
- package/dist/updating/rollback.js.map +1 -0
- package/dist/updating/self.d.ts +16 -0
- package/dist/updating/self.d.ts.map +1 -0
- package/dist/updating/self.js +50 -0
- package/dist/updating/self.js.map +1 -0
- package/dist/updating/verify.d.ts +25 -0
- package/dist/updating/verify.d.ts.map +1 -0
- package/dist/updating/verify.js +51 -0
- package/dist/updating/verify.js.map +1 -0
- package/dist/updating/versions.d.ts +31 -0
- package/dist/updating/versions.d.ts.map +1 -0
- package/dist/updating/versions.js +78 -0
- package/dist/updating/versions.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { clearScreenDown, createInterface, cursorTo, emitKeypressEvents, moveCursor } from "node:readline";
|
|
2
|
+
import { search } from "@inquirer/prompts";
|
|
3
|
+
import { BaseCommand, EXIT_CODE_HELP } from "../base-command.js";
|
|
4
|
+
import { renderBanner } from "../render/banner.js";
|
|
5
|
+
import { c, glyph } from "../render/theme.js";
|
|
6
|
+
import { EXIT } from "../exit-codes.js";
|
|
7
|
+
import { splitCommandLine } from "../shell/parse-line.js";
|
|
8
|
+
import { restoreShellInput } from "../shell/input-mode.js";
|
|
9
|
+
import { matchCommands } from "../shell/suggestions.js";
|
|
10
|
+
/** أوامر الصَدَفة نفسها. ليست أوامر oclif فلا تُبحَث في شجرة الأوامر. */
|
|
11
|
+
const BUILTIN = {
|
|
12
|
+
exit: ["exit", "quit", "q"],
|
|
13
|
+
help: ["help", "?"],
|
|
14
|
+
clear: ["clear", "cls"],
|
|
15
|
+
};
|
|
16
|
+
const PROMPT = "fantastic ❯ ";
|
|
17
|
+
/**
|
|
18
|
+
* كم اقتراحًا يُعرَض تحت المِحَثّ. ستّة تملأ العين ولا تدفع الشاشة إلى التمرير — واللوحة تُرسَم أسفل
|
|
19
|
+
* سطر الكتابة ثم يعود المؤشّر إليه، وتمريرُ الطرفية أثناء ذلك يفسد حساب العودة.
|
|
20
|
+
*/
|
|
21
|
+
const PANEL_ROWS = 6;
|
|
22
|
+
/** المفتاح الذي يفتح القائمة الكاملة، على عادة claude code. */
|
|
23
|
+
const MENU_KEY = "/";
|
|
24
|
+
/**
|
|
25
|
+
* أوامر لا تصلح داخل صَدَفة: تمسك الطرفية إلى الأبد أو حتى Ctrl+C، وإيقافها بـCtrl+C داخل الصَدَفة
|
|
26
|
+
* يقتل الصَدَفة معها لأن الإشارة تصل العملية كلها لا الأمر وحده.
|
|
27
|
+
* **تُرفَض برسالة تقول البديل**، لا تُمنَع صامتة: المنع بلا بديل يبدو عطبًا.
|
|
28
|
+
*/
|
|
29
|
+
const FOREGROUND_ONLY = {
|
|
30
|
+
dev: "Runs in the foreground until Ctrl+C, which would end this shell too. Run it in its own terminal: fantastic dev",
|
|
31
|
+
};
|
|
32
|
+
export default class Shell extends BaseCommand {
|
|
33
|
+
static description = "Open the interactive shell: run commands one after another without retyping `fantastic`";
|
|
34
|
+
static examples = ["<%= config.bin %>", "<%= config.bin %> shell"];
|
|
35
|
+
static help = EXIT_CODE_HELP;
|
|
36
|
+
static flags = {};
|
|
37
|
+
async run() {
|
|
38
|
+
const { flags } = await this.parse(Shell);
|
|
39
|
+
if (flags.json) {
|
|
40
|
+
this.error("The interactive shell has no machine-readable form — run a command directly instead.", {
|
|
41
|
+
exit: EXIT.USAGE,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// بلا طرفية لا مِحَثّ ولا مُدخِل: مخرَجٌ مُمرَّر بأنبوب يعني سكربتًا، والسكربت ينادي أمرًا بعينه.
|
|
45
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
46
|
+
this.error("The interactive shell needs a terminal — run a command directly instead.", { exit: EXIT.USAGE });
|
|
47
|
+
}
|
|
48
|
+
// ملفّ التشغيل يُستنتَج **مرّة واحدة للجلسة كلها** ويُعرَض في البانر، فلا يبقى مخمَّنًا في كل أمر.
|
|
49
|
+
const profile = this.loadProfile(flags.profile, false, flags.product);
|
|
50
|
+
this.log(renderBanner({
|
|
51
|
+
profile: profile.kind,
|
|
52
|
+
version: this.config.version,
|
|
53
|
+
root: profile.root,
|
|
54
|
+
}));
|
|
55
|
+
this.log(this.hintLine());
|
|
56
|
+
await this.loop();
|
|
57
|
+
}
|
|
58
|
+
// ── الحلقة ──────────────────────────────────────────────────────────────
|
|
59
|
+
async loop() {
|
|
60
|
+
const rl = createInterface({
|
|
61
|
+
input: process.stdin,
|
|
62
|
+
output: process.stdout,
|
|
63
|
+
prompt: c.accent(PROMPT),
|
|
64
|
+
historySize: 200,
|
|
65
|
+
completer: (line) => this.complete(line),
|
|
66
|
+
});
|
|
67
|
+
// Ctrl+C عند المِحَثّ يمسح السطر ولا يُنهي الجلسة — كما في أي صَدَفة. الخروج بـexit أو Ctrl+D.
|
|
68
|
+
rl.on("SIGINT", () => {
|
|
69
|
+
this.panelRows = 0;
|
|
70
|
+
this.log(c.dim(" (use `exit` or Ctrl+D to leave)"));
|
|
71
|
+
rl.prompt();
|
|
72
|
+
});
|
|
73
|
+
this.installKeyInterceptor(rl);
|
|
74
|
+
this.restoreInput(rl);
|
|
75
|
+
rl.prompt();
|
|
76
|
+
for await (const line of rl) {
|
|
77
|
+
// اللوحة رُسمت **تحت** سطر المِحَثّ، وضغطة Enter نقلت المؤشّر إلى أوّلها. مسحُ ما تحت المؤشّر
|
|
78
|
+
// هنا يزيلها قبل أن يكتب الأمر مخرجه فوق نصفها. ولا يقع هذا في مُعالِج المفاتيح لأن مُستمِع
|
|
79
|
+
// readline سُجّل قبل مُستمِعنا، فحين يصل الدور إلينا يكون السطر قد أُرسل والمؤشّر قد تحرّك.
|
|
80
|
+
clearScreenDown(process.stdout);
|
|
81
|
+
this.panelRows = 0;
|
|
82
|
+
const done = await this.handleLine(line, rl);
|
|
83
|
+
if (done)
|
|
84
|
+
break;
|
|
85
|
+
rl.prompt();
|
|
86
|
+
}
|
|
87
|
+
rl.close();
|
|
88
|
+
this.log(c.dim("Bye."));
|
|
89
|
+
}
|
|
90
|
+
// ── الاقتراحات ─────────────────────────────────────────────────────────
|
|
91
|
+
/** عدد أسطر اللوحة المرسومة الآن، لتُمحى قبل رسم غيرها. */
|
|
92
|
+
panelRows = 0;
|
|
93
|
+
/** ما تعرضه اللوحة الآن. مصفوفة فارغة تعني: لا لوحة، فالأسهم للتاريخ. */
|
|
94
|
+
matches = [];
|
|
95
|
+
/** المُظلَّل، أو -1 حين لم يتنقّل المستخدم بعد — وعندها Enter يُرسل ما كُتب لا ما هو معروض. */
|
|
96
|
+
selected = -1;
|
|
97
|
+
keypressHandler;
|
|
98
|
+
/**
|
|
99
|
+
* AR: يجعل الصَدَفة **المُستمِع الوحيد** للمفاتيح، وتمرّر هي ما يخصّ readline إليه.
|
|
100
|
+
*
|
|
101
|
+
* الترتيب هو كل شيء: readline يسجّل مُستمِعه عند إنشاء الواجهة، وكل مُستمِع يُضاف بعده يعمل
|
|
102
|
+
* **بعده** — فلا يستطيع منعه من التصرّف. ولهذا كان سهم واحد يحرّك التظليل ويستبدل السطر بأمرٍ
|
|
103
|
+
* من التاريخ معًا. نأخذ مُستمِعيه ونحتفظ بهم، ونصير نحن الوحيدين، فنقرّر: ما يخصّ اللوحة يُبتلَع،
|
|
104
|
+
* وما عداه يُمرَّر كما هو فلا يفقد readline حرفًا ولا مفتاح تحرير.
|
|
105
|
+
*
|
|
106
|
+
* وإن لم نجد مُستمِعًا لنمسكه — تغيّرت بنية readline يومًا — **نتراجع إلى السلوك القديم** بلا
|
|
107
|
+
* تنقّل بدل أن نكسر المُدخَل كلّه: صَدَفةٌ بلا أسهم تعمل، وصَدَفةٌ لا تستقبل حرفًا لا تعمل.
|
|
108
|
+
* EN: Makes the shell the **only** keypress listener, forwarding to readline what belongs to it.
|
|
109
|
+
*
|
|
110
|
+
* Order is everything: readline registers its listener when the interface is created, and every
|
|
111
|
+
* listener added afterwards runs **after** it — and so cannot stop it acting. That is why one
|
|
112
|
+
* arrow both moved the highlight and replaced the line with a history entry. We take its
|
|
113
|
+
* listeners and keep them, become the only ones, and decide: what belongs to the panel is
|
|
114
|
+
* swallowed, everything else is forwarded untouched, so readline loses no character and no
|
|
115
|
+
* editing key.
|
|
116
|
+
*
|
|
117
|
+
* And if there is no listener to capture — readline's internals changed one day — we **fall
|
|
118
|
+
* back to the old behaviour** without navigation rather than break input entirely: a shell
|
|
119
|
+
* without arrows works, a shell that receives no characters does not.
|
|
120
|
+
*/
|
|
121
|
+
installKeyInterceptor(rl) {
|
|
122
|
+
const input = process.stdin;
|
|
123
|
+
emitKeypressEvents(input);
|
|
124
|
+
const downstream = input.listeners("keypress");
|
|
125
|
+
if (downstream.length > 0)
|
|
126
|
+
input.removeAllListeners("keypress");
|
|
127
|
+
this.keypressHandler = (char, key) => {
|
|
128
|
+
if (!this.menuOpen && this.interceptPanelKey(rl, key))
|
|
129
|
+
return;
|
|
130
|
+
// readline أوّلًا ليصير rl.line محدَّثًا، ثم نرسم اللوحة على ما صار عليه السطر لا ما كان.
|
|
131
|
+
for (const listener of downstream)
|
|
132
|
+
listener(char, key);
|
|
133
|
+
this.onKeypress(rl, key);
|
|
134
|
+
};
|
|
135
|
+
input.on("keypress", this.keypressHandler);
|
|
136
|
+
}
|
|
137
|
+
/** انظر shell/input-mode.ts: القاعدة كلها هناك ومعها سببها المقيس. */
|
|
138
|
+
restoreInput(rl) {
|
|
139
|
+
if (this.keypressHandler)
|
|
140
|
+
restoreShellInput(process.stdin, this.keypressHandler);
|
|
141
|
+
rl.resume();
|
|
142
|
+
}
|
|
143
|
+
/** يمنع فتح قائمتين حين تصل ضغطة أثناء فتح الأولى. */
|
|
144
|
+
menuOpen = false;
|
|
145
|
+
hintsCache = null;
|
|
146
|
+
/**
|
|
147
|
+
* وصف كل أمر بسطر. يُبنى مرّة: شجرة الأوامر لا تتغيّر داخل الجلسة، وإعادة بنائها مع كل ضغطة مفتاح
|
|
148
|
+
* تعني عملًا في المسار الذي يجب أن يبقى فوريًّا.
|
|
149
|
+
*/
|
|
150
|
+
hints() {
|
|
151
|
+
// oclif يفصل الموضوع عن أمره بـ: داخليًّا، والمستخدم يكتبه بمسافة (topicSeparator). عرضُ
|
|
152
|
+
// stream:queue يعلّم المستخدم صيغةً لا يقبلها المِحَثّ، فيكتبها ويُقال له «غير موجود».
|
|
153
|
+
this.hintsCache ??= this.config.commands
|
|
154
|
+
.filter((command) => !command.hidden)
|
|
155
|
+
.map((command) => ({
|
|
156
|
+
id: command.id.replaceAll(":", " "),
|
|
157
|
+
summary: (command.summary ?? command.description ?? "").split("\n")[0].trim(),
|
|
158
|
+
}));
|
|
159
|
+
return this.hintsCache;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* AR: هل تخصّ هذه الضغطة اللوحة وحدها؟ **true تعني: لا تُمرَّر إلى readline.**
|
|
163
|
+
*
|
|
164
|
+
* هنا كانت المشكلة كلها. مُستمِع readline يُسجَّل قبل مُستمِعنا، فسهمٌ واحد كان يحرّك الاختيار
|
|
165
|
+
* **ويستبدل السطر بأمرٍ قديم من التاريخ** في آن. ولذلك صرنا المُستمِع الوحيد المُسجَّل
|
|
166
|
+
* (installKeyInterceptor)، ونمرّر نحن ما يخصّه — فيصير للأسهم معنى واحد لا يتنازعه اثنان:
|
|
167
|
+
* تنقّلٌ ما دامت اللوحة مفتوحة، وتاريخٌ حين تكون مغلقة.
|
|
168
|
+
* EN: Does this key belong to the panel alone? **`true` means: do not forward it to readline.**
|
|
169
|
+
*
|
|
170
|
+
* This was the whole problem. Readline's listener is registered before ours, so a single arrow
|
|
171
|
+
* moved the highlight **and replaced the line with a history entry** at the same time. Hence we
|
|
172
|
+
* became the only registered listener (`installKeyInterceptor`) and forward what belongs to it —
|
|
173
|
+
* giving the arrows one meaning nobody contests: navigation while the panel is open, history
|
|
174
|
+
* when it is closed.
|
|
175
|
+
*/
|
|
176
|
+
interceptPanelKey(rl, key) {
|
|
177
|
+
if (this.matches.length === 0)
|
|
178
|
+
return false;
|
|
179
|
+
if (key.name === "up" || key.name === "down") {
|
|
180
|
+
const step = key.name === "down" ? 1 : -1;
|
|
181
|
+
const count = this.matches.length;
|
|
182
|
+
// من -1 (بلا اختيار) ينتقل السهم لأعلى إلى آخر السطور ولأسفل إلى أوّلها، ثم يلتفّ.
|
|
183
|
+
this.selected = this.selected < 0 ? (step > 0 ? 0 : count - 1) : (this.selected + step + count) % count;
|
|
184
|
+
this.drawPanel(rl);
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
// Tab وEnter **يملآن السطر ولا يُنفّذان** — نفس قاعدة قائمة /، ولنفس السبب: أوامر مثل
|
|
188
|
+
// live test <source> تلزمها وسائط، وتشغيلها فور الاختيار يردّ خطأ استخدام على اختيار سليم.
|
|
189
|
+
if ((key.name === "tab" || key.name === "return" || key.name === "enter") && this.selected >= 0) {
|
|
190
|
+
const picked = this.matches[this.selected].id;
|
|
191
|
+
this.clearPanel(rl);
|
|
192
|
+
rl.write(null, { ctrl: true, name: "u" });
|
|
193
|
+
rl.write(`${picked} `);
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
if (key.name === "escape") {
|
|
197
|
+
this.clearPanel(rl);
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
onKeypress(rl, key) {
|
|
203
|
+
if (this.menuOpen)
|
|
204
|
+
return;
|
|
205
|
+
// Enter لا تُرسم بعده لوحة: المؤشّر غادر سطر المِحَثّ سلفًا، والحلقة تمسح ما تحته.
|
|
206
|
+
if (key.name === "return" || key.name === "enter") {
|
|
207
|
+
this.panelRows = 0;
|
|
208
|
+
this.matches = [];
|
|
209
|
+
this.selected = -1;
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (rl.line === MENU_KEY) {
|
|
213
|
+
void this.openMenu(rl);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
this.drawPanel(rl);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* يرسم الاقتراحات أسفل سطر الكتابة ثم يعيد المؤشّر إلى موضعه فيه.
|
|
220
|
+
*
|
|
221
|
+
* تُعرَض للكلمة الأولى وحدها: بعد أوّل مسافة صار المكتوب وسائط وأعلامًا، ولا نملك قائمة قيم لها —
|
|
222
|
+
* واقتراحُ أسماء أوامر بعد status إزعاجٌ لا مساعدة.
|
|
223
|
+
*/
|
|
224
|
+
drawPanel(rl) {
|
|
225
|
+
const line = rl.line ?? "";
|
|
226
|
+
const matches = line.includes(" ") ? [] : matchCommands(this.hints(), line, PANEL_ROWS);
|
|
227
|
+
// تغيّرت القائمة تحت اليد؟ التظليل يسقط. إبقاؤه على رقم سطرٍ صار يحمل أمرًا آخر أسوأ من إسقاطه:
|
|
228
|
+
// المستخدم يضغط Enter على ما يراه، لا على ما كان في ذلك الموضع قبل حرف.
|
|
229
|
+
if (matches.length !== this.matches.length || matches.some((match, index) => match.id !== this.matches[index]?.id)) {
|
|
230
|
+
this.selected = -1;
|
|
231
|
+
}
|
|
232
|
+
this.matches = matches;
|
|
233
|
+
if (this.panelRows === 0 && matches.length === 0)
|
|
234
|
+
return;
|
|
235
|
+
const cursor = rl.getCursorPos();
|
|
236
|
+
const out = process.stdout;
|
|
237
|
+
// امحُ اللوحة السابقة: انزل سطرًا واحدًا ثم امسح كل ما تحته.
|
|
238
|
+
moveCursor(out, 0, 1);
|
|
239
|
+
clearScreenDown(out);
|
|
240
|
+
moveCursor(out, 0, -1);
|
|
241
|
+
cursorTo(out, cursor.cols);
|
|
242
|
+
this.panelRows = 0;
|
|
243
|
+
if (matches.length === 0)
|
|
244
|
+
return;
|
|
245
|
+
const width = Math.max(...matches.map((match) => match.id.length));
|
|
246
|
+
const rows = matches.map((match, index) => {
|
|
247
|
+
const chosen = index === this.selected;
|
|
248
|
+
const marker = chosen ? c.accent("❯") : " ";
|
|
249
|
+
const name = chosen ? c.label(c.accent(match.id.padEnd(width))) : c.accent(match.id.padEnd(width));
|
|
250
|
+
return ` ${marker} ${name} ${c.dim(match.summary)}`;
|
|
251
|
+
});
|
|
252
|
+
out.write(`\n${rows.join("\n")}`);
|
|
253
|
+
moveCursor(out, 0, -rows.length);
|
|
254
|
+
cursorTo(out, cursor.cols);
|
|
255
|
+
this.panelRows = rows.length;
|
|
256
|
+
}
|
|
257
|
+
/** يمحو اللوحة ويُسقط التظليل، ويعيد المؤشّر إلى سطر الكتابة. */
|
|
258
|
+
clearPanel(rl) {
|
|
259
|
+
if (this.panelRows > 0) {
|
|
260
|
+
const cursor = rl.getCursorPos();
|
|
261
|
+
moveCursor(process.stdout, 0, 1);
|
|
262
|
+
clearScreenDown(process.stdout);
|
|
263
|
+
moveCursor(process.stdout, 0, -1);
|
|
264
|
+
cursorTo(process.stdout, cursor.cols);
|
|
265
|
+
}
|
|
266
|
+
this.panelRows = 0;
|
|
267
|
+
this.matches = [];
|
|
268
|
+
this.selected = -1;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* القائمة الكاملة: يُكتَب / على سطر فارغ فتُفتح قائمة تُرشَّح بالكتابة وتُتنقّل بالأسهم — نفس فكرة
|
|
272
|
+
* claude code.
|
|
273
|
+
*
|
|
274
|
+
* **ولماذا قائمة منفصلة لا أسهم على اللوحة أعلاه**: الأسهم في readline محجوزة للتاريخ، ومُستمِعنا
|
|
275
|
+
* يعمل **بعد** مُستمِعها فلا يستطيع ابتلاع الضغطة — أي أن سهمًا واحدًا كان سيحرّك الاختيار ويستبدل
|
|
276
|
+
* السطر بأمرٍ قديم في آن. الفصل يعطي كلَّ مفتاح معنًى واحدًا لا يتنازعه اثنان.
|
|
277
|
+
*
|
|
278
|
+
* والمختار **يُملأ في السطر ولا يُنفَّذ**: أوامر مثل live test <source> تلزمها وسائط، وتشغيلها
|
|
279
|
+
* فور الاختيار كان يردّ خطأ استخدام على اختيار سليم. تملأ السطر فيُكمِل المستخدم أو يضغط Enter.
|
|
280
|
+
*/
|
|
281
|
+
async openMenu(rl) {
|
|
282
|
+
this.menuOpen = true;
|
|
283
|
+
const hints = this.hints();
|
|
284
|
+
// امحُ اللوحة و/ معًا: القائمة تحلّ محلّهما، وبقاؤهما خلفها ركام.
|
|
285
|
+
moveCursor(process.stdout, 0, 1);
|
|
286
|
+
clearScreenDown(process.stdout);
|
|
287
|
+
moveCursor(process.stdout, 0, -1);
|
|
288
|
+
this.panelRows = 0;
|
|
289
|
+
rl.write(null, { ctrl: true, name: "u" });
|
|
290
|
+
rl.pause();
|
|
291
|
+
try {
|
|
292
|
+
const picked = await search({
|
|
293
|
+
message: "Command",
|
|
294
|
+
source: (term) => {
|
|
295
|
+
const matches = term ? matchCommands(hints, term, 20) : hints.slice(0, 20);
|
|
296
|
+
return matches.map((hint) => ({ name: hint.id, value: hint.id, description: hint.summary }));
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
this.restoreInput(rl);
|
|
300
|
+
rl.prompt();
|
|
301
|
+
rl.write(`${picked} `);
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
// Esc أو Ctrl+C داخل القائمة: إلغاء لا خطأ — يعود المِحَثّ كما كان.
|
|
305
|
+
this.restoreInput(rl);
|
|
306
|
+
rl.prompt();
|
|
307
|
+
}
|
|
308
|
+
finally {
|
|
309
|
+
this.menuOpen = false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/** يعيد true حين يطلب السطر إنهاء الجلسة. */
|
|
313
|
+
async handleLine(line, rl) {
|
|
314
|
+
const argv = splitCommandLine(line);
|
|
315
|
+
if (argv.length === 0)
|
|
316
|
+
return false;
|
|
317
|
+
const [name, ...rest] = argv;
|
|
318
|
+
const lowered = name.toLowerCase();
|
|
319
|
+
if (BUILTIN.exit.includes(lowered))
|
|
320
|
+
return true;
|
|
321
|
+
if (BUILTIN.clear.includes(lowered)) {
|
|
322
|
+
// console.clear لا سلسلة هروب مكتوبة بيدنا: محرف التحكّم الخامّ غير مرئيّ في المحرِّر ويسهل
|
|
323
|
+
// أن يُبتَر بلا أن يلاحظه أحد، والدالّة القياسية تتصرّف صحيحًا خارج الطرفية أيضًا.
|
|
324
|
+
console.clear();
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
if (BUILTIN.help.includes(lowered) && rest.length === 0) {
|
|
328
|
+
await this.runCommand(["help"], rl);
|
|
329
|
+
this.log(this.hintLine());
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
const blocked = FOREGROUND_ONLY[lowered];
|
|
333
|
+
if (blocked) {
|
|
334
|
+
this.log(c.warn(`\`${lowered}\` is not available inside the shell.`));
|
|
335
|
+
this.log(`${c.accent(glyph.arrow)} ${blocked}\n`);
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
await this.runCommand(argv, rl);
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* ينفّذ أمر oclif داخل هذه العملية.
|
|
343
|
+
*
|
|
344
|
+
* rl.pause() حول التنفيذ ضرورة لا تحسين: أوامر مثل setup وowner تفتح مِحَثّاتها الخاصة على
|
|
345
|
+
* stdin، ومِحَثّان يقرآن نفس المُدخَل يبتلع أحدهما ضغطات الآخر فتضيع الإجابة أو تُقرأ مرّتين.
|
|
346
|
+
*/
|
|
347
|
+
async runCommand(argv, rl) {
|
|
348
|
+
rl.pause();
|
|
349
|
+
try {
|
|
350
|
+
const { id, rest } = this.resolveCommandId(argv);
|
|
351
|
+
await this.config.runCommand(id, rest);
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
this.reportFailure(error);
|
|
355
|
+
}
|
|
356
|
+
finally {
|
|
357
|
+
this.restoreInput(rl);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* يحوّل ما كُتب إلى معرّف أمر عند oclif.
|
|
362
|
+
*
|
|
363
|
+
* **أمر الموضوع كلمتان عند المستخدم ومعرّف واحد عند oclif**: stream queue هو stream:queue، وتمريرُ
|
|
364
|
+
* الكلمة الأولى وحدها كان يبحث عن أمر اسمه stream — وهو موضوع لا أمر — فيردّ «غير موجود» على أمر
|
|
365
|
+
* موجود. يُجرَّب الأطول أوّلًا فلا يحجب موضوعٌ أمرًا يشاركه اسمه.
|
|
366
|
+
*/
|
|
367
|
+
resolveCommandId(argv) {
|
|
368
|
+
for (let take = Math.min(argv.length, 3); take >= 1; take -= 1) {
|
|
369
|
+
const candidate = argv.slice(0, take).join(":");
|
|
370
|
+
if (this.config.findCommand(candidate))
|
|
371
|
+
return { id: candidate, rest: argv.slice(take) };
|
|
372
|
+
}
|
|
373
|
+
// لا مطابقة: يُمرَّر كما كُتب ليخرج خطأ oclif المعتاد «command … not found».
|
|
374
|
+
return { id: argv[0], rest: argv.slice(1) };
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* يعرض فشل أمر **ولا يُخرِج**. رمز الخروج يُذكر حين لا يكون صفرًا لأنه معلومة يعرفها المستخدم من
|
|
378
|
+
* السطر العادي، وإخفاؤه هنا يجعل السلوكين مختلفين بلا سبب.
|
|
379
|
+
*
|
|
380
|
+
* **وExitError ليست خطأً برسالة.** أمرٌ خرج برمز غير صفري عن قصد — status حين تكون كل الخدمات
|
|
381
|
+
* متوقّفة مثلًا — يرميها من داخل runCommand ورسالتها نصّ oclif الداخلي «EEXIT: 1». طباعتها
|
|
382
|
+
* تضع سطرًا أحمر بلا معنى تحت جدول اكتمل بنجاح. الرمز وحده هو المعلومة هنا؛ الأمر قال قوله سلفًا.
|
|
383
|
+
*/
|
|
384
|
+
reportFailure(error) {
|
|
385
|
+
const exitCode = error?.oclif?.exit;
|
|
386
|
+
if (exitCode === EXIT.OK)
|
|
387
|
+
return;
|
|
388
|
+
const isExitOnly = error?.code === "EEXIT";
|
|
389
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
390
|
+
if (!isExitOnly && message.trim())
|
|
391
|
+
this.log(c.bad(message));
|
|
392
|
+
if (exitCode !== undefined)
|
|
393
|
+
this.log(c.dim(` exit code ${exitCode}`));
|
|
394
|
+
}
|
|
395
|
+
// ── مساعدات ────────────────────────────────────────────────────────────
|
|
396
|
+
hintLine() {
|
|
397
|
+
return [
|
|
398
|
+
`${c.dim("Start typing — matching commands appear below.")} ${c.label("↑↓")} ${c.dim("to choose,")} ${c.label("Enter")} ${c.dim("to fill it in.")}`,
|
|
399
|
+
`${c.dim("Press")} ${c.label(MENU_KEY)} ${c.dim("for the full list.")} ${c.dim("Leave with")} ${c.label("exit")}${c.dim(".")}\n`,
|
|
400
|
+
].join("\n");
|
|
401
|
+
}
|
|
402
|
+
/** إكمال بالمفتاح Tab على الكلمة الأولى وحدها: ما بعدها وسائط لا نعرف قيمها. */
|
|
403
|
+
complete(line) {
|
|
404
|
+
if (line.includes(" "))
|
|
405
|
+
return [[], line];
|
|
406
|
+
// بنفس الفاصل الذي يكتبه المستخدم — انظر hints().
|
|
407
|
+
const names = [
|
|
408
|
+
...this.config.commandIDs.map((id) => id.replaceAll(":", " ")),
|
|
409
|
+
...Object.values(BUILTIN).flat(),
|
|
410
|
+
].sort();
|
|
411
|
+
const hits = names.filter((name) => name.startsWith(line));
|
|
412
|
+
return [hits.length > 0 ? hits : names, line];
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/commands/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCommand } from "../base-command.js";
|
|
2
|
+
export default class Start extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
only: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
open: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
private openPortal;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAA8E;IAEhG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;MAWV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA6EZ,UAAU;CASzB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import { BaseCommand } from "../base-command.js";
|
|
4
|
+
import { startServices } from "../supervisor/orchestrator.js";
|
|
5
|
+
import { fetchLicenseStatus } from "../probes/internal.client.js";
|
|
6
|
+
import { renderActivationNotice, renderConflicts, renderPackageNotice, renderStartOutcome, renderUrls, } from "../render/boot.render.js";
|
|
7
|
+
import { renderLicenceCard } from "../render/licence.render.js";
|
|
8
|
+
import { c, isTty } from "../render/theme.js";
|
|
9
|
+
// AR: تشغيل النظام في الخلفية وإعادة الطرفية للمستخدم. للسجلات fantastic logs، وللعمل المرتبط
|
|
10
|
+
// بالطرفية fantastic dev.
|
|
11
|
+
// EN: Start the system in the background and hand the terminal back. Logs live in `fantastic logs`,
|
|
12
|
+
// and attached work lives in `fantastic dev`.
|
|
13
|
+
const SERVICES = ["live", "core", "portal"];
|
|
14
|
+
export default class Start extends BaseCommand {
|
|
15
|
+
static description = "Start the services in order in the background and hand the terminal back";
|
|
16
|
+
static examples = [
|
|
17
|
+
"<%= config.bin %> start",
|
|
18
|
+
"<%= config.bin %> start --only core,live",
|
|
19
|
+
"<%= config.bin %> start --open",
|
|
20
|
+
];
|
|
21
|
+
static flags = {
|
|
22
|
+
only: Flags.string({
|
|
23
|
+
description: "Limit to specific services, comma separated",
|
|
24
|
+
multiple: true,
|
|
25
|
+
delimiter: ",",
|
|
26
|
+
options: SERVICES,
|
|
27
|
+
}),
|
|
28
|
+
open: Flags.boolean({
|
|
29
|
+
description: "Open the portal in a browser once everything is up",
|
|
30
|
+
default: false,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
async run() {
|
|
34
|
+
const { flags } = await this.parse(Start);
|
|
35
|
+
const profile = this.loadProfile(flags.profile, true, flags.product);
|
|
36
|
+
this.log("");
|
|
37
|
+
this.log(`${c.dim("profile:")} ${c.value(profile.kind)} ${c.dim("data:")} ${c.value(profile.dataDir)}`);
|
|
38
|
+
this.log("");
|
|
39
|
+
// السبينر يُعطَّل خارج الطرفية حتى لا يلوّث مخرَجًا مُمرَّرًا بأنبوب أو سجلّ CI.
|
|
40
|
+
const spinner = ora({ isEnabled: isTty, discardStdin: false });
|
|
41
|
+
const outcome = await startServices(profile, {
|
|
42
|
+
only: flags.only,
|
|
43
|
+
onStep: (definition, phase) => {
|
|
44
|
+
if (phase === "starting")
|
|
45
|
+
spinner.start(`starting ${definition.label}…`);
|
|
46
|
+
if (phase === "waiting")
|
|
47
|
+
spinner.text = `waiting for ${definition.label} to be ready…`;
|
|
48
|
+
if (phase === "done")
|
|
49
|
+
spinner.stop();
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
spinner.stop();
|
|
53
|
+
if (outcome.conflicts.length > 0) {
|
|
54
|
+
this.log(renderConflicts(outcome.conflicts));
|
|
55
|
+
this.log("");
|
|
56
|
+
this.exit(3);
|
|
57
|
+
}
|
|
58
|
+
this.log(renderStartOutcome(outcome));
|
|
59
|
+
if (!outcome.ok) {
|
|
60
|
+
this.log("");
|
|
61
|
+
this.log(c.bad("Startup failed. Everything that had started was stopped, so the system is not left half up."));
|
|
62
|
+
this.log("");
|
|
63
|
+
this.exit(1);
|
|
64
|
+
}
|
|
65
|
+
this.log("");
|
|
66
|
+
this.log(renderUrls(profile));
|
|
67
|
+
// AR: حالة الرخصة بعد الإقلاع مباشرةً. النواة جاهزة قطعًا في هذه النقطة — مسبار جاهزيّتها
|
|
68
|
+
// /api/health — فالسطح الداخلي مفتوح. والفشل هنا لا يُفشل الإقلاع: البطاقة ترسم شرطةً،
|
|
69
|
+
// وهي اعتراف بأننا لم نسأل لا ادّعاء بأن لا رخصة.
|
|
70
|
+
// EN: The licence state immediately after boot. The core is certainly ready at this point — its
|
|
71
|
+
// readiness probe is `/api/health` — so the internal surface is open. A failure here never
|
|
72
|
+
// fails the boot: the card draws a dash, admitting we did not ask rather than claiming there
|
|
73
|
+
// is no licence.
|
|
74
|
+
const licence = await fetchLicenseStatus(profile);
|
|
75
|
+
const device = licence.ok ? licence.data : null;
|
|
76
|
+
this.log("");
|
|
77
|
+
this.log(renderLicenceCard(device));
|
|
78
|
+
// AR: سطر الباقة قبل إشعار التفعيل: الأول يخصّ جهازًا يعمل، والثاني جهازًا لا يعمل — ولا
|
|
79
|
+
// يظهران معًا أبدًا لأن شرطيهما متعاكسان.
|
|
80
|
+
// EN: The package line before the activation notice: the first concerns a working appliance and
|
|
81
|
+
// the second one that is not, and they never appear together because their conditions are
|
|
82
|
+
// opposites.
|
|
83
|
+
const packageNotice = renderPackageNotice(device);
|
|
84
|
+
if (packageNotice) {
|
|
85
|
+
this.log("");
|
|
86
|
+
this.log(packageNotice);
|
|
87
|
+
}
|
|
88
|
+
const notice = renderActivationNotice(profile, device);
|
|
89
|
+
if (notice) {
|
|
90
|
+
this.log("");
|
|
91
|
+
this.log(notice);
|
|
92
|
+
}
|
|
93
|
+
this.log("");
|
|
94
|
+
this.log(c.dim("stop with: fantastic stop · logs: fantastic logs --follow"));
|
|
95
|
+
this.log("");
|
|
96
|
+
if (flags.open)
|
|
97
|
+
await this.openPortal(profile.services.at(-1)?.port);
|
|
98
|
+
}
|
|
99
|
+
async openPortal(port) {
|
|
100
|
+
if (!port)
|
|
101
|
+
return;
|
|
102
|
+
const url = `http://localhost${port === 80 ? "" : `:${port}`}/`;
|
|
103
|
+
const { execa } = await import("execa");
|
|
104
|
+
// start أمر داخلي في cmd، فلا بديل عن تمريره بغلاف. فشل الفتح لا يُفشل الإقلاع.
|
|
105
|
+
await execa("cmd.exe", ["/c", "start", "", url], { reject: false, windowsHide: true });
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAajD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,SAA0E;IAE5F,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK,KAAM;IAEZ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyG3B"}
|