@kya-os/cli 0.1.0-beta.14 → 0.1.0-beta.16

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.
Files changed (44) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +97 -53
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +11 -24
  6. package/package.json +4 -5
  7. package/dist/commands/cli-experience-demo-simple.d.ts +0 -14
  8. package/dist/commands/cli-experience-demo-simple.d.ts.map +0 -1
  9. package/dist/commands/cli-experience-demo-simple.js +0 -119
  10. package/dist/commands/cli-experience-demo-simple.js.map +0 -1
  11. package/dist/commands/cli-experience-demo.d.ts +0 -14
  12. package/dist/commands/cli-experience-demo.d.ts.map +0 -1
  13. package/dist/commands/cli-experience-demo.js +0 -172
  14. package/dist/commands/cli-experience-demo.js.map +0 -1
  15. package/dist/commands/effects-demo.d.ts +0 -10
  16. package/dist/commands/effects-demo.d.ts.map +0 -1
  17. package/dist/commands/effects-demo.js +0 -292
  18. package/dist/commands/effects-demo.js.map +0 -1
  19. package/dist/commands/test-components.d.ts +0 -5
  20. package/dist/commands/test-components.d.ts.map +0 -1
  21. package/dist/commands/test-components.js +0 -86
  22. package/dist/commands/test-components.js.map +0 -1
  23. package/dist/dev.d.ts +0 -7
  24. package/dist/dev.d.ts.map +0 -1
  25. package/dist/dev.js +0 -9
  26. package/dist/dev.js.map +0 -1
  27. package/dist/effects/__tests__/effects.test.d.ts +0 -5
  28. package/dist/effects/__tests__/effects.test.d.ts.map +0 -1
  29. package/dist/effects/__tests__/effects.test.js +0 -210
  30. package/dist/effects/__tests__/effects.test.js.map +0 -1
  31. package/dist/effects/implementations/binary-path.d.ts +0 -88
  32. package/dist/effects/implementations/binary-path.d.ts.map +0 -1
  33. package/dist/effects/implementations/binary-path.js +0 -296
  34. package/dist/effects/implementations/binary-path.js.map +0 -1
  35. package/dist/effects/implementations/test.d.ts +0 -113
  36. package/dist/effects/implementations/test.d.ts.map +0 -1
  37. package/dist/effects/implementations/test.js +0 -552
  38. package/dist/effects/implementations/test.js.map +0 -1
  39. package/dist/effects/template/effect-template.d.ts +0 -97
  40. package/dist/effects/template/effect-template.d.ts.map +0 -1
  41. package/dist/effects/template/effect-template.js +0 -208
  42. package/dist/effects/template/effect-template.js.map +0 -1
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"effects.test.d.ts","sourceRoot":"","sources":["../../../src/effects/__tests__/effects.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,210 +0,0 @@
1
- /**
2
- * Tests for Terminal Effects System
3
- */
4
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
5
- import { SafeEffectExecutor, getEffect, getAllEffects, cliEffects, EffectTrigger, } from "../index.js";
6
- // Mock terminal capabilities
7
- vi.mock("../utils.js", async () => {
8
- const actual = await vi.importActual("../utils.js");
9
- return {
10
- ...actual,
11
- detectTerminalCapabilities: vi.fn(() => ({
12
- supportsColor: true,
13
- supports256Color: true,
14
- supportsTrueColor: true,
15
- dimensions: { width: 80, height: 24 },
16
- isInteractive: true,
17
- })),
18
- };
19
- });
20
- // Mock process.stdout
21
- const mockWrite = vi.fn();
22
- const mockClearLine = vi.fn();
23
- const mockCursorTo = vi.fn();
24
- beforeEach(() => {
25
- vi.clearAllMocks();
26
- process.stdout.write = mockWrite;
27
- process.stdout.clearLine = mockClearLine;
28
- process.stdout.cursorTo = mockCursorTo;
29
- });
30
- afterEach(() => {
31
- vi.restoreAllMocks();
32
- });
33
- describe("Effect Registry", () => {
34
- it("should register and retrieve effects", async () => {
35
- const burnEffect = await getEffect("burn");
36
- expect(burnEffect).toBeDefined();
37
- expect(burnEffect?.name).toBe("Burn");
38
- const beamsEffect = await getEffect("beams");
39
- expect(beamsEffect).toBeDefined();
40
- expect(beamsEffect?.name).toBe("Beams");
41
- });
42
- it("should return null for non-existent effects", async () => {
43
- const effect = await getEffect("nonexistent");
44
- expect(effect).toBeNull();
45
- });
46
- it("should list all available effects", () => {
47
- const effects = getAllEffects();
48
- expect(effects.length).toBeGreaterThanOrEqual(5); // burn, beams, decrypt, blackhole, waves
49
- expect(effects.map((e) => e.name)).toContain("burn");
50
- expect(effects.map((e) => e.name)).toContain("beams");
51
- expect(effects.map((e) => e.name)).toContain("decrypt");
52
- expect(effects.map((e) => e.name)).toContain("blackhole");
53
- expect(effects.map((e) => e.name)).toContain("waves");
54
- });
55
- });
56
- describe("BurnEffect", () => {
57
- let effect;
58
- beforeEach(async () => {
59
- effect = await getEffect("burn");
60
- });
61
- it("should initialize properly", () => {
62
- const text = "Test Text";
63
- effect.initialize(text, { frameRate: 30 });
64
- expect(effect.name).toBe("Burn");
65
- expect(effect.description).toBe("Characters are ignited and burn up the screen");
66
- });
67
- it("should render frames", async () => {
68
- const text = "Hello";
69
- effect.initialize(text, { frameRate: 30 });
70
- const frame = await effect.render();
71
- expect(frame).toBeInstanceOf(Array);
72
- expect(frame.length).toBeGreaterThan(0);
73
- });
74
- it("should provide fallback rendering", () => {
75
- const text = "Hello\nWorld";
76
- effect.initialize(text, {});
77
- const fallback = effect.renderFallback();
78
- expect(fallback).toEqual(["Hello", "World"]);
79
- });
80
- it("should complete after animation", async () => {
81
- const text = "Test";
82
- effect.initialize(text, { frameRate: 120 }); // High framerate for faster test
83
- expect(effect.isComplete()).toBe(false);
84
- // Render multiple frames
85
- for (let i = 0; i < 100 && !effect.isComplete(); i++) {
86
- await effect.render();
87
- }
88
- // Should eventually complete
89
- expect(effect.isComplete()).toBe(true);
90
- });
91
- });
92
- describe("SafeEffectExecutor", () => {
93
- let executor;
94
- beforeEach(() => {
95
- executor = new SafeEffectExecutor({
96
- maxExecutionTime: 1000,
97
- maxMemoryUsage: 50,
98
- });
99
- });
100
- it("should execute effects successfully", async () => {
101
- const effect = await getEffect("burn");
102
- const result = await executor.execute(effect, "Test", {});
103
- expect(result.success).toBe(true);
104
- expect(result.frames).toBeInstanceOf(Array);
105
- });
106
- it("should timeout long-running effects", async () => {
107
- const effect = await getEffect("burn");
108
- executor = new SafeEffectExecutor({ maxExecutionTime: 10 }); // Very short timeout
109
- const result = await executor.execute(effect, "A".repeat(1000), {});
110
- // Should fallback on timeout
111
- expect(result.success).toBe(true);
112
- expect(result.error).toBeDefined();
113
- });
114
- it("should use fallback in non-interactive environments", async () => {
115
- const utils = await import("../utils.js");
116
- vi.mocked(utils.detectTerminalCapabilities).mockReturnValueOnce({
117
- supportsColor: false,
118
- supports256Color: false,
119
- supportsTrueColor: false,
120
- dimensions: { width: 80, height: 24 },
121
- isInteractive: false,
122
- });
123
- executor = new SafeEffectExecutor();
124
- const effect = await getEffect("burn");
125
- const result = await executor.execute(effect, "Test", {});
126
- expect(result.success).toBe(true);
127
- expect(result.frames).toEqual(["Test"]);
128
- });
129
- it("should handle effect errors gracefully", async () => {
130
- const effect = await getEffect("burn");
131
- // Force an error by not initializing
132
- const result = await executor.execute(effect, "", {});
133
- expect(result.frames).toBeInstanceOf(Array);
134
- });
135
- });
136
- describe("CLI Effects Integration", () => {
137
- beforeEach(() => {
138
- // Mock console.log
139
- vi.spyOn(console, "log").mockImplementation(() => { });
140
- });
141
- afterEach(() => {
142
- vi.restoreAllMocks();
143
- });
144
- it("should show effects for triggers", async () => {
145
- await cliEffects.showEffect(EffectTrigger.PRIVATE_KEY_DELETE, "Deleting key...");
146
- // Should have attempted to show effect
147
- expect(mockWrite).toHaveBeenCalled();
148
- });
149
- it("should fallback to console.log when effects disabled", async () => {
150
- process.env.KYA_EFFECTS_ENABLED = "false";
151
- await cliEffects.showEffect(EffectTrigger.AGENT_IDENTITY_CREATE, "Creating identity...");
152
- expect(console.log).toHaveBeenCalledWith("Creating identity...");
153
- delete process.env.KYA_EFFECTS_ENABLED;
154
- });
155
- it("should handle custom effects", async () => {
156
- await cliEffects.showCustomEffect("burn", "Custom text");
157
- expect(mockWrite).toHaveBeenCalled();
158
- });
159
- it("should handle loading effects with promises", async () => {
160
- const promise = new Promise((resolve) => {
161
- setTimeout(() => resolve("Done"), 100);
162
- });
163
- const result = await cliEffects.showLoadingEffect("Loading...", promise);
164
- expect(result).toBe("Done");
165
- });
166
- });
167
- describe("Effect Performance", () => {
168
- it("should maintain reasonable frame rates", async () => {
169
- const effect = await getEffect("beams");
170
- const text = "Performance Test";
171
- effect.initialize(text, { frameRate: 30 });
172
- const startTime = Date.now();
173
- let frameCount = 0;
174
- // Render for 100ms
175
- while (Date.now() - startTime < 100 && !effect.isComplete()) {
176
- await effect.render();
177
- frameCount++;
178
- }
179
- // Should render at least a few frames in 100ms
180
- expect(frameCount).toBeGreaterThan(2);
181
- });
182
- });
183
- describe("Memory Safety", () => {
184
- it("should clean up resources properly", async () => {
185
- const effect = await getEffect("burn");
186
- effect.initialize("Test", {});
187
- // Render some frames
188
- for (let i = 0; i < 10; i++) {
189
- await effect.render();
190
- }
191
- // Cleanup
192
- effect.cleanup();
193
- // Should be able to reinitialize
194
- effect.initialize("Test Again", {});
195
- const frame = await effect.render();
196
- expect(frame).toBeInstanceOf(Array);
197
- });
198
- it("should reset state correctly", async () => {
199
- const effect = await getEffect("beams");
200
- effect.initialize("Test", {});
201
- // Render some frames
202
- await effect.render();
203
- await effect.render();
204
- // Reset
205
- effect.reset();
206
- // Should be back to initial state
207
- expect(effect.isComplete()).toBe(false);
208
- });
209
- });
210
- //# sourceMappingURL=effects.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effects.test.js","sourceRoot":"","sources":["../../../src/effects/__tests__/effects.test.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- /**
2
- * Binary Path Effect
3
- * Creates a binary rain effect that reveals characters
4
- */
5
- import { BaseEffect } from "../types.js";
6
- /**
7
- * Configuration options for the Binary Path effect
8
- */
9
- export interface BinaryPathEffectOptions {
10
- /** Duration in milliseconds */
11
- duration?: number;
12
- /** Number of binary streams */
13
- streamCount?: number;
14
- /** Speed of binary fall */
15
- fallSpeed?: number;
16
- /** Binary colors (for 0 and 1) */
17
- binaryColors?: [string, string];
18
- /** Revealed character color */
19
- revealColor?: string;
20
- /** Fade duration for revealed characters */
21
- fadeDuration?: number;
22
- /** Probability of spawning new stream per frame */
23
- spawnProbability?: number;
24
- }
25
- /**
26
- * Binary Path effect implementation
27
- */
28
- export declare class BinaryPathEffect extends BaseEffect {
29
- readonly name = "BinaryPath";
30
- readonly description = "Creates a binary rain effect that reveals characters";
31
- private options;
32
- private streams;
33
- private characterStates;
34
- private animationFrameCount;
35
- private totalFrames;
36
- private nextStreamId;
37
- private _isEffectComplete;
38
- constructor(options?: BinaryPathEffectOptions);
39
- /**
40
- * Initialize the effect
41
- */
42
- protected onInitialize(): void;
43
- /**
44
- * Render the next frame
45
- */
46
- render(): Promise<string[]>;
47
- /**
48
- * Update stream positions and states
49
- */
50
- private updateStreams;
51
- /**
52
- * Spawn a new binary stream
53
- */
54
- private spawnStream;
55
- /**
56
- * Check if a stream collides with any characters
57
- */
58
- private checkCharacterCollision;
59
- /**
60
- * Get color for a revealed character based on fade progress
61
- */
62
- private getRevealedCharacterColor;
63
- /**
64
- * Apply fade to a color
65
- */
66
- private applyFade;
67
- /**
68
- * Interpolate between two colors
69
- */
70
- private interpolateColor;
71
- /**
72
- * Get ANSI color code for a color
73
- */
74
- private getColorCode;
75
- /**
76
- * Render fallback for when effects are disabled
77
- */
78
- renderFallback(): string[];
79
- /**
80
- * Check if effect is complete
81
- */
82
- isComplete(): boolean;
83
- /**
84
- * Reset the effect
85
- */
86
- protected onReset(): void;
87
- }
88
- //# sourceMappingURL=binary-path.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary-path.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/binary-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAS,MAAM,aAAa,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAwBD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,0DAA0D;IAE9E,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,OAAO,GAAE,uBAA4B;IAcjD;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IA0B9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA+DjC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0ErB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;CAQ1B"}
@@ -1,296 +0,0 @@
1
- /**
2
- * Binary Path Effect
3
- * Creates a binary rain effect that reveals characters
4
- */
5
- import { BaseEffect } from "../types.js";
6
- import { ANSI } from "../utils.js";
7
- /**
8
- * Binary Path effect implementation
9
- */
10
- export class BinaryPathEffect extends BaseEffect {
11
- constructor(options = {}) {
12
- super();
13
- this.name = "BinaryPath";
14
- this.description = "Creates a binary rain effect that reveals characters";
15
- this.streams = [];
16
- this.characterStates = new Map();
17
- this.animationFrameCount = 0;
18
- this.totalFrames = 0;
19
- this.nextStreamId = 0;
20
- this._isEffectComplete = false;
21
- this.options = {
22
- duration: 4000,
23
- streamCount: 20,
24
- fallSpeed: 0.5,
25
- binaryColors: ["00FF00", "008800"],
26
- revealColor: "FFFFFF",
27
- fadeDuration: 500,
28
- spawnProbability: 0.1,
29
- ...options,
30
- };
31
- }
32
- /**
33
- * Initialize the effect
34
- */
35
- onInitialize() {
36
- this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
37
- this.streams = [];
38
- this.characterStates.clear();
39
- this.animationFrameCount = 0;
40
- this.nextStreamId = 0;
41
- this._isEffectComplete = false;
42
- // Initialize character states
43
- for (const char of this.characters) {
44
- const key = `${char.originalPosition.x},${char.originalPosition.y}`;
45
- this.characterStates.set(key, {
46
- revealed: false,
47
- revealTime: -1,
48
- fadeProgress: 0,
49
- });
50
- }
51
- // Hide all characters initially
52
- for (const char of this.characters) {
53
- char.visual.symbol = " ";
54
- }
55
- }
56
- /**
57
- * Render the next frame
58
- */
59
- async render() {
60
- if (!this.isInitialized) {
61
- throw new Error("Effect not initialized");
62
- }
63
- // Update streams
64
- this.updateStreams();
65
- // Render text line by line
66
- const lines = this.text.split("\n");
67
- const renderedLines = [];
68
- for (let y = 0; y < lines.length; y++) {
69
- let line = "";
70
- const chars = [...lines[y]];
71
- for (let x = 0; x < chars.length; x++) {
72
- const char = chars[x];
73
- const key = `${x},${y}`;
74
- const state = this.characterStates.get(key);
75
- let renderedChar = " ";
76
- let color = null;
77
- // Check if character is revealed
78
- if (state && state.revealed) {
79
- renderedChar = char;
80
- color = this.getRevealedCharacterColor(state);
81
- }
82
- else {
83
- // Check if there's a binary stream at this position
84
- for (const stream of this.streams) {
85
- if (!stream.active || stream.x !== x)
86
- continue;
87
- for (const segment of stream.trail) {
88
- const segY = Math.floor(segment.y);
89
- if (segY === y) {
90
- renderedChar = segment.char;
91
- const colorIndex = segment.char === "1" ? 0 : 1;
92
- const baseColor = this.options.binaryColors[colorIndex];
93
- color = this.applyFade(baseColor, segment.fade);
94
- break;
95
- }
96
- }
97
- }
98
- }
99
- if (color) {
100
- const colorCode = this.getColorCode(color);
101
- const resetCode = ANSI.reset;
102
- line += colorCode + renderedChar + resetCode;
103
- }
104
- else {
105
- line += renderedChar;
106
- }
107
- }
108
- renderedLines.push(line);
109
- }
110
- this.animationFrameCount++;
111
- return renderedLines;
112
- }
113
- /**
114
- * Update stream positions and states
115
- */
116
- updateStreams() {
117
- const dimensions = this.getCanvasDimensions();
118
- // Spawn new streams
119
- if (this.streams.filter((s) => s.active).length < this.options.streamCount &&
120
- Math.random() < this.options.spawnProbability &&
121
- this.animationFrameCount < this.totalFrames * 0.8) {
122
- this.spawnStream();
123
- }
124
- // Update existing streams
125
- for (const stream of this.streams) {
126
- if (!stream.active)
127
- continue;
128
- // Move stream down
129
- stream.y += stream.speed;
130
- // Update trail
131
- stream.trail = stream.trail
132
- .map((segment) => ({
133
- ...segment,
134
- fade: Math.max(0, segment.fade - 0.05),
135
- }))
136
- .filter((segment) => segment.fade > 0);
137
- // Add new segment at the head
138
- if (stream.y < dimensions.height) {
139
- stream.trail.unshift({
140
- y: stream.y,
141
- char: Math.random() > 0.5 ? "1" : "0",
142
- fade: 1,
143
- });
144
- }
145
- // Trim trail to max length
146
- if (stream.trail.length > stream.maxLength) {
147
- stream.trail = stream.trail.slice(0, stream.maxLength);
148
- }
149
- // Check for character collision
150
- this.checkCharacterCollision(stream);
151
- // Deactivate if completely off screen
152
- if (stream.y > dimensions.height + stream.maxLength) {
153
- stream.active = false;
154
- }
155
- }
156
- // Update revealed characters
157
- let allRevealed = true;
158
- for (const [, state] of this.characterStates.entries()) {
159
- if (state.revealed && state.fadeProgress < 1) {
160
- const timeSinceReveal = this.animationFrameCount - state.revealTime;
161
- state.fadeProgress = Math.min(1, timeSinceReveal /
162
- (this.options.fadeDuration / (1000 / this.config.frameRate)));
163
- }
164
- if (!state.revealed) {
165
- allRevealed = false;
166
- }
167
- }
168
- // Check if effect is complete
169
- const activeStreams = this.streams.filter((s) => s.active).length;
170
- this._isEffectComplete =
171
- allRevealed &&
172
- activeStreams === 0 &&
173
- this.animationFrameCount >= this.totalFrames * 0.8;
174
- }
175
- /**
176
- * Spawn a new binary stream
177
- */
178
- spawnStream() {
179
- const dimensions = this.getCanvasDimensions();
180
- const stream = {
181
- id: this.nextStreamId++,
182
- x: Math.floor(Math.random() * dimensions.width),
183
- y: -1,
184
- speed: 0.3 + Math.random() * this.options.fallSpeed,
185
- trail: [],
186
- active: true,
187
- maxLength: 5 + Math.floor(Math.random() * 10),
188
- };
189
- this.streams.push(stream);
190
- }
191
- /**
192
- * Check if a stream collides with any characters
193
- */
194
- checkCharacterCollision(stream) {
195
- for (const segment of stream.trail) {
196
- const y = Math.floor(segment.y);
197
- // Check all characters at this position
198
- for (const char of this.characters) {
199
- if (char.originalPosition.x === stream.x &&
200
- char.originalPosition.y === y) {
201
- const key = `${char.originalPosition.x},${char.originalPosition.y}`;
202
- const state = this.characterStates.get(key);
203
- if (state && !state.revealed) {
204
- state.revealed = true;
205
- state.revealTime = this.animationFrameCount;
206
- state.fadeProgress = 0;
207
- }
208
- }
209
- }
210
- }
211
- }
212
- /**
213
- * Get color for a revealed character based on fade progress
214
- */
215
- getRevealedCharacterColor(state) {
216
- if (state.fadeProgress >= 1) {
217
- return this.options.revealColor;
218
- }
219
- // Fade from bright green to final color
220
- const startColor = this.options.binaryColors[0];
221
- const endColor = this.options.revealColor;
222
- return this.interpolateColor(startColor, endColor, state.fadeProgress);
223
- }
224
- /**
225
- * Apply fade to a color
226
- */
227
- applyFade(color, fade) {
228
- const r = parseInt(color.substring(0, 2), 16);
229
- const g = parseInt(color.substring(2, 4), 16);
230
- const b = parseInt(color.substring(4, 6), 16);
231
- const fadedR = Math.round(r * fade);
232
- const fadedG = Math.round(g * fade);
233
- const fadedB = Math.round(b * fade);
234
- return [fadedR, fadedG, fadedB]
235
- .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
236
- .join("");
237
- }
238
- /**
239
- * Interpolate between two colors
240
- */
241
- interpolateColor(color1, color2, factor) {
242
- const r1 = parseInt(color1.substring(0, 2), 16);
243
- const g1 = parseInt(color1.substring(2, 4), 16);
244
- const b1 = parseInt(color1.substring(4, 6), 16);
245
- const r2 = parseInt(color2.substring(0, 2), 16);
246
- const g2 = parseInt(color2.substring(2, 4), 16);
247
- const b2 = parseInt(color2.substring(4, 6), 16);
248
- const r = Math.round(r1 + (r2 - r1) * factor);
249
- const g = Math.round(g1 + (g2 - g1) * factor);
250
- const b = Math.round(b1 + (b2 - b1) * factor);
251
- return [r, g, b]
252
- .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
253
- .join("");
254
- }
255
- /**
256
- * Get ANSI color code for a color
257
- */
258
- getColorCode(color) {
259
- if (!color || this.config.noColor) {
260
- return "";
261
- }
262
- // For RGB colors, convert to ANSI 24-bit color
263
- if (typeof color === "string") {
264
- const r = parseInt(color.substring(0, 2), 16);
265
- const g = parseInt(color.substring(2, 4), 16);
266
- const b = parseInt(color.substring(4, 6), 16);
267
- return `\x1b[38;2;${r};${g};${b}m`;
268
- }
269
- // For XTerm colors
270
- return `\x1b[38;5;${color}m`;
271
- }
272
- /**
273
- * Render fallback for when effects are disabled
274
- */
275
- renderFallback() {
276
- return this.text.split("\n");
277
- }
278
- /**
279
- * Check if effect is complete
280
- */
281
- isComplete() {
282
- return this._isEffectComplete;
283
- }
284
- /**
285
- * Reset the effect
286
- */
287
- onReset() {
288
- this.streams = [];
289
- this.characterStates.clear();
290
- this.animationFrameCount = 0;
291
- this.nextStreamId = 0;
292
- this._isEffectComplete = false;
293
- this.onInitialize();
294
- }
295
- }
296
- //# sourceMappingURL=binary-path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary-path.js","sourceRoot":"","sources":["../../../src/effects/implementations/binary-path.ts"],"names":[],"mappings":"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"}