@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,120 @@
|
|
|
1
|
+
import { Command, Flags } from "@oclif/core";
|
|
2
|
+
import { ProfileResolutionError, resolveProfile } from "./profiles/resolve.js";
|
|
3
|
+
import { buildEnvelope, renderJson } from "./render/json.js";
|
|
4
|
+
import { c, glyph } from "./render/theme.js";
|
|
5
|
+
import { EXIT } from "./exit-codes.js";
|
|
6
|
+
import { checkRuntime } from "./runtime-guard.js";
|
|
7
|
+
// AR: أساس مشترك لكل الأوامر. يحمل --profile و--json ويحوّل فشل الاستنتاج إلى رسالة واحدة،
|
|
8
|
+
// فلا يكرّر كل أمر نفس الأسطر ولا يطبع أثر استدعاء خامًا في وجه المستخدم.
|
|
9
|
+
// EN: A shared base for every command. It carries --profile and --json and turns a resolution
|
|
10
|
+
// failure into one message, so no command repeats the same lines and no raw stack trace ever
|
|
11
|
+
// lands in the user's face.
|
|
12
|
+
/**
|
|
13
|
+
* AR: عقد رموز الخروج، معروضًا في مساعدة كل أمر (017/FR-032، T075). ليس تفصيلًا داخليًا: سكربت
|
|
14
|
+
* بوّابة يفرّق به بين «المنفذ محجوز» و«التشخيص وجد عائقًا» دون أن يحلّل نصًّا إنجليزيًا.
|
|
15
|
+
* EN: The exit-code contract, shown in every command's help (017/FR-032, T075). Not an internal
|
|
16
|
+
* detail: a gate script uses it to tell "the port was busy" from "diagnosis found a blocker"
|
|
17
|
+
* without parsing English prose.
|
|
18
|
+
*/
|
|
19
|
+
export const EXIT_CODE_HELP = `EXIT CODES
|
|
20
|
+
${EXIT.OK} success
|
|
21
|
+
${EXIT.FAILURE} general failure
|
|
22
|
+
${EXIT.USAGE} usage error — unknown flag or missing argument
|
|
23
|
+
${EXIT.PORT_CONFLICT} port conflict — something else holds a required port
|
|
24
|
+
${EXIT.UNREACHABLE} service unreachable — alive as a process, not ready as a service
|
|
25
|
+
${EXIT.NO_PROFILE} no profile resolved — no repository here and no installed appliance
|
|
26
|
+
${EXIT.DIAGNOSTIC_BLOCKED} doctor found blocking problems`;
|
|
27
|
+
export class BaseCommand extends Command {
|
|
28
|
+
static baseFlags = {
|
|
29
|
+
profile: Flags.string({
|
|
30
|
+
description: "Run profile: dev or appliance. Auto-detected when omitted.",
|
|
31
|
+
options: ["dev", "appliance"],
|
|
32
|
+
}),
|
|
33
|
+
json: Flags.boolean({
|
|
34
|
+
description: "Emit machine-readable output instead of a rendered table.",
|
|
35
|
+
default: false,
|
|
36
|
+
}),
|
|
37
|
+
/**
|
|
38
|
+
* AR: أيّ منتجٍ يقصد هذا الأمر؟ (٠٢٦)
|
|
39
|
+
*
|
|
40
|
+
* **يُستنتَج عند الوحدة ويُطلَب عند التعدّد.** أمرُ إيقافٍ يصيب الجهاز الخطأ في استراحةٍ
|
|
41
|
+
* تعمل أسوأ من أمرٍ يسأل — ولذلك لا تخمين هنا، والرفض يعدّد الأسماء بدل أن يقول «حدّد».
|
|
42
|
+
*
|
|
43
|
+
* وموضعه في الأساس لا في كل أمر: سطرٌ يُكرَّر في ستّةٍ وثلاثين ملفًّا يُنسى في السابع
|
|
44
|
+
* والثلاثين، فيصير أمرٌ واحدٌ لا يقبل العَلَم بلا أن يلاحظ أحد.
|
|
45
|
+
* EN: Which product does this command act on? (026)
|
|
46
|
+
*
|
|
47
|
+
* **Inferred when there is one, required when there are several.** A stop command hitting
|
|
48
|
+
* the wrong appliance in a working rest-house is worse than a command that asks — so nothing
|
|
49
|
+
* is guessed here, and the refusal lists the names rather than saying "specify one".
|
|
50
|
+
*
|
|
51
|
+
* It belongs in the base rather than in every command: a line repeated across thirty-six
|
|
52
|
+
* files is forgotten in the thirty-seventh, leaving one command that ignores the flag with
|
|
53
|
+
* nobody noticing.
|
|
54
|
+
*/
|
|
55
|
+
product: Flags.string({
|
|
56
|
+
description: "Which installed product to act on. Inferred when only one is installed.",
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* AR: يُنفَّذ قبل جسم أيّ أمر (oclif يناديها لكل أمر). وهو الموضع الوحيد الذي يضمن أن **كل**
|
|
61
|
+
* أمرٍ يمرّ بفحص بيئة التشغيل، بلا سطرٍ مكرَّرٍ في ستّةٍ وثلاثين ملفًّا يُنسى في السابع
|
|
62
|
+
* والثلاثين.
|
|
63
|
+
* EN: Runs before any command's body (oclif calls it for every command). It is the one place that
|
|
64
|
+
* guarantees **every** command passes the runtime check, with no line repeated across
|
|
65
|
+
* thirty-six files and forgotten in the thirty-seventh.
|
|
66
|
+
*/
|
|
67
|
+
async init() {
|
|
68
|
+
await super.init();
|
|
69
|
+
const verdict = checkRuntime();
|
|
70
|
+
if (verdict.ok)
|
|
71
|
+
return;
|
|
72
|
+
this.log("");
|
|
73
|
+
this.log(c.bad(verdict.message));
|
|
74
|
+
this.log(`${c.accent(glyph.arrow)} ${verdict.remedy}`);
|
|
75
|
+
this.log("");
|
|
76
|
+
this.exit(EXIT.FAILURE);
|
|
77
|
+
}
|
|
78
|
+
loadProfile(kind, ensureDirs = true, product) {
|
|
79
|
+
try {
|
|
80
|
+
return resolveProfile({ kind: kind, ensureDirs, product });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// كان هذا يخرج بالرمز 2 «خطأ استخدام»، وهو تصنيف خاطئ: المستخدم لم يخطئ في كتابة الأمر، بل
|
|
84
|
+
// لا يوجد نظام في هذا المكان. الرمز 5 يقول ذلك تحديدًا فيميّزه سكربت البوّابة (017/FR-032).
|
|
85
|
+
if (error instanceof ProfileResolutionError)
|
|
86
|
+
this.error(error.message, { exit: EXIT.NO_PROFILE });
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* جواب موحّد حين لا تُجيب النواة (017/FR-015).
|
|
92
|
+
*
|
|
93
|
+
* كل أمر إدارة يمرّ بهذه الحالة، وتكرار صياغتها في اثني عشر ملفًا يُنتج اثنتي عشرة صياغة تختلف
|
|
94
|
+
* قليلًا وتتباعد مع الوقت. **ولا يتراجع أي أمر إلى قراءة البيانات بنفسه**: هذا هو الحدّ الذي
|
|
95
|
+
* يفصل «الـ CLI يعرض» عن «الـ CLI يقرّر».
|
|
96
|
+
*/
|
|
97
|
+
coreUnreachable(command, profile, reason, json) {
|
|
98
|
+
if (json) {
|
|
99
|
+
this.log(renderJson(buildEnvelope({
|
|
100
|
+
command,
|
|
101
|
+
profile,
|
|
102
|
+
data: null,
|
|
103
|
+
problems: [
|
|
104
|
+
{
|
|
105
|
+
id: "core.unreachable",
|
|
106
|
+
severity: "fail",
|
|
107
|
+
message: `the core is not reachable: ${reason}`,
|
|
108
|
+
remedy: "Start it: fantastic start",
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
})));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.log(c.bad(`The core is not reachable — ${reason}`));
|
|
115
|
+
this.log(`${c.accent(glyph.arrow)} Start it: fantastic start`);
|
|
116
|
+
}
|
|
117
|
+
this.exit(EXIT.UNREACHABLE);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=base-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BUNDLE_DIRS, MANIFEST_FILE, RUNTIME_FILES, SERVICE_ENTRY, SUPERVISOR_ENTRY, SHIM_FILES, REQUIRED_NATIVE, WORKSPACE_PACKAGES, EXCLUDED_FROM_BUNDLE, } from "../packaging/layout.js";
|
|
2
|
+
export { hashDirectory, hashFile, writeManifest, readManifest, treeBytes, type ManifestInput, } from "../packaging/manifest.js";
|
|
3
|
+
export { writeCommandShim } from "../packaging/shims.js";
|
|
4
|
+
export { SUPERVISOR_DEPENDENCIES } from "../supervisor/dependencies.js";
|
|
5
|
+
export type { BundleManifest, BundleComponent, BundleComponentName, BundlePlatform, BundleRuntimeComponent, } from "../contracts/core.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bundle-format/index.ts"],"names":[],"mappings":"AAgCA,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,SAAS,EACT,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// AR: **عقد شكل الحزمة — المسار الفرعيّ الذي يستهلكه مستودع المنتج.**
|
|
2
|
+
//
|
|
3
|
+
// الحزمة تُبنى في مستودعٍ وتُقرأ في آخر: أدوات الإصدار تكتب الشجرة والبيان، وهذه الواجهة
|
|
4
|
+
// تقرؤهما على جهاز العميل. وحرفٌ واحد يفترق بين الطرفين يعني تثبيتًا يفشل عند عميل — لا
|
|
5
|
+
// بناءً يفشل على شاشة مطوّر.
|
|
6
|
+
//
|
|
7
|
+
// ولذلك **القارئ صاحب العقد**: التعريف يعيش هنا، ويستورده الباني من الحزمة المنشورة
|
|
8
|
+
// (@wasmsoft/fantastic/bundle-format). اتجاهٌ واحد لا دائريّ، وبلا حزمةٍ ثالثة تُنشَر لأجل
|
|
9
|
+
// ثمانين سطرًا من الثوابت. والسبب مبدئيّ لا تنظيميّ: الحزمة تُبنى مرّةً وتُقرأ على أجهزةٍ كثيرة
|
|
10
|
+
// لسنواتٍ بعد بنائها؛ والباني يستطيع دائمًا أن يوافق قارئًا، أمّا القارئ فلا يستطيع أن يوافق
|
|
11
|
+
// بانيًا مضى.
|
|
12
|
+
//
|
|
13
|
+
// **وهذا الملفّ لا يستورد oclif ولا Ink ولا chalk.** من يستورده أداةُ بناءٍ لا واجهةُ مستخدم،
|
|
14
|
+
// وجرّ شجرة اعتمادياتٍ كاملة إلى سكربت إصدارٍ يجعل بناء الحزمة يعتمد على مكتبة ألوان.
|
|
15
|
+
// EN: **The bundle-format contract — the subpath the product repository consumes.**
|
|
16
|
+
//
|
|
17
|
+
// A bundle is built in one repository and read in another: the release tooling writes the tree
|
|
18
|
+
// and the manifest, and this CLI reads them on a customer's machine. One character of drift
|
|
19
|
+
// between the two means an install that fails at a customer's site — not a build that fails on
|
|
20
|
+
// a developer's screen.
|
|
21
|
+
//
|
|
22
|
+
// Hence **the reader owns the contract**: the definition lives here and the builder imports it
|
|
23
|
+
// from the published package (`@wasmsoft/fantastic/bundle-format`). One direction, not a cycle,
|
|
24
|
+
// and no third package published for eighty lines of constants. The reason is principled rather
|
|
25
|
+
// than organisational: a bundle is built once and read on many machines for years afterwards; a
|
|
26
|
+
// builder can always be made to match a reader, but a reader cannot be made to match a builder
|
|
27
|
+
// that has already shipped.
|
|
28
|
+
//
|
|
29
|
+
// **And this file imports neither oclif nor Ink nor chalk.** Its consumer is a build script, not
|
|
30
|
+
// a user interface, and dragging a whole dependency tree into a release script makes building a
|
|
31
|
+
// bundle depend on a colour library.
|
|
32
|
+
export { BUNDLE_DIRS, MANIFEST_FILE, RUNTIME_FILES, SERVICE_ENTRY, SUPERVISOR_ENTRY, SHIM_FILES, REQUIRED_NATIVE, WORKSPACE_PACKAGES, EXCLUDED_FROM_BUNDLE, } from "../packaging/layout.js";
|
|
33
|
+
export { hashDirectory, hashFile, writeManifest, readManifest, treeBytes, } from "../packaging/manifest.js";
|
|
34
|
+
export { writeCommandShim } from "../packaging/shims.js";
|
|
35
|
+
export { SUPERVISOR_DEPENDENCIES } from "../supervisor/dependencies.js";
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bundle-format/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,6FAA6F;AAC7F,4FAA4F;AAC5F,iCAAiC;AACjC,EAAE;AACF,wFAAwF;AACxF,iGAAiG;AACjG,oGAAoG;AACpG,iGAAiG;AACjG,kBAAkB;AAClB,EAAE;AACF,oGAAoG;AACpG,0FAA0F;AAC1F,oFAAoF;AACpF,EAAE;AACF,mGAAmG;AACnG,gGAAgG;AAChG,mGAAmG;AACnG,4BAA4B;AAC5B,EAAE;AACF,mGAAmG;AACnG,oGAAoG;AACpG,oGAAoG;AACpG,oGAAoG;AACpG,mGAAmG;AACnG,gCAAgC;AAChC,EAAE;AACF,qGAAqG;AACrG,oGAAoG;AACpG,yCAAyC;AAEzC,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,SAAS,GAEV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseCommand } from "../base-command.js";
|
|
2
|
+
export default class Activate extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
code: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {};
|
|
9
|
+
static help: string;
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
/** يرسم الخطوات حتى نقطة السقوط، ثم رسالة النواة العربية كما هي. */
|
|
12
|
+
private renderFailure;
|
|
13
|
+
private emitJson;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=activate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AAoDjE,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,SAAgE;IAElF,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK,KAAM;IAElB,MAAM,CAAC,IAAI,SAAkB;IAEvB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC1B,oEAAoE;IACpE,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,QAAQ;CAkCjB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { BaseCommand, EXIT_CODE_HELP } from "../base-command.js";
|
|
3
|
+
import { activateLicense } from "../probes/internal.client.js";
|
|
4
|
+
import { renderLicenceCard } from "../render/licence.render.js";
|
|
5
|
+
import { buildEnvelope, renderJson } from "../render/json.js";
|
|
6
|
+
import { c, glyph } from "../render/theme.js";
|
|
7
|
+
import { EXIT } from "../exit-codes.js";
|
|
8
|
+
// AR: fantastic activate <code> — تفعيل هذا الجهاز من الطرفية.
|
|
9
|
+
//
|
|
10
|
+
// **الأمر لا ينادي البوّابة المركزية، بل ينادي النواة.** القاعدة مكتوبة كاملةً في تعليق
|
|
11
|
+
// internal.controller.ts: الـ CLI يعرض والنواة تقرّر. لو نادى المركز بنفسه لصار في المشروع
|
|
12
|
+
// مسارا تفعيل — أحدهما يقرأ البصمة ويتحقّق من التوقيع ويكتب الملف ذرّيًّا، والآخر يفعل شبيهًا
|
|
13
|
+
// بذلك — ويفترقان أوّل يوم يتغيّر فيه شيء. والـ CLI فوق ذلك لا يحمل أسرارًا ولا يعرف المفتاح
|
|
14
|
+
// العام الذي يُتحقَّق به.
|
|
15
|
+
//
|
|
16
|
+
// EN: `fantastic activate <code>` — activating this appliance from the terminal.
|
|
17
|
+
//
|
|
18
|
+
// **The command does not call the central portal; it calls the core.** The rule is written out
|
|
19
|
+
// in full in the `internal.controller.ts` comment: the CLI displays, the core decides. Were it
|
|
20
|
+
// to call the centre itself, the project would hold two activation paths — one reading the
|
|
21
|
+
// fingerprint, verifying the signature and writing the file atomically, another doing something
|
|
22
|
+
// similar — and they would diverge the first day anything changed. The CLI also holds no
|
|
23
|
+
// secrets and does not know the public key that verification needs.
|
|
24
|
+
/**
|
|
25
|
+
* AR: الخطوات كما تُعرَض. **ليست مؤقّتًا تجميليًّا**: النواة تنفّذها في هذا الترتيب فعلًا، فحين
|
|
26
|
+
* يتوقّف السطر عند خطوة تكون الخطوة نفسها هي اسمُ العطل — وهذا ما يفرّق بين شاشةٍ تشرح
|
|
27
|
+
* وشاشةٍ تُسلّي.
|
|
28
|
+
* EN: The steps as shown. **Not a decorative timer**: the core really performs them in this order,
|
|
29
|
+
* so when the line stops at a step, that step is the name of the fault — which is the
|
|
30
|
+
* difference between a screen that explains and a screen that entertains.
|
|
31
|
+
*/
|
|
32
|
+
const STEPS = [
|
|
33
|
+
{ label: "Reading device fingerprint", width: 4 },
|
|
34
|
+
{ label: "Contacting licence server", width: 5 },
|
|
35
|
+
{ label: "Verifying signature", width: 11 },
|
|
36
|
+
{ label: "Writing licence", width: 15 },
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* AR: أيّ خطوة سقط عندها هذا الرمز؟ الرفض من المركز يسقط عند «الاتصال بخادم الرخص» — الاتصال
|
|
40
|
+
* نجح والمركز أجاب برفض، فما بعده لم يُنفَّذ أصلًا ولا يجوز أن يُرسَم ناجحًا.
|
|
41
|
+
* EN: Which step did this code fall at? A refusal from the centre falls at "contacting licence
|
|
42
|
+
* server" — the connection worked and the centre answered no, so nothing after it ran and
|
|
43
|
+
* nothing after it may be drawn as passed.
|
|
44
|
+
*/
|
|
45
|
+
function failedStepFor(code) {
|
|
46
|
+
if (code === "FINGERPRINT_UNAVAILABLE")
|
|
47
|
+
return 0;
|
|
48
|
+
if (code === "INVALID_SIGNATURE")
|
|
49
|
+
return 2;
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
52
|
+
export default class Activate extends BaseCommand {
|
|
53
|
+
static description = "Activate this appliance with a licence code from Fantastic";
|
|
54
|
+
static examples = [
|
|
55
|
+
"<%= config.bin %> activate FN-2026-K7M4P",
|
|
56
|
+
"<%= config.bin %> activate FN-2026-K7M4P --json",
|
|
57
|
+
];
|
|
58
|
+
static args = {
|
|
59
|
+
code: Args.string({ description: "Activation code, e.g. FN-2026-K7M4P", required: true }),
|
|
60
|
+
};
|
|
61
|
+
static flags = {};
|
|
62
|
+
static help = EXIT_CODE_HELP;
|
|
63
|
+
async run() {
|
|
64
|
+
const { args, flags } = await this.parse(Activate);
|
|
65
|
+
const profile = this.loadProfile(flags.profile, false, flags.product);
|
|
66
|
+
const result = await activateLicense(profile, args.code);
|
|
67
|
+
if (flags.json) {
|
|
68
|
+
this.emitJson(profile, result);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (!result.ok) {
|
|
72
|
+
// النواة متوقّفة: الرسالة الموحّدة القائمة سلفًا، بلا صياغة جديدة تتباعد عن أخواتها.
|
|
73
|
+
if (result.unreachable)
|
|
74
|
+
this.coreUnreachable("activate", profile, result.reason, false);
|
|
75
|
+
this.renderFailure(result.error?.code, result.reason);
|
|
76
|
+
// AR: رمزان مختلفان لسببين مختلفين، وسكربتات التثبيت تفرّق بهما: انقطاعُ الشبكة يستحقّ
|
|
77
|
+
// إعادةَ محاولة آليّة، وكودٌ خاطئ لا يستحقّها مهما أُعيد.
|
|
78
|
+
// EN: Two codes for two reasons, and installer scripts branch on them: a network drop
|
|
79
|
+
// deserves an automatic retry, a wrong code never will however often it is repeated.
|
|
80
|
+
this.exit(result.error?.code === "CENTRAL_UNREACHABLE" ? EXIT.UNREACHABLE : EXIT.FAILURE);
|
|
81
|
+
}
|
|
82
|
+
for (const step of STEPS) {
|
|
83
|
+
this.log(` ${c.accent(glyph.step)} ${step.label} ${c.dim(".".repeat(step.width))} ${c.ok("ok")}`);
|
|
84
|
+
}
|
|
85
|
+
this.log("");
|
|
86
|
+
this.log(renderLicenceCard(result.data.device, { heading: true }));
|
|
87
|
+
this.log("");
|
|
88
|
+
this.log(`${c.accent(glyph.arrow)} Restart to enter Full Mode: ${c.value("fantastic restart")}`);
|
|
89
|
+
this.log("");
|
|
90
|
+
}
|
|
91
|
+
/** يرسم الخطوات حتى نقطة السقوط، ثم رسالة النواة العربية كما هي. */
|
|
92
|
+
renderFailure(code, message) {
|
|
93
|
+
const failedAt = failedStepFor(code);
|
|
94
|
+
this.log("");
|
|
95
|
+
STEPS.forEach((step, index) => {
|
|
96
|
+
if (index < failedAt) {
|
|
97
|
+
this.log(` ${c.accent(glyph.step)} ${step.label} ${c.dim(".".repeat(step.width))} ${c.ok("ok")}`);
|
|
98
|
+
}
|
|
99
|
+
else if (index === failedAt) {
|
|
100
|
+
this.log(` ${c.accent(glyph.step)} ${step.label} ${c.dim(".".repeat(step.width))} ${c.bad("failed")}`);
|
|
101
|
+
}
|
|
102
|
+
// ما بعد نقطة السقوط لا يُرسَم إطلاقًا: لم يُنفَّذ، ورسمُه رماديًّا يوحي بأنه ينتظر دوره.
|
|
103
|
+
});
|
|
104
|
+
this.log("");
|
|
105
|
+
this.log(`${c.bad(glyph.fail)} ${message}`);
|
|
106
|
+
if (code === "CENTRAL_UNREACHABLE") {
|
|
107
|
+
this.log(`${c.accent(glyph.arrow)} ${c.dim("Check the internet connection, then run the command again.")}`);
|
|
108
|
+
}
|
|
109
|
+
this.log("");
|
|
110
|
+
}
|
|
111
|
+
emitJson(profile, result) {
|
|
112
|
+
const device = result.ok ? result.data.device : null;
|
|
113
|
+
this.log(renderJson(buildEnvelope({
|
|
114
|
+
command: "activate",
|
|
115
|
+
profile,
|
|
116
|
+
data: device ? { device, restartRequired: true } : null,
|
|
117
|
+
problems: result.ok
|
|
118
|
+
? []
|
|
119
|
+
: [
|
|
120
|
+
{
|
|
121
|
+
id: result.unreachable ? "core.unreachable" : `licence.${result.error?.code ?? "failed"}`,
|
|
122
|
+
severity: "fail",
|
|
123
|
+
message: result.reason,
|
|
124
|
+
remedy: result.unreachable
|
|
125
|
+
? "Start it: fantastic start"
|
|
126
|
+
: result.error?.code === "CENTRAL_UNREACHABLE"
|
|
127
|
+
? "Check the internet connection, then run the command again."
|
|
128
|
+
: "Check the activation code, or contact Fantastic support.",
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
})));
|
|
132
|
+
if (result.ok)
|
|
133
|
+
return;
|
|
134
|
+
if (result.unreachable)
|
|
135
|
+
this.exit(EXIT.UNREACHABLE);
|
|
136
|
+
this.exit(result.error?.code === "CENTRAL_UNREACHABLE" ? EXIT.UNREACHABLE : EXIT.FAILURE);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=activate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseCommand } from "../base-command.js";
|
|
2
|
+
export default class Backup extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
out: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
"include-logs": import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYjD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,SAA+E;IAEjG,MAAM,CAAC,QAAQ,WAA8E;IAE7F,MAAM,CAAC,KAAK;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiE3B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { Flags } from "@oclif/core";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { BaseCommand } from "../base-command.js";
|
|
5
|
+
import { createBackup } from "../backup/archive.js";
|
|
6
|
+
import { buildEnvelope, renderJson } from "../render/json.js";
|
|
7
|
+
import { c, formatBytes, glyph, isTty } from "../render/theme.js";
|
|
8
|
+
import { EXIT } from "../exit-codes.js";
|
|
9
|
+
// AR: أرشيف واحد مؤرَّخ لحالة الجهاز. يعمل **والنظام يعمل**، لأن اللقطة تأتي من VACUUM INTO لا من
|
|
10
|
+
// نسخ ملف حيّ — وهذا هو الفرق بين نسخة تُستعاد ونسخة تبدو سليمة وتفشل يوم الحاجة.
|
|
11
|
+
// EN: One dated archive of the appliance's state. It works **while the system is running**, because
|
|
12
|
+
// the snapshot comes from VACUUM INTO rather than a live file copy — the difference between a
|
|
13
|
+
// backup that restores and one that looks fine and fails on the day it is needed.
|
|
14
|
+
export default class Backup extends BaseCommand {
|
|
15
|
+
static description = "Write one dated archive of the database, settings, theme and owner assets";
|
|
16
|
+
static examples = ["<%= config.bin %> backup", "<%= config.bin %> backup --out D:\\backups"];
|
|
17
|
+
static flags = {
|
|
18
|
+
out: Flags.string({ description: "Directory to write the archive into." }),
|
|
19
|
+
"include-logs": Flags.boolean({ description: "Include service logs in the archive.", default: false }),
|
|
20
|
+
};
|
|
21
|
+
async run() {
|
|
22
|
+
const { flags } = await this.parse(Backup);
|
|
23
|
+
const profile = this.loadProfile(flags.profile, true, flags.product);
|
|
24
|
+
const outDir = flags.out ?? join(profile.root, "backups");
|
|
25
|
+
const spinner = ora({ isEnabled: isTty && !flags.json, discardStdin: false });
|
|
26
|
+
try {
|
|
27
|
+
const result = await createBackup(profile, {
|
|
28
|
+
outDir,
|
|
29
|
+
includeLogs: flags["include-logs"],
|
|
30
|
+
onStep: (message) => {
|
|
31
|
+
if (!flags.json)
|
|
32
|
+
spinner.start(message);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
spinner.stop();
|
|
36
|
+
if (flags.json) {
|
|
37
|
+
this.log(renderJson(buildEnvelope({
|
|
38
|
+
command: "backup",
|
|
39
|
+
profile,
|
|
40
|
+
data: { file: result.file, bytes: result.bytes, manifest: result.manifest },
|
|
41
|
+
})));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.log("");
|
|
45
|
+
this.log(`${c.ok(glyph.pass)} ${c.value(result.file)} ${c.dim(formatBytes(result.bytes))}`);
|
|
46
|
+
this.log(c.dim(` schema revision ${result.manifest.schemaRevision} · media is never included`));
|
|
47
|
+
this.log("");
|
|
48
|
+
this.log(c.dim(`restore with: fantastic restore "${result.file}" --dry-run`));
|
|
49
|
+
this.log("");
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
spinner.stop();
|
|
53
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
54
|
+
if (flags.json) {
|
|
55
|
+
this.log(renderJson(buildEnvelope({
|
|
56
|
+
command: "backup",
|
|
57
|
+
profile,
|
|
58
|
+
data: { written: false },
|
|
59
|
+
problems: [
|
|
60
|
+
{
|
|
61
|
+
id: "backup.failed",
|
|
62
|
+
severity: "fail",
|
|
63
|
+
message,
|
|
64
|
+
remedy: "Start the core so it can produce a consistent snapshot: fantastic start",
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
})));
|
|
68
|
+
this.exit(EXIT.FAILURE);
|
|
69
|
+
}
|
|
70
|
+
this.log(c.bad(`Backup failed: ${message}`));
|
|
71
|
+
this.exit(EXIT.FAILURE);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseCommand } from "../../base-command.js";
|
|
2
|
+
export default class ConfigGet extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,QAAQ,WAA6C;IAE5D,MAAM,CAAC,IAAI;;MAET;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyB3B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import { BaseCommand } from "../../base-command.js";
|
|
3
|
+
import { CONFIG_KEYS, effectiveValues, readLocalConfig } from "../../config/local-config.js";
|
|
4
|
+
import { buildEnvelope, renderJson } from "../../render/json.js";
|
|
5
|
+
import { NOT_REPORTED, c } from "../../render/theme.js";
|
|
6
|
+
import { EXIT } from "../../exit-codes.js";
|
|
7
|
+
// AR: يقرأ إعدادًا واحدًا. يطبع القيمة السارية عاريةً (بلا زخرفة) ليصلح للاستعمال في سكربت مباشرة.
|
|
8
|
+
// EN: Reads one setting. Prints the effective value bare, so it can be used in a script directly.
|
|
9
|
+
export default class ConfigGet extends BaseCommand {
|
|
10
|
+
static description = "Read one CLI setting";
|
|
11
|
+
static examples = ["<%= config.bin %> config get corePort"];
|
|
12
|
+
static args = {
|
|
13
|
+
key: Args.string({ description: "Setting name", required: true, options: [...CONFIG_KEYS] }),
|
|
14
|
+
};
|
|
15
|
+
async run() {
|
|
16
|
+
const { args, flags } = await this.parse(ConfigGet);
|
|
17
|
+
const profile = this.loadProfile(flags.profile, false, flags.product);
|
|
18
|
+
const key = args.key;
|
|
19
|
+
const stored = readLocalConfig(profile)[key];
|
|
20
|
+
const effective = effectiveValues(profile)[key];
|
|
21
|
+
if (flags.json) {
|
|
22
|
+
this.log(renderJson(buildEnvelope({ command: "config get", profile, data: { key, stored: stored ?? null, effective: effective ?? null } })));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (effective === undefined) {
|
|
26
|
+
this.log(c.dim(NOT_REPORTED));
|
|
27
|
+
this.exit(EXIT.OK);
|
|
28
|
+
}
|
|
29
|
+
// عارية عمدًا: $(fantastic config get corePort) يجب أن يعطي رقمًا لا سطرًا مزخرفًا.
|
|
30
|
+
this.log(String(effective));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,8BAA8B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,mGAAmG;AACnG,kGAAkG;AAElG,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,GAAG,sBAAsB,CAAC;IAE5C,MAAM,CAAC,QAAQ,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAE5D,MAAM,CAAC,IAAI,GAAG;QACZ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;KAC7F,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAgB,CAAC;QAClC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,UAAU,CACR,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,EAAE,CAAC,CACvH,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAED,sFAAsF;QACtF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/config/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAA2E;IAE7F,MAAM,CAAC,QAAQ,WAA6E;IAEtF,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqC3B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import Table from "cli-table3";
|
|
2
|
+
import { BaseCommand } from "../../base-command.js";
|
|
3
|
+
import { CONFIG_KEYS, configPath, effectiveValues, readLocalConfig } from "../../config/local-config.js";
|
|
4
|
+
import { buildEnvelope, renderJson } from "../../render/json.js";
|
|
5
|
+
import { NOT_REPORTED, c } from "../../render/theme.js";
|
|
6
|
+
// AR: يعرض **القيمة السارية** بجانب **المخزَّنة**. الفرق بينهما هو ما يبحث عنه من يسأل «لماذا لا
|
|
7
|
+
// يعمل إعدادي؟»: قيمة مخزَّنة لا تُطابق السارية تعني أن شيئًا آخر يتقدّم عليها.
|
|
8
|
+
// EN: Shows the **effective** value beside the **stored** one. The gap between them is exactly what
|
|
9
|
+
// someone asking "why isn't my setting taking effect?" is looking for: a stored value that does
|
|
10
|
+
// not match the effective one means something else outranks it.
|
|
11
|
+
export default class ConfigList extends BaseCommand {
|
|
12
|
+
static description = "Show every CLI setting: what is stored and what is actually in effect";
|
|
13
|
+
static examples = ["<%= config.bin %> config list", "<%= config.bin %> config list --json"];
|
|
14
|
+
async run() {
|
|
15
|
+
const { flags } = await this.parse(ConfigList);
|
|
16
|
+
const profile = this.loadProfile(flags.profile, false, flags.product);
|
|
17
|
+
const stored = readLocalConfig(profile);
|
|
18
|
+
const effective = effectiveValues(profile);
|
|
19
|
+
if (flags.json) {
|
|
20
|
+
this.log(renderJson(buildEnvelope({
|
|
21
|
+
command: "config list",
|
|
22
|
+
profile,
|
|
23
|
+
data: { file: configPath(profile), stored, effective },
|
|
24
|
+
})));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const table = new Table({
|
|
28
|
+
head: ["Key", "Stored", "In effect"].map((header) => c.dim(header)),
|
|
29
|
+
style: { head: [], border: [], "padding-left": 1, "padding-right": 1 },
|
|
30
|
+
});
|
|
31
|
+
for (const key of CONFIG_KEYS) {
|
|
32
|
+
const storedValue = stored[key];
|
|
33
|
+
table.push([
|
|
34
|
+
key,
|
|
35
|
+
storedValue === undefined ? c.dim(NOT_REPORTED) : c.value(String(storedValue)),
|
|
36
|
+
effective[key] === undefined ? c.dim(NOT_REPORTED) : String(effective[key]),
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
this.log(table.toString());
|
|
40
|
+
this.log(c.dim(`file: ${configPath(profile)}`));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/config/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,uBAAuB,CAAC;AAExD,iGAAiG;AACjG,oFAAoF;AACpF,oGAAoG;AACpG,oGAAoG;AACpG,oEAAoE;AAEpE,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,GAAG,uEAAuE,CAAC;IAE7F,MAAM,CAAC,QAAQ,GAAG,CAAC,+BAA+B,EAAE,sCAAsC,CAAC,CAAC;IAE5F,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CACN,UAAU,CACR,aAAa,CAAC;gBACZ,OAAO,EAAE,aAAa;gBACtB,OAAO;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;aACvD,CAAC,CACH,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;SACvE,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG;gBACH,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC9E,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC5E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseCommand } from "../../base-command.js";
|
|
2
|
+
export default class ConfigSet extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
key: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/config/set.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAWpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SAAwE;IAE1F,MAAM,CAAC,QAAQ,WAAqG;IAEpH,MAAM,CAAC,IAAI;;;MAGT;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+C3B"}
|