@kya-os/cli 0.1.0-beta.1 → 0.1.0-beta.10

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 (121) hide show
  1. package/README.md +210 -34
  2. package/dist/commands/check.d.ts.map +1 -1
  3. package/dist/commands/check.js +73 -57
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/claim.js +33 -39
  6. package/dist/commands/claim.js.map +1 -1
  7. package/dist/commands/cli-experience-demo-simple.d.ts +14 -0
  8. package/dist/commands/cli-experience-demo-simple.d.ts.map +1 -0
  9. package/dist/commands/cli-experience-demo-simple.js +119 -0
  10. package/dist/commands/cli-experience-demo-simple.js.map +1 -0
  11. package/dist/commands/cli-experience-demo.d.ts +14 -0
  12. package/dist/commands/cli-experience-demo.d.ts.map +1 -0
  13. package/dist/commands/cli-experience-demo.js +172 -0
  14. package/dist/commands/cli-experience-demo.js.map +1 -0
  15. package/dist/commands/effects-demo.d.ts +10 -0
  16. package/dist/commands/effects-demo.d.ts.map +1 -0
  17. package/dist/commands/effects-demo.js +292 -0
  18. package/dist/commands/effects-demo.js.map +1 -0
  19. package/dist/commands/env.d.ts.map +1 -1
  20. package/dist/commands/env.js +55 -51
  21. package/dist/commands/env.js.map +1 -1
  22. package/dist/commands/init.d.ts +1 -0
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +527 -102
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/rotate.d.ts.map +1 -1
  27. package/dist/commands/rotate.js +81 -60
  28. package/dist/commands/rotate.js.map +1 -1
  29. package/dist/dev.d.ts +7 -0
  30. package/dist/dev.d.ts.map +1 -0
  31. package/dist/dev.js +9 -0
  32. package/dist/dev.js.map +1 -0
  33. package/dist/effects/__tests__/effects.test.d.ts +5 -0
  34. package/dist/effects/__tests__/effects.test.d.ts.map +1 -0
  35. package/dist/effects/__tests__/effects.test.js +206 -0
  36. package/dist/effects/__tests__/effects.test.js.map +1 -0
  37. package/dist/effects/animation-engine.d.ts +173 -0
  38. package/dist/effects/animation-engine.d.ts.map +1 -0
  39. package/dist/effects/animation-engine.js +254 -0
  40. package/dist/effects/animation-engine.js.map +1 -0
  41. package/dist/effects/cli-integration.d.ts +86 -0
  42. package/dist/effects/cli-integration.d.ts.map +1 -0
  43. package/dist/effects/cli-integration.js +309 -0
  44. package/dist/effects/cli-integration.js.map +1 -0
  45. package/dist/effects/config.d.ts +95 -0
  46. package/dist/effects/config.d.ts.map +1 -0
  47. package/dist/effects/config.js +216 -0
  48. package/dist/effects/config.js.map +1 -0
  49. package/dist/effects/effect-runner.d.ts +69 -0
  50. package/dist/effects/effect-runner.d.ts.map +1 -0
  51. package/dist/effects/effect-runner.js +255 -0
  52. package/dist/effects/effect-runner.js.map +1 -0
  53. package/dist/effects/gradient.d.ts +131 -0
  54. package/dist/effects/gradient.d.ts.map +1 -0
  55. package/dist/effects/gradient.js +236 -0
  56. package/dist/effects/gradient.js.map +1 -0
  57. package/dist/effects/implementations/beams.d.ts +80 -0
  58. package/dist/effects/implementations/beams.d.ts.map +1 -0
  59. package/dist/effects/implementations/beams.js +221 -0
  60. package/dist/effects/implementations/beams.js.map +1 -0
  61. package/dist/effects/implementations/binary-path.d.ts +88 -0
  62. package/dist/effects/implementations/binary-path.d.ts.map +1 -0
  63. package/dist/effects/implementations/binary-path.js +296 -0
  64. package/dist/effects/implementations/binary-path.js.map +1 -0
  65. package/dist/effects/implementations/blackhole.d.ts +98 -0
  66. package/dist/effects/implementations/blackhole.d.ts.map +1 -0
  67. package/dist/effects/implementations/blackhole.js +394 -0
  68. package/dist/effects/implementations/blackhole.js.map +1 -0
  69. package/dist/effects/implementations/burn.d.ts +74 -0
  70. package/dist/effects/implementations/burn.d.ts.map +1 -0
  71. package/dist/effects/implementations/burn.js +234 -0
  72. package/dist/effects/implementations/burn.js.map +1 -0
  73. package/dist/effects/implementations/decrypt.d.ts +115 -0
  74. package/dist/effects/implementations/decrypt.d.ts.map +1 -0
  75. package/dist/effects/implementations/decrypt.js +394 -0
  76. package/dist/effects/implementations/decrypt.js.map +1 -0
  77. package/dist/effects/implementations/test.d.ts +113 -0
  78. package/dist/effects/implementations/test.d.ts.map +1 -0
  79. package/dist/effects/implementations/test.js +552 -0
  80. package/dist/effects/implementations/test.js.map +1 -0
  81. package/dist/effects/implementations/waves.d.ts +78 -0
  82. package/dist/effects/implementations/waves.d.ts.map +1 -0
  83. package/dist/effects/implementations/waves.js +278 -0
  84. package/dist/effects/implementations/waves.js.map +1 -0
  85. package/dist/effects/index.d.ts +37 -0
  86. package/dist/effects/index.d.ts.map +1 -0
  87. package/dist/effects/index.js +79 -0
  88. package/dist/effects/index.js.map +1 -0
  89. package/dist/effects/motion-engine.d.ts +168 -0
  90. package/dist/effects/motion-engine.d.ts.map +1 -0
  91. package/dist/effects/motion-engine.js +353 -0
  92. package/dist/effects/motion-engine.js.map +1 -0
  93. package/dist/effects/safe-executor.d.ts +55 -0
  94. package/dist/effects/safe-executor.d.ts.map +1 -0
  95. package/dist/effects/safe-executor.js +210 -0
  96. package/dist/effects/safe-executor.js.map +1 -0
  97. package/dist/effects/template/effect-template.d.ts +97 -0
  98. package/dist/effects/template/effect-template.d.ts.map +1 -0
  99. package/dist/effects/template/effect-template.js +208 -0
  100. package/dist/effects/template/effect-template.js.map +1 -0
  101. package/dist/effects/types.d.ts +199 -0
  102. package/dist/effects/types.d.ts.map +1 -0
  103. package/dist/effects/types.js +80 -0
  104. package/dist/effects/types.js.map +1 -0
  105. package/dist/effects/utils.d.ts +104 -0
  106. package/dist/effects/utils.d.ts.map +1 -0
  107. package/dist/effects/utils.js +280 -0
  108. package/dist/effects/utils.js.map +1 -0
  109. package/dist/index.d.ts +2 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +52 -51
  112. package/dist/index.js.map +1 -1
  113. package/dist/utils/env-manager.d.ts +66 -2
  114. package/dist/utils/env-manager.d.ts.map +1 -1
  115. package/dist/utils/env-manager.js +355 -65
  116. package/dist/utils/env-manager.js.map +1 -1
  117. package/dist/utils/platform-detector.js +15 -19
  118. package/dist/utils/platform-detector.js.map +1 -1
  119. package/dist/utils/prompts.js +21 -34
  120. package/dist/utils/prompts.js.map +1 -1
  121. package/package.json +10 -5
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Gradient System for Terminal Effects
3
+ * Provides comprehensive gradient color mapping capabilities
4
+ */
5
+ /**
6
+ * Gradient direction options
7
+ */
8
+ export var GradientDirection;
9
+ (function (GradientDirection) {
10
+ GradientDirection["HORIZONTAL"] = "horizontal";
11
+ GradientDirection["VERTICAL"] = "vertical";
12
+ GradientDirection["DIAGONAL"] = "diagonal";
13
+ GradientDirection["RADIAL"] = "radial";
14
+ GradientDirection["DIAGONAL_REVERSE"] = "diagonal_reverse";
15
+ })(GradientDirection || (GradientDirection = {}));
16
+ /**
17
+ * Gradient class for creating color transitions
18
+ */
19
+ export class Gradient {
20
+ constructor(config) {
21
+ this.spectrum = [];
22
+ this.colorStops = config.stops;
23
+ this.steps = config.steps || 10;
24
+ this.direction = config.direction || GradientDirection.VERTICAL;
25
+ this.easingFn = config.easingFn || ((t) => t); // Linear by default
26
+ this.generateSpectrum();
27
+ }
28
+ /**
29
+ * Generate the full color spectrum
30
+ */
31
+ generateSpectrum() {
32
+ this.spectrum = [];
33
+ if (this.colorStops.length === 1) {
34
+ // Single color - no gradient
35
+ this.spectrum = [this.colorStops[0]];
36
+ return;
37
+ }
38
+ // Generate colors between each pair of stops
39
+ for (let i = 0; i < this.colorStops.length - 1; i++) {
40
+ const startColor = this.colorStops[i];
41
+ const endColor = this.colorStops[i + 1];
42
+ const segmentColors = this.interpolateColors(startColor, endColor, this.steps);
43
+ // Add all colors except the last (to avoid duplicates)
44
+ if (i < this.colorStops.length - 2) {
45
+ this.spectrum.push(...segmentColors.slice(0, -1));
46
+ }
47
+ else {
48
+ // For the last segment, include all colors
49
+ this.spectrum.push(...segmentColors);
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * Interpolate between two colors
55
+ */
56
+ interpolateColors(color1, color2, steps) {
57
+ const colors = [];
58
+ const r1 = parseInt(color1.substring(0, 2), 16);
59
+ const g1 = parseInt(color1.substring(2, 4), 16);
60
+ const b1 = parseInt(color1.substring(4, 6), 16);
61
+ const r2 = parseInt(color2.substring(0, 2), 16);
62
+ const g2 = parseInt(color2.substring(2, 4), 16);
63
+ const b2 = parseInt(color2.substring(4, 6), 16);
64
+ for (let i = 0; i < steps; i++) {
65
+ const t = i / (steps - 1);
66
+ const easedT = this.easingFn(t);
67
+ const r = Math.round(r1 + (r2 - r1) * easedT);
68
+ const g = Math.round(g1 + (g2 - g1) * easedT);
69
+ const b = Math.round(b1 + (b2 - b1) * easedT);
70
+ const hex = [r, g, b]
71
+ .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
72
+ .join("");
73
+ colors.push(hex);
74
+ }
75
+ return colors;
76
+ }
77
+ /**
78
+ * Build coordinate-to-color mapping for a canvas area
79
+ */
80
+ buildCoordinateColorMapping(dimensions, bounds) {
81
+ const mapping = new Map();
82
+ // Use provided bounds or default to full canvas
83
+ const top = bounds?.top ?? 0;
84
+ const bottom = bounds?.bottom ?? dimensions.height - 1;
85
+ const left = bounds?.left ?? 0;
86
+ const right = bounds?.right ?? dimensions.width - 1;
87
+ const width = right - left + 1;
88
+ const height = bottom - top + 1;
89
+ for (let y = top; y <= bottom; y++) {
90
+ for (let x = left; x <= right; x++) {
91
+ const key = `${x},${y}`;
92
+ const color = this.getColorAtPosition(x - left, y - top, width, height);
93
+ mapping.set(key, color);
94
+ }
95
+ }
96
+ return mapping;
97
+ }
98
+ /**
99
+ * Get color at a specific position based on gradient direction
100
+ */
101
+ getColorAtPosition(x, y, width, height) {
102
+ let factor = 0;
103
+ switch (this.direction) {
104
+ case GradientDirection.HORIZONTAL:
105
+ factor = x / (width - 1);
106
+ break;
107
+ case GradientDirection.VERTICAL:
108
+ factor = y / (height - 1);
109
+ break;
110
+ case GradientDirection.DIAGONAL:
111
+ factor = (x + y) / (width + height - 2);
112
+ break;
113
+ case GradientDirection.DIAGONAL_REVERSE:
114
+ factor = (x + (height - 1 - y)) / (width + height - 2);
115
+ break;
116
+ case GradientDirection.RADIAL:
117
+ const centerX = width / 2;
118
+ const centerY = height / 2;
119
+ const maxDist = Math.sqrt(centerX * centerX + centerY * centerY);
120
+ const dist = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));
121
+ factor = dist / maxDist;
122
+ break;
123
+ }
124
+ // Clamp factor to [0, 1]
125
+ factor = Math.max(0, Math.min(1, factor));
126
+ // Get color from spectrum
127
+ const index = Math.floor(factor * (this.spectrum.length - 1));
128
+ return this.spectrum[index];
129
+ }
130
+ /**
131
+ * Get color for a specific coordinate
132
+ */
133
+ getColorForCoordinate(coord, dimensions) {
134
+ return this.getColorAtPosition(coord.x, coord.y, dimensions.width, dimensions.height);
135
+ }
136
+ /**
137
+ * Get the generated color spectrum
138
+ */
139
+ getSpectrum() {
140
+ return [...this.spectrum];
141
+ }
142
+ /**
143
+ * Apply gradient to a string (character by character)
144
+ */
145
+ applyToString(text) {
146
+ const result = [];
147
+ const chars = [...text]; // Handle Unicode properly
148
+ for (let i = 0; i < chars.length; i++) {
149
+ const factor = i / (chars.length - 1);
150
+ const colorIndex = Math.floor(factor * (this.spectrum.length - 1));
151
+ result.push({
152
+ char: chars[i],
153
+ color: this.spectrum[colorIndex],
154
+ });
155
+ }
156
+ return result;
157
+ }
158
+ }
159
+ /**
160
+ * Predefined gradients
161
+ */
162
+ export const GRADIENTS = {
163
+ // Fire gradient (red to yellow)
164
+ FIRE: {
165
+ stops: ["ff0000", "ff4500", "ff8c00", "ffa500", "ffff00"],
166
+ steps: 10,
167
+ },
168
+ // Ocean gradient (dark blue to cyan)
169
+ OCEAN: {
170
+ stops: ["000080", "0000ff", "0080ff", "00ffff"],
171
+ steps: 12,
172
+ },
173
+ // Matrix gradient (dark green to bright green)
174
+ MATRIX: {
175
+ stops: ["003300", "006600", "009900", "00cc00", "00ff00"],
176
+ steps: 8,
177
+ },
178
+ // Sunset gradient
179
+ SUNSET: {
180
+ stops: ["ff1493", "ff69b4", "ffa500", "ffff00", "fffacd"],
181
+ steps: 15,
182
+ },
183
+ // Cool gradient (purple to cyan)
184
+ COOL: {
185
+ stops: ["8b008b", "9932cc", "6a0dad", "0000ff", "00ffff"],
186
+ steps: 12,
187
+ },
188
+ // Monochrome gradient (black to white)
189
+ MONOCHROME: {
190
+ stops: ["000000", "404040", "808080", "c0c0c0", "ffffff"],
191
+ steps: 10,
192
+ },
193
+ // Rainbow gradient
194
+ RAINBOW: {
195
+ stops: ["ff0000", "ff7f00", "ffff00", "00ff00", "0000ff", "4b0082", "9400d3"],
196
+ steps: 8,
197
+ },
198
+ };
199
+ /**
200
+ * Easing functions for gradient interpolation
201
+ */
202
+ export const EASING = {
203
+ linear: (t) => t,
204
+ inQuad: (t) => t * t,
205
+ outQuad: (t) => t * (2 - t),
206
+ inOutQuad: (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t),
207
+ inCubic: (t) => t * t * t,
208
+ outCubic: (t) => (--t) * t * t + 1,
209
+ inOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
210
+ inExpo: (t) => (t === 0 ? 0 : Math.pow(2, 10 * t - 10)),
211
+ outExpo: (t) => (t === 1 ? 1 : 1 - Math.pow(2, -10 * t)),
212
+ inOutExpo: (t) => {
213
+ if (t === 0)
214
+ return 0;
215
+ if (t === 1)
216
+ return 1;
217
+ if (t < 0.5)
218
+ return Math.pow(2, 20 * t - 10) / 2;
219
+ return (2 - Math.pow(2, -20 * t + 10)) / 2;
220
+ },
221
+ inSine: (t) => 1 - Math.cos((t * Math.PI) / 2),
222
+ outSine: (t) => Math.sin((t * Math.PI) / 2),
223
+ inOutSine: (t) => -(Math.cos(Math.PI * t) - 1) / 2,
224
+ };
225
+ /**
226
+ * Helper function to create a gradient from preset
227
+ */
228
+ export function createGradient(preset, direction, easingFn) {
229
+ const config = GRADIENTS[preset];
230
+ return new Gradient({
231
+ ...config,
232
+ direction,
233
+ easingFn,
234
+ });
235
+ }
236
+ //# sourceMappingURL=gradient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient.js","sourceRoot":"","sources":["../../src/effects/gradient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Beams Effect
3
+ * Creates beams which travel over the canvas illuminating the characters
4
+ */
5
+ import { BaseEffect } from "../types.js";
6
+ /**
7
+ * Configuration options for the Beams effect
8
+ */
9
+ export interface BeamsEffectOptions {
10
+ /** Duration in milliseconds */
11
+ duration?: number;
12
+ /** Number of beams */
13
+ beamCount?: number;
14
+ /** Beam width */
15
+ beamWidth?: number;
16
+ /** Beam speed range */
17
+ beamSpeedRange?: [number, number];
18
+ /** Beam colors */
19
+ beamColors?: string[];
20
+ /** Illumination brightness multiplier */
21
+ illuminationBrightness?: number;
22
+ /** Base character color */
23
+ baseColor?: string;
24
+ }
25
+ /**
26
+ * Beams effect implementation
27
+ */
28
+ export declare class BeamsEffect extends BaseEffect {
29
+ readonly name = "Beams";
30
+ readonly description = "Creates beams which travel over the canvas illuminating the characters";
31
+ private options;
32
+ private beams;
33
+ private animationFrameCount;
34
+ private totalFrames;
35
+ private nextBeamId;
36
+ private lastBeamSpawn;
37
+ private _isEffectComplete;
38
+ constructor(options?: BeamsEffectOptions);
39
+ /**
40
+ * Initialize the effect
41
+ */
42
+ protected onInitialize(): void;
43
+ /**
44
+ * Render the next frame
45
+ */
46
+ render(): Promise<string[]>;
47
+ /**
48
+ * Update beam positions and states
49
+ */
50
+ private updateBeams;
51
+ /**
52
+ * Spawn a new beam
53
+ */
54
+ private spawnBeam;
55
+ /**
56
+ * Get beam color based on its properties
57
+ */
58
+ private getBeamColor;
59
+ /**
60
+ * Apply illumination to a base color
61
+ */
62
+ private applyIllumination;
63
+ /**
64
+ * Get ANSI color code for a color
65
+ */
66
+ private getColorCode;
67
+ /**
68
+ * Render fallback for when effects are disabled
69
+ */
70
+ renderFallback(): string[];
71
+ /**
72
+ * Check if effect is complete
73
+ */
74
+ isComplete(): boolean;
75
+ /**
76
+ * Reset the effect
77
+ */
78
+ protected onReset(): void;
79
+ }
80
+ //# sourceMappingURL=beams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beams.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/beams.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,yCAAyC;IACzC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,WAAW,4EACuD;IAE3E,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,OAAO,GAAE,kBAAuB;IAc5C;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAgB9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAkDjC;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;IACH,OAAO,CAAC,SAAS;IA2BjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;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"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Beams Effect
3
+ * Creates beams which travel over the canvas illuminating the characters
4
+ */
5
+ import { BaseEffect } from "../types.js";
6
+ import { ANSI, easeInOutSine } from "../utils.js";
7
+ /**
8
+ * Beams effect implementation
9
+ */
10
+ export class BeamsEffect extends BaseEffect {
11
+ constructor(options = {}) {
12
+ super();
13
+ this.name = "Beams";
14
+ this.description = "Creates beams which travel over the canvas illuminating the characters";
15
+ this.beams = [];
16
+ this.animationFrameCount = 0;
17
+ this.totalFrames = 0;
18
+ this.nextBeamId = 0;
19
+ this.lastBeamSpawn = 0;
20
+ this._isEffectComplete = false;
21
+ this.options = {
22
+ duration: 5000,
23
+ beamCount: 8,
24
+ beamWidth: 5,
25
+ beamSpeedRange: [1.0, 3.0],
26
+ beamColors: ["ffffff", "00D1FF", "8A008A"],
27
+ illuminationBrightness: 2.0,
28
+ baseColor: "202020",
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.beams = [];
38
+ this.animationFrameCount = 0;
39
+ this.nextBeamId = 0;
40
+ this.lastBeamSpawn = 0;
41
+ this._isEffectComplete = false;
42
+ // Set base color for all characters
43
+ for (const char of this.characters) {
44
+ char.visual.colors.fg = this.options.baseColor;
45
+ }
46
+ }
47
+ /**
48
+ * Render the next frame
49
+ */
50
+ async render() {
51
+ if (!this.isInitialized) {
52
+ throw new Error("Effect not initialized");
53
+ }
54
+ // Update beams
55
+ this.updateBeams();
56
+ // Render text with beam effects line by line
57
+ const lines = this.text.split("\n");
58
+ const renderedLines = [];
59
+ for (let y = 0; y < lines.length; y++) {
60
+ let line = "";
61
+ const chars = [...lines[y]];
62
+ for (let x = 0; x < chars.length; x++) {
63
+ const char = chars[x];
64
+ let color = this.options.baseColor;
65
+ // Check if character is illuminated by any beam
66
+ for (const beam of this.beams) {
67
+ if (!beam.active)
68
+ continue;
69
+ const distance = beam.direction === "horizontal"
70
+ ? Math.abs(y - beam.position.y)
71
+ : Math.abs(x - beam.position.x);
72
+ if (distance <= beam.width) {
73
+ const intensity = 1 - distance / beam.width;
74
+ const easedIntensity = easeInOutSine(intensity);
75
+ const beamColor = this.getBeamColor(beam);
76
+ color = this.applyIllumination(color, beamColor, easedIntensity);
77
+ }
78
+ }
79
+ const colorCode = this.getColorCode(color);
80
+ const resetCode = ANSI.reset;
81
+ line += colorCode + char + resetCode;
82
+ }
83
+ renderedLines.push(line);
84
+ }
85
+ this.animationFrameCount++;
86
+ return renderedLines;
87
+ }
88
+ /**
89
+ * Update beam positions and states
90
+ */
91
+ updateBeams() {
92
+ const dimensions = this.getCanvasDimensions();
93
+ const spawnInterval = Math.floor(this.totalFrames / (this.options.beamCount * 3));
94
+ // Spawn new beams more frequently
95
+ if (this.beams.filter(b => b.active).length < this.options.beamCount &&
96
+ this.animationFrameCount - this.lastBeamSpawn > spawnInterval &&
97
+ this.animationFrameCount < this.totalFrames * 0.8) {
98
+ this.spawnBeam();
99
+ this.lastBeamSpawn = this.animationFrameCount;
100
+ }
101
+ // Update existing beams
102
+ for (const beam of this.beams) {
103
+ if (!beam.active)
104
+ continue;
105
+ // Update position based on direction
106
+ if (beam.direction === "horizontal") {
107
+ beam.position.x += beam.speed;
108
+ // Deactivate if off screen
109
+ if (beam.position.x > dimensions.width + beam.width) {
110
+ beam.active = false;
111
+ }
112
+ }
113
+ else {
114
+ beam.position.y += beam.speed;
115
+ // Deactivate if off screen
116
+ if (beam.position.y > dimensions.height + beam.width) {
117
+ beam.active = false;
118
+ }
119
+ }
120
+ }
121
+ // Check if effect is complete
122
+ const activeBeams = this.beams.filter((b) => b.active).length;
123
+ this._isEffectComplete =
124
+ activeBeams === 0 && this.animationFrameCount >= this.totalFrames * 0.8;
125
+ }
126
+ /**
127
+ * Spawn a new beam
128
+ */
129
+ spawnBeam() {
130
+ const dimensions = this.getCanvasDimensions();
131
+ const isHorizontal = Math.random() > 0.5;
132
+ const beam = {
133
+ id: this.nextBeamId++,
134
+ position: {
135
+ x: isHorizontal
136
+ ? -this.options.beamWidth
137
+ : Math.random() * dimensions.width,
138
+ y: isHorizontal
139
+ ? Math.random() * dimensions.height
140
+ : -this.options.beamWidth,
141
+ },
142
+ direction: isHorizontal ? "horizontal" : "vertical",
143
+ speed: this.options.beamSpeedRange[0] +
144
+ Math.random() *
145
+ (this.options.beamSpeedRange[1] - this.options.beamSpeedRange[0]),
146
+ width: this.options.beamWidth,
147
+ progress: 0,
148
+ active: true,
149
+ };
150
+ this.beams.push(beam);
151
+ }
152
+ /**
153
+ * Get beam color based on its properties
154
+ */
155
+ getBeamColor(beam) {
156
+ // Cycle through colors based on beam ID
157
+ const colorIndex = beam.id % this.options.beamColors.length;
158
+ return this.options.beamColors[colorIndex];
159
+ }
160
+ /**
161
+ * Apply illumination to a base color
162
+ */
163
+ applyIllumination(baseColor, beamColor, intensity) {
164
+ // Parse colors
165
+ const baseR = parseInt(baseColor.substring(0, 2), 16);
166
+ const baseG = parseInt(baseColor.substring(2, 4), 16);
167
+ const baseB = parseInt(baseColor.substring(4, 6), 16);
168
+ const beamR = parseInt(beamColor.substring(0, 2), 16);
169
+ const beamG = parseInt(beamColor.substring(2, 4), 16);
170
+ const beamB = parseInt(beamColor.substring(4, 6), 16);
171
+ // Apply illumination with brightness multiplier
172
+ const brightness = 1 + (this.options.illuminationBrightness - 1) * intensity;
173
+ const r = Math.min(255, Math.round(baseR + (beamR - baseR) * intensity * brightness));
174
+ const g = Math.min(255, Math.round(baseG + (beamG - baseG) * intensity * brightness));
175
+ const b = Math.min(255, Math.round(baseB + (beamB - baseB) * intensity * brightness));
176
+ return [r, g, b]
177
+ .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
178
+ .join("");
179
+ }
180
+ /**
181
+ * Get ANSI color code for a color
182
+ */
183
+ getColorCode(color) {
184
+ if (!color || this.config.noColor) {
185
+ return "";
186
+ }
187
+ // For RGB colors, convert to ANSI 24-bit color
188
+ if (typeof color === "string") {
189
+ const r = parseInt(color.substring(0, 2), 16);
190
+ const g = parseInt(color.substring(2, 4), 16);
191
+ const b = parseInt(color.substring(4, 6), 16);
192
+ return `\x1b[38;2;${r};${g};${b}m`;
193
+ }
194
+ // For XTerm colors
195
+ return `\x1b[38;5;${color}m`;
196
+ }
197
+ /**
198
+ * Render fallback for when effects are disabled
199
+ */
200
+ renderFallback() {
201
+ return this.text.split("\n");
202
+ }
203
+ /**
204
+ * Check if effect is complete
205
+ */
206
+ isComplete() {
207
+ return this._isEffectComplete;
208
+ }
209
+ /**
210
+ * Reset the effect
211
+ */
212
+ onReset() {
213
+ this.beams = [];
214
+ this.animationFrameCount = 0;
215
+ this.nextBeamId = 0;
216
+ this.lastBeamSpawn = 0;
217
+ this._isEffectComplete = false;
218
+ this.onInitialize();
219
+ }
220
+ }
221
+ //# sourceMappingURL=beams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beams.js","sourceRoot":"","sources":["../../../src/effects/implementations/beams.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
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
@@ -0,0 +1 @@
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"}