@kya-os/cli 1.1.0 → 1.2.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/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +173 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +9 -31
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.d.ts +7 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +196 -44
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/demo.d.ts +10 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +584 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +111 -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 +530 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +113 -15
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/identity.d.ts +14 -0
- package/dist/commands/identity.d.ts.map +1 -0
- package/dist/commands/identity.js +204 -0
- package/dist/commands/identity.js.map +1 -0
- package/dist/commands/init.d.ts +6 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +86 -670
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/receipts.d.ts +11 -0
- package/dist/commands/receipts.d.ts.map +1 -0
- package/dist/commands/receipts.js +179 -0
- package/dist/commands/receipts.js.map +1 -0
- package/dist/commands/register.d.ts +15 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +220 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/rotate.d.ts +7 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +149 -109
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +129 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +177 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.d.ts +22 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +491 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/components/claim-experience.d.ts +21 -0
- package/dist/components/claim-experience.d.ts.map +1 -0
- package/dist/components/claim-experience.js +138 -0
- package/dist/components/claim-experience.js.map +1 -0
- package/dist/effects/animation-engine.d.ts +173 -0
- package/dist/effects/animation-engine.d.ts.map +1 -0
- package/dist/effects/animation-engine.js +254 -0
- package/dist/effects/animation-engine.js.map +1 -0
- package/dist/effects/cli-integration.js +8 -8
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/config.d.ts +86 -10
- package/dist/effects/config.d.ts.map +1 -1
- package/dist/effects/config.js +201 -18
- package/dist/effects/config.js.map +1 -1
- package/dist/effects/effect-runner.d.ts +69 -0
- package/dist/effects/effect-runner.d.ts.map +1 -0
- package/dist/effects/effect-runner.js +255 -0
- package/dist/effects/effect-runner.js.map +1 -0
- package/dist/effects/gradient.d.ts +131 -0
- package/dist/effects/gradient.d.ts.map +1 -0
- package/dist/effects/gradient.js +236 -0
- package/dist/effects/gradient.js.map +1 -0
- package/dist/effects/implementations/beams.d.ts +80 -0
- package/dist/effects/implementations/beams.d.ts.map +1 -0
- package/dist/effects/implementations/beams.js +221 -0
- package/dist/effects/implementations/beams.js.map +1 -0
- package/dist/effects/implementations/blackhole.d.ts +98 -0
- package/dist/effects/implementations/blackhole.d.ts.map +1 -0
- package/dist/effects/implementations/blackhole.js +421 -0
- package/dist/effects/implementations/blackhole.js.map +1 -0
- package/dist/effects/implementations/burn.d.ts +74 -0
- package/dist/effects/implementations/burn.d.ts.map +1 -0
- package/dist/effects/implementations/burn.js +234 -0
- package/dist/effects/implementations/burn.js.map +1 -0
- package/dist/effects/implementations/decrypt.d.ts +115 -0
- package/dist/effects/implementations/decrypt.d.ts.map +1 -0
- package/dist/effects/implementations/decrypt.js +394 -0
- package/dist/effects/implementations/decrypt.js.map +1 -0
- package/dist/effects/implementations/waves.d.ts +78 -0
- package/dist/effects/implementations/waves.d.ts.map +1 -0
- package/dist/effects/implementations/waves.js +278 -0
- package/dist/effects/implementations/waves.js.map +1 -0
- package/dist/effects/index.d.ts +34 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +114 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/motion-engine.d.ts +168 -0
- package/dist/effects/motion-engine.d.ts.map +1 -0
- package/dist/effects/motion-engine.js +353 -0
- package/dist/effects/motion-engine.js.map +1 -0
- package/dist/effects/safe-executor.d.ts +55 -0
- package/dist/effects/safe-executor.d.ts.map +1 -0
- package/dist/effects/safe-executor.js +210 -0
- package/dist/effects/safe-executor.js.map +1 -0
- package/dist/effects/types.d.ts +199 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +80 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/effects/utils.d.ts +104 -0
- package/dist/effects/utils.d.ts.map +1 -0
- package/dist/effects/utils.js +280 -0
- package/dist/effects/utils.js.map +1 -0
- package/dist/index.js +154 -19
- package/dist/utils/env-manager.d.ts +6 -7
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +52 -40
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/identity-manager.d.ts +41 -0
- package/dist/utils/identity-manager.d.ts.map +1 -0
- package/dist/utils/identity-manager.js +159 -0
- package/dist/utils/identity-manager.js.map +1 -0
- package/dist/utils/kta-api.d.ts +67 -0
- package/dist/utils/kta-api.d.ts.map +1 -0
- package/dist/utils/kta-api.js +137 -0
- package/dist/utils/kta-api.js.map +1 -0
- package/package.json +8 -7
- package/dist/utils/validation.d.ts +0 -101
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -109
- package/dist/utils/validation.js.map +0 -1
package/dist/effects/config.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Configuration management for terminal effects
|
|
3
|
-
* Local implementation since config functions aren't exported from @kya-os/cli-effects
|
|
2
|
+
* Configuration management for terminal effects
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { detectTerminalCapabilities } from "./utils.js";
|
|
5
|
+
import * as fs from "fs/promises";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import { homedir } from "os";
|
|
8
|
+
/**
|
|
9
|
+
* Default configuration
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_CONFIG = {
|
|
7
12
|
enabled: true,
|
|
8
13
|
speedMultiplier: 1.0,
|
|
9
14
|
performanceProfile: "medium",
|
|
@@ -13,21 +18,199 @@ const defaultConfig = {
|
|
|
13
18
|
showMetrics: false,
|
|
14
19
|
effectSettings: {},
|
|
15
20
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Performance profiles
|
|
23
|
+
*/
|
|
24
|
+
const PERFORMANCE_PROFILES = {
|
|
25
|
+
low: {
|
|
26
|
+
maxExecutionTime: 1000,
|
|
27
|
+
maxMemoryUsage: 25,
|
|
28
|
+
},
|
|
29
|
+
medium: {
|
|
30
|
+
maxExecutionTime: 3000,
|
|
31
|
+
maxMemoryUsage: 50,
|
|
32
|
+
},
|
|
33
|
+
high: {
|
|
34
|
+
maxExecutionTime: 5000,
|
|
35
|
+
maxMemoryUsage: 100,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Configuration manager for effects
|
|
40
|
+
*/
|
|
41
|
+
export class EffectsConfigManager {
|
|
42
|
+
constructor(configPath) {
|
|
43
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
44
|
+
this.configPath =
|
|
45
|
+
configPath || path.join(homedir(), ".kya-os", "effects.config.json");
|
|
21
46
|
}
|
|
22
|
-
|
|
23
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Load configuration from file
|
|
49
|
+
*/
|
|
50
|
+
async load() {
|
|
51
|
+
try {
|
|
52
|
+
const configData = await fs.readFile(this.configPath, "utf-8");
|
|
53
|
+
const loadedConfig = JSON.parse(configData);
|
|
54
|
+
this.config = { ...DEFAULT_CONFIG, ...loadedConfig };
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// Config file doesn't exist or is invalid, use defaults
|
|
58
|
+
if (process.env.DEBUG) {
|
|
59
|
+
console.log("No effects config found, using defaults");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
24
62
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Save configuration to file
|
|
65
|
+
*/
|
|
66
|
+
async save() {
|
|
67
|
+
const configDir = path.dirname(this.configPath);
|
|
68
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
69
|
+
await fs.writeFile(this.configPath, JSON.stringify(this.config, null, 2));
|
|
30
70
|
}
|
|
31
|
-
|
|
32
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Get current configuration
|
|
73
|
+
*/
|
|
74
|
+
getConfig() {
|
|
75
|
+
return { ...this.config };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Update configuration
|
|
79
|
+
*/
|
|
80
|
+
async updateConfig(updates) {
|
|
81
|
+
this.config = { ...this.config, ...updates };
|
|
82
|
+
await this.save();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get safety configuration based on performance profile
|
|
86
|
+
*/
|
|
87
|
+
getSafetyConfig() {
|
|
88
|
+
const profile = PERFORMANCE_PROFILES[this.config.performanceProfile] ||
|
|
89
|
+
PERFORMANCE_PROFILES.medium;
|
|
90
|
+
return {
|
|
91
|
+
...profile,
|
|
92
|
+
enableMonitoring: this.config.showMetrics,
|
|
93
|
+
forceFallback: this.config.forceFallback || !this.shouldEnableEffects(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Determine if effects should be enabled
|
|
98
|
+
*/
|
|
99
|
+
shouldEnableEffects() {
|
|
100
|
+
// Check explicit disable
|
|
101
|
+
if (!this.config.enabled || process.env.KYA_EFFECTS_ENABLED === "false") {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Check CI/testing environments
|
|
105
|
+
if (this.isCI() || this.isTesting()) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
// Check terminal capabilities
|
|
109
|
+
const capabilities = this.getTerminalCapabilities();
|
|
110
|
+
if (!capabilities.isInteractive) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
// Check color support based on color mode
|
|
114
|
+
if (this.config.colorMode === "none") {
|
|
115
|
+
return true; // Effects without color
|
|
116
|
+
}
|
|
117
|
+
if (this.config.colorMode === "auto") {
|
|
118
|
+
return capabilities.supportsColor;
|
|
119
|
+
}
|
|
120
|
+
// Check specific color mode support
|
|
121
|
+
switch (this.config.colorMode) {
|
|
122
|
+
case "16":
|
|
123
|
+
return capabilities.supportsColor;
|
|
124
|
+
case "256":
|
|
125
|
+
return capabilities.supports256Color;
|
|
126
|
+
case "truecolor":
|
|
127
|
+
return capabilities.supportsTrueColor;
|
|
128
|
+
default:
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get terminal capabilities
|
|
134
|
+
*/
|
|
135
|
+
getTerminalCapabilities() {
|
|
136
|
+
if (!this.terminalCapabilities) {
|
|
137
|
+
this.terminalCapabilities = detectTerminalCapabilities();
|
|
138
|
+
}
|
|
139
|
+
return this.terminalCapabilities;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Check if running in CI environment
|
|
143
|
+
*/
|
|
144
|
+
isCI() {
|
|
145
|
+
return !!(process.env.CI ||
|
|
146
|
+
process.env.CONTINUOUS_INTEGRATION ||
|
|
147
|
+
process.env.GITHUB_ACTIONS ||
|
|
148
|
+
process.env.GITLAB_CI ||
|
|
149
|
+
process.env.CIRCLECI ||
|
|
150
|
+
process.env.TRAVIS ||
|
|
151
|
+
process.env.JENKINS_URL);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if running in testing environment
|
|
155
|
+
*/
|
|
156
|
+
isTesting() {
|
|
157
|
+
return process.env.NODE_ENV === "test" || !!process.env.JEST_WORKER_ID;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Apply environment variable overrides
|
|
161
|
+
*/
|
|
162
|
+
applyEnvironmentOverrides() {
|
|
163
|
+
if (process.env.KYA_EFFECTS_ENABLED !== undefined) {
|
|
164
|
+
this.config.enabled = process.env.KYA_EFFECTS_ENABLED !== "false";
|
|
165
|
+
}
|
|
166
|
+
if (process.env.KYA_EFFECTS_SPEED) {
|
|
167
|
+
const speed = parseFloat(process.env.KYA_EFFECTS_SPEED);
|
|
168
|
+
if (!isNaN(speed) && speed > 0 && speed <= 10) {
|
|
169
|
+
this.config.speedMultiplier = speed;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (process.env.KYA_EFFECTS_PROFILE) {
|
|
173
|
+
const profile = process.env.KYA_EFFECTS_PROFILE;
|
|
174
|
+
if (["low", "medium", "high"].includes(profile)) {
|
|
175
|
+
this.config.performanceProfile = profile;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (process.env.KYA_EFFECTS_FALLBACK === "true") {
|
|
179
|
+
this.config.forceFallback = true;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get effect-specific configuration
|
|
184
|
+
*/
|
|
185
|
+
getEffectConfig(effectName) {
|
|
186
|
+
return this.config.effectSettings[effectName] || {};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Set effect-specific configuration
|
|
190
|
+
*/
|
|
191
|
+
async setEffectConfig(effectName, config) {
|
|
192
|
+
this.config.effectSettings[effectName] = config;
|
|
193
|
+
await this.save();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Global configuration instance
|
|
198
|
+
*/
|
|
199
|
+
export const effectsConfig = new EffectsConfigManager();
|
|
200
|
+
/**
|
|
201
|
+
* Initialize configuration
|
|
202
|
+
*/
|
|
203
|
+
export async function initializeConfig() {
|
|
204
|
+
await effectsConfig.load();
|
|
205
|
+
effectsConfig.applyEnvironmentOverrides();
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get current configuration
|
|
209
|
+
*/
|
|
210
|
+
export async function getConfig() {
|
|
211
|
+
if (!effectsConfig.getConfig().enabled) {
|
|
212
|
+
await initializeConfig();
|
|
213
|
+
}
|
|
214
|
+
return effectsConfig.getConfig();
|
|
215
|
+
}
|
|
33
216
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/effects/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/effects/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Runner
|
|
3
|
+
* Orchestrates terminal effects with proper management
|
|
4
|
+
*/
|
|
5
|
+
import { Effect, EffectConfig } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Options for running an effect
|
|
8
|
+
*/
|
|
9
|
+
export interface RunEffectOptions {
|
|
10
|
+
/** Effect instance to run */
|
|
11
|
+
effect: Effect;
|
|
12
|
+
/** Text to animate */
|
|
13
|
+
text: string;
|
|
14
|
+
/** Effect-specific configuration */
|
|
15
|
+
config?: Partial<EffectConfig>;
|
|
16
|
+
/** Callback when effect completes */
|
|
17
|
+
onComplete?: () => void;
|
|
18
|
+
/** Callback on error */
|
|
19
|
+
onError?: (error: Error) => void;
|
|
20
|
+
/** Custom output stream */
|
|
21
|
+
outputStream?: NodeJS.WriteStream;
|
|
22
|
+
/** Skip the "Press any key to exit" prompt */
|
|
23
|
+
skipExitPrompt?: boolean;
|
|
24
|
+
/** Keep text visible after effect (no alternate screen buffer) */
|
|
25
|
+
persistent?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Effect runner for executing terminal effects
|
|
29
|
+
*/
|
|
30
|
+
export declare class EffectRunner {
|
|
31
|
+
private terminalState;
|
|
32
|
+
private isRunning;
|
|
33
|
+
private currentEffect;
|
|
34
|
+
private animationHandle;
|
|
35
|
+
constructor();
|
|
36
|
+
/**
|
|
37
|
+
* Run an effect
|
|
38
|
+
*/
|
|
39
|
+
run(options: RunEffectOptions): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Stop the currently running effect
|
|
42
|
+
*/
|
|
43
|
+
stop(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if terminal supports effects
|
|
46
|
+
*/
|
|
47
|
+
private supportsEffects;
|
|
48
|
+
/**
|
|
49
|
+
* Setup terminal for effect rendering
|
|
50
|
+
*/
|
|
51
|
+
private setupTerminal;
|
|
52
|
+
/**
|
|
53
|
+
* Run the animation loop
|
|
54
|
+
*/
|
|
55
|
+
private runAnimation;
|
|
56
|
+
/**
|
|
57
|
+
* Clean up terminal state
|
|
58
|
+
*/
|
|
59
|
+
private cleanup;
|
|
60
|
+
/**
|
|
61
|
+
* Check if an effect is currently running
|
|
62
|
+
*/
|
|
63
|
+
isEffectRunning(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Get current effect info
|
|
66
|
+
*/
|
|
67
|
+
getCurrentEffect(): Effect | null;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=effect-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-runner.d.ts","sourceRoot":"","sources":["../../src/effects/effect-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAMtE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAClC,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAWD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAA+B;;IAUtD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmEnD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;YACW,aAAa;IA2D3B;;OAEG;YACW,YAAY;IA+D1B;;OAEG;YACW,OAAO;IAmCrB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAGlC"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Runner
|
|
3
|
+
* Orchestrates terminal effects with proper management
|
|
4
|
+
*/
|
|
5
|
+
import { ANSI, getTerminalDimensions, calculateFrameDelay } from "./utils.js";
|
|
6
|
+
import { getConfig } from "./config.js";
|
|
7
|
+
import * as readline from "readline";
|
|
8
|
+
import { stdout } from "process";
|
|
9
|
+
/**
|
|
10
|
+
* Effect runner for executing terminal effects
|
|
11
|
+
*/
|
|
12
|
+
export class EffectRunner {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.isRunning = false;
|
|
15
|
+
this.currentEffect = null;
|
|
16
|
+
this.animationHandle = null;
|
|
17
|
+
this.terminalState = {
|
|
18
|
+
cursorHidden: false,
|
|
19
|
+
originalDimensions: getTerminalDimensions(),
|
|
20
|
+
cleanupHandlers: [],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Run an effect
|
|
25
|
+
*/
|
|
26
|
+
async run(options) {
|
|
27
|
+
if (this.isRunning) {
|
|
28
|
+
throw new Error("Another effect is already running");
|
|
29
|
+
}
|
|
30
|
+
const config = await getConfig();
|
|
31
|
+
const outputStream = options.outputStream || stdout;
|
|
32
|
+
// Check if effects are enabled or if terminal doesn't support effects
|
|
33
|
+
if (!config.enabled || !this.supportsEffects(outputStream)) {
|
|
34
|
+
// Use fallback
|
|
35
|
+
const fallbackLines = options.effect.renderFallback();
|
|
36
|
+
outputStream.write(fallbackLines.join("\n") + "\n");
|
|
37
|
+
options.onComplete?.();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
this.isRunning = true;
|
|
42
|
+
this.currentEffect = options.effect;
|
|
43
|
+
// Setup terminal
|
|
44
|
+
await this.setupTerminal(outputStream, options.persistent);
|
|
45
|
+
// Initialize effect
|
|
46
|
+
const effectConfig = {
|
|
47
|
+
frameRate: 30 * config.speedMultiplier,
|
|
48
|
+
useXTermColors: false,
|
|
49
|
+
noColor: false,
|
|
50
|
+
canvas: this.terminalState.originalDimensions,
|
|
51
|
+
...options.config,
|
|
52
|
+
};
|
|
53
|
+
options.effect.initialize(options.text, effectConfig);
|
|
54
|
+
// Execute with safety wrapper
|
|
55
|
+
// Since we're handling the animation loop ourselves, we bypass the executor's execute method
|
|
56
|
+
// and use the animation loop directly with try-catch for safety
|
|
57
|
+
try {
|
|
58
|
+
await this.runAnimation(options.effect, outputStream, effectConfig.frameRate, options.skipExitPrompt, options.persistent);
|
|
59
|
+
}
|
|
60
|
+
catch (animationError) {
|
|
61
|
+
// If animation fails, try fallback
|
|
62
|
+
const fallbackLines = options.effect.renderFallback();
|
|
63
|
+
outputStream.write(fallbackLines.join("\n") + "\n");
|
|
64
|
+
throw animationError;
|
|
65
|
+
}
|
|
66
|
+
// Clean up
|
|
67
|
+
await this.cleanup(outputStream, options.persistent);
|
|
68
|
+
options.onComplete?.();
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
await this.cleanup(outputStream, options.persistent);
|
|
72
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
73
|
+
options.onError?.(err);
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
this.isRunning = false;
|
|
78
|
+
this.currentEffect = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Stop the currently running effect
|
|
83
|
+
*/
|
|
84
|
+
async stop() {
|
|
85
|
+
if (!this.isRunning || !this.currentEffect) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Cancel animation
|
|
89
|
+
if (this.animationHandle) {
|
|
90
|
+
clearTimeout(this.animationHandle);
|
|
91
|
+
this.animationHandle = null;
|
|
92
|
+
}
|
|
93
|
+
// Clean up effect
|
|
94
|
+
this.currentEffect.cleanup();
|
|
95
|
+
await this.cleanup(stdout, false);
|
|
96
|
+
this.isRunning = false;
|
|
97
|
+
this.currentEffect = null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Check if terminal supports effects
|
|
101
|
+
*/
|
|
102
|
+
supportsEffects(stream) {
|
|
103
|
+
// Check if we have a TTY and basic terminal capabilities
|
|
104
|
+
if (!stream.isTTY)
|
|
105
|
+
return false;
|
|
106
|
+
if (!process.env.TERM || process.env.TERM === 'dumb')
|
|
107
|
+
return false;
|
|
108
|
+
// Check for common CI environments that might not support effects well
|
|
109
|
+
if (process.env.CI || process.env.GITHUB_ACTIONS)
|
|
110
|
+
return false;
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Setup terminal for effect rendering
|
|
115
|
+
*/
|
|
116
|
+
async setupTerminal(stream, persistent) {
|
|
117
|
+
// Only use alternate screen buffer if not in persistent mode
|
|
118
|
+
if (!persistent) {
|
|
119
|
+
// Enter alternate screen buffer (prevents scrolling)
|
|
120
|
+
stream.write("\x1b[?1049h");
|
|
121
|
+
}
|
|
122
|
+
// Hide cursor
|
|
123
|
+
stream.write(ANSI.cursor.hide);
|
|
124
|
+
this.terminalState.cursorHidden = true;
|
|
125
|
+
// Clear screen
|
|
126
|
+
stream.write(ANSI.clear.screen);
|
|
127
|
+
stream.write(ANSI.cursor.home);
|
|
128
|
+
// Setup cleanup handlers
|
|
129
|
+
const handleExit = () => {
|
|
130
|
+
this.cleanup(stream, persistent).catch(() => { });
|
|
131
|
+
};
|
|
132
|
+
const handleResize = () => {
|
|
133
|
+
this.terminalState.originalDimensions = getTerminalDimensions();
|
|
134
|
+
};
|
|
135
|
+
process.on("exit", handleExit);
|
|
136
|
+
process.on("SIGINT", handleExit);
|
|
137
|
+
process.on("SIGTERM", handleExit);
|
|
138
|
+
process.stdout.on("resize", handleResize);
|
|
139
|
+
this.terminalState.cleanupHandlers.push(() => process.off("exit", handleExit), () => process.off("SIGINT", handleExit), () => process.off("SIGTERM", handleExit), () => process.stdout.off("resize", handleResize));
|
|
140
|
+
// Setup keyboard handling for cancellation
|
|
141
|
+
if (stream === stdout) {
|
|
142
|
+
readline.emitKeypressEvents(process.stdin);
|
|
143
|
+
if (process.stdin.isTTY) {
|
|
144
|
+
process.stdin.setRawMode(true);
|
|
145
|
+
}
|
|
146
|
+
const handleKeypress = async (_str, key) => {
|
|
147
|
+
if (key && (key.name === "escape" || (key.ctrl && key.name === "c") || key.name === "x" || key.name === "q")) {
|
|
148
|
+
await this.stop();
|
|
149
|
+
// Ensure we exit alternate screen
|
|
150
|
+
stream.write("\x1b[?1049l");
|
|
151
|
+
process.exit(0);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
process.stdin.on("keypress", handleKeypress);
|
|
155
|
+
this.terminalState.cleanupHandlers.push(() => process.stdin.off("keypress", handleKeypress));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Run the animation loop
|
|
160
|
+
*/
|
|
161
|
+
async runAnimation(effect, stream, frameRate, skipExitPrompt, persistent) {
|
|
162
|
+
const frameDelay = calculateFrameDelay(frameRate);
|
|
163
|
+
while (!effect.isComplete()) {
|
|
164
|
+
const startTime = Date.now();
|
|
165
|
+
// Render frame
|
|
166
|
+
const lines = await effect.render();
|
|
167
|
+
// Clear screen and render
|
|
168
|
+
stream.write(ANSI.cursor.home);
|
|
169
|
+
stream.write(lines.join("\n"));
|
|
170
|
+
stream.write(ANSI.clear.toEnd);
|
|
171
|
+
// Calculate actual delay needed
|
|
172
|
+
const renderTime = Date.now() - startTime;
|
|
173
|
+
const delay = Math.max(0, frameDelay - renderTime);
|
|
174
|
+
// Wait for next frame
|
|
175
|
+
if (delay > 0) {
|
|
176
|
+
await new Promise((resolve) => {
|
|
177
|
+
this.animationHandle = setTimeout(resolve, delay);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Only show exit prompt if not skipped and not in persistent mode
|
|
182
|
+
if (!skipExitPrompt && !persistent) {
|
|
183
|
+
// After animation completes, show exit message
|
|
184
|
+
stream.write("\n\n");
|
|
185
|
+
stream.write("\x1b[2m"); // Dim text
|
|
186
|
+
stream.write("Press any key to exit...");
|
|
187
|
+
stream.write("\x1b[0m"); // Reset
|
|
188
|
+
stream.write("\n");
|
|
189
|
+
// Wait for keypress - ensure we're in raw mode
|
|
190
|
+
if (process.stdin.isTTY && !process.stdin.isRaw) {
|
|
191
|
+
process.stdin.setRawMode(true);
|
|
192
|
+
}
|
|
193
|
+
await new Promise((resolve) => {
|
|
194
|
+
const handleKeypress = (_str, _key) => {
|
|
195
|
+
process.stdin.off("keypress", handleKeypress);
|
|
196
|
+
resolve();
|
|
197
|
+
};
|
|
198
|
+
process.stdin.on("keypress", handleKeypress);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
else if (persistent) {
|
|
202
|
+
// In persistent mode, render the final frame one more time to ensure it's visible
|
|
203
|
+
const finalLines = await effect.render();
|
|
204
|
+
stream.write(ANSI.cursor.home);
|
|
205
|
+
stream.write(finalLines.join("\n"));
|
|
206
|
+
stream.write(ANSI.clear.toEnd);
|
|
207
|
+
stream.write("\n");
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Clean up terminal state
|
|
212
|
+
*/
|
|
213
|
+
async cleanup(stream, persistent) {
|
|
214
|
+
// Clear animation handle
|
|
215
|
+
if (this.animationHandle) {
|
|
216
|
+
clearTimeout(this.animationHandle);
|
|
217
|
+
this.animationHandle = null;
|
|
218
|
+
}
|
|
219
|
+
// Restore cursor
|
|
220
|
+
if (this.terminalState.cursorHidden) {
|
|
221
|
+
stream.write(ANSI.cursor.show);
|
|
222
|
+
this.terminalState.cursorHidden = false;
|
|
223
|
+
}
|
|
224
|
+
// Reset terminal
|
|
225
|
+
stream.write(ANSI.reset);
|
|
226
|
+
// Only exit alternate screen buffer if not in persistent mode
|
|
227
|
+
if (!persistent) {
|
|
228
|
+
// Exit alternate screen buffer
|
|
229
|
+
stream.write("\x1b[?1049l");
|
|
230
|
+
}
|
|
231
|
+
stream.write("\n");
|
|
232
|
+
// Remove event handlers
|
|
233
|
+
for (const handler of this.terminalState.cleanupHandlers) {
|
|
234
|
+
handler();
|
|
235
|
+
}
|
|
236
|
+
this.terminalState.cleanupHandlers = [];
|
|
237
|
+
// Restore stdin mode
|
|
238
|
+
if (process.stdin.isTTY && stream === stdout) {
|
|
239
|
+
process.stdin.setRawMode(false);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Check if an effect is currently running
|
|
244
|
+
*/
|
|
245
|
+
isEffectRunning() {
|
|
246
|
+
return this.isRunning;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get current effect info
|
|
250
|
+
*/
|
|
251
|
+
getCurrentEffect() {
|
|
252
|
+
return this.currentEffect;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=effect-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-runner.js","sourceRoot":"","sources":["../../src/effects/effect-runner.ts"],"names":[],"mappings":"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"}
|