@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,394 @@
1
+ /**
2
+ * Decrypt Effect
3
+ * Movie-style text decryption effect with typing animation
4
+ */
5
+ import { BaseEffect, } from "../types.js";
6
+ import { ANSI } from "../utils.js";
7
+ /**
8
+ * Decrypt effect implementation
9
+ */
10
+ export class DecryptEffect extends BaseEffect {
11
+ constructor(options = {}) {
12
+ super();
13
+ this.name = "Decrypt";
14
+ this.description = "Movie-style text decryption effect with typing animation";
15
+ this.characterStates = new Map();
16
+ this.animationFrameCount = 0;
17
+ this.totalFrames = 0;
18
+ this.typingQueue = [];
19
+ this.activeTypingChars = new Set();
20
+ this.decryptingChars = new Set();
21
+ this._isEffectComplete = false;
22
+ // Character sets for encryption
23
+ this.encryptedSymbols = [];
24
+ this.typingSymbols = ["▉", "▓", "▒", "░"];
25
+ this.options = {
26
+ duration: 5000,
27
+ typingSpeed: 1,
28
+ ciphertextColors: ["008000", "00cb00", "00ff00"],
29
+ finalColor: "eda000",
30
+ useGradient: true,
31
+ gradientDirection: "vertical",
32
+ typingProbability: 0.75,
33
+ fastReveal: false,
34
+ revealCompletionRatio: 0.3,
35
+ ...options,
36
+ };
37
+ this.initializeEncryptedSymbols();
38
+ }
39
+ /**
40
+ * Initialize the pool of encrypted symbols
41
+ */
42
+ initializeEncryptedSymbols() {
43
+ // Keyboard characters
44
+ for (let i = 33; i < 127; i++) {
45
+ this.encryptedSymbols.push(String.fromCharCode(i));
46
+ }
47
+ // Box drawing characters
48
+ for (let i = 9472; i < 9599; i++) {
49
+ this.encryptedSymbols.push(String.fromCharCode(i));
50
+ }
51
+ // Block characters
52
+ for (let i = 9608; i < 9632; i++) {
53
+ this.encryptedSymbols.push(String.fromCharCode(i));
54
+ }
55
+ // Misc symbols
56
+ for (let i = 174; i < 452; i++) {
57
+ this.encryptedSymbols.push(String.fromCharCode(i));
58
+ }
59
+ }
60
+ /**
61
+ * Initialize the effect
62
+ */
63
+ onInitialize() {
64
+ this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
65
+ // Initialize character states
66
+ this.characterStates.clear();
67
+ this.typingQueue = [...this.characters];
68
+ this.activeTypingChars.clear();
69
+ this.decryptingChars.clear();
70
+ // Shuffle typing queue for random order
71
+ this.shuffleArray(this.typingQueue);
72
+ // Calculate final colors for gradient effect
73
+ const dimensions = this.getCanvasDimensions();
74
+ const gradientColors = this.calculateGradientColors(dimensions);
75
+ for (const char of this.characters) {
76
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
77
+ let finalColor = this.options.finalColor;
78
+ if (this.options.useGradient) {
79
+ const gradientKey = this.options.gradientDirection === "vertical"
80
+ ? char.originalPosition.y
81
+ : char.originalPosition.x;
82
+ finalColor = gradientColors[gradientKey] || this.options.finalColor;
83
+ }
84
+ this.characterStates.set(key, {
85
+ phase: "hidden",
86
+ typingFrame: 0,
87
+ decryptStartTime: -1,
88
+ currentSymbol: char.originalSymbol,
89
+ currentColor: this.getRandomCiphertextColor(),
90
+ finalColor,
91
+ decryptSpeed: Math.floor(Math.random() * 3) + 2,
92
+ decryptChangesRemaining: Math.floor(Math.random() * 15) + 80,
93
+ discoveryFrame: 0,
94
+ });
95
+ }
96
+ this.animationFrameCount = 0;
97
+ this._isEffectComplete = false;
98
+ }
99
+ /**
100
+ * Calculate gradient colors based on dimensions
101
+ */
102
+ calculateGradientColors(dimensions) {
103
+ const gradientMap = {};
104
+ const size = this.options.gradientDirection === "vertical"
105
+ ? dimensions.height
106
+ : dimensions.width;
107
+ // Simple linear gradient from ciphertext color to final color
108
+ const startColor = this.options.ciphertextColors[this.options.ciphertextColors.length - 1];
109
+ for (let i = 0; i < size; i++) {
110
+ const factor = i / (size - 1);
111
+ gradientMap[i] = this.interpolateColor(startColor, this.options.finalColor, factor);
112
+ }
113
+ return gradientMap;
114
+ }
115
+ /**
116
+ * Render the next frame
117
+ */
118
+ async render() {
119
+ if (!this.isInitialized) {
120
+ throw new Error("Effect not initialized");
121
+ }
122
+ // Update animation state
123
+ this.updateAnimationState();
124
+ // Create the frame
125
+ const dimensions = this.getCanvasDimensions();
126
+ const frame = Array(dimensions.height)
127
+ .fill("")
128
+ .map(() => Array(dimensions.width).fill(" "));
129
+ // Render characters
130
+ for (const char of this.characters) {
131
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
132
+ const state = this.characterStates.get(key);
133
+ if (state && state.phase !== "hidden") {
134
+ const visual = this.createCharacterVisual(char, state);
135
+ char.visual = visual;
136
+ const { x, y } = char.currentPosition;
137
+ if (y >= 0 && y < dimensions.height && x >= 0 && x < dimensions.width) {
138
+ // Apply ANSI color codes
139
+ const colorCode = this.getColorCode(visual.colors.fg);
140
+ const resetCode = ANSI.reset;
141
+ frame[y][x] = colorCode + visual.symbol + resetCode;
142
+ }
143
+ }
144
+ }
145
+ this.animationFrameCount++;
146
+ // Convert frame to strings
147
+ return frame.map((row) => row.join(""));
148
+ }
149
+ /**
150
+ * Update animation state for all characters
151
+ */
152
+ updateAnimationState() {
153
+ // Phase 1: Typing animation
154
+ if (this.typingQueue.length > 0 || this.activeTypingChars.size > 0) {
155
+ this.updateTypingPhase();
156
+ }
157
+ else if (this.decryptingChars.size === 0) {
158
+ // Transition to decryption phase
159
+ for (const char of this.characters) {
160
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
161
+ const state = this.characterStates.get(key);
162
+ if (state) {
163
+ state.phase = "fast_decrypt";
164
+ state.decryptStartTime = this.animationFrameCount;
165
+ this.decryptingChars.add(key);
166
+ }
167
+ }
168
+ }
169
+ // Phase 2: Decryption animation
170
+ if (this.decryptingChars.size > 0) {
171
+ this.updateDecryptionPhase();
172
+ }
173
+ // Check if effect is complete
174
+ this._isEffectComplete = this.checkCompletion();
175
+ }
176
+ /**
177
+ * Update typing phase animation
178
+ */
179
+ updateTypingPhase() {
180
+ // Start typing new characters
181
+ if (this.typingQueue.length > 0 && Math.random() < this.options.typingProbability) {
182
+ for (let i = 0; i < this.options.typingSpeed && this.typingQueue.length > 0; i++) {
183
+ const char = this.typingQueue.shift();
184
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
185
+ const state = this.characterStates.get(key);
186
+ if (state) {
187
+ state.phase = "typing";
188
+ state.typingFrame = 0;
189
+ this.activeTypingChars.add(key);
190
+ }
191
+ }
192
+ }
193
+ // Update active typing characters
194
+ for (const key of this.activeTypingChars) {
195
+ const state = this.characterStates.get(key);
196
+ if (state) {
197
+ state.typingFrame++;
198
+ // Complete typing animation after showing all typing symbols
199
+ if (state.typingFrame > this.typingSymbols.length * 2 + 4) {
200
+ state.phase = "fast_decrypt";
201
+ this.activeTypingChars.delete(key);
202
+ }
203
+ }
204
+ }
205
+ }
206
+ /**
207
+ * Update decryption phase animation
208
+ */
209
+ updateDecryptionPhase() {
210
+ const completedKeys = [];
211
+ for (const key of this.decryptingChars) {
212
+ const state = this.characterStates.get(key);
213
+ if (!state)
214
+ continue;
215
+ const framesSinceStart = this.animationFrameCount - state.decryptStartTime;
216
+ if (state.phase === "fast_decrypt") {
217
+ // Fast decrypt phase - rapid symbol changes
218
+ if (framesSinceStart % 3 === 0) {
219
+ state.currentSymbol = this.getRandomEncryptedSymbol();
220
+ state.decryptChangesRemaining--;
221
+ }
222
+ // Transition to slow decrypt after initial burst
223
+ if (state.decryptChangesRemaining <= 15) {
224
+ state.phase = "slow_decrypt";
225
+ state.decryptSpeed = Math.floor(Math.random() * 50) + 25;
226
+ }
227
+ }
228
+ else if (state.phase === "slow_decrypt") {
229
+ // Slow decrypt phase - less frequent changes
230
+ if (framesSinceStart % state.decryptSpeed === 0) {
231
+ state.currentSymbol = this.getRandomEncryptedSymbol();
232
+ state.decryptChangesRemaining--;
233
+ // 30% chance of extra long duration
234
+ if (Math.random() < 0.3) {
235
+ state.decryptSpeed = Math.floor(Math.random() * 75) + 50;
236
+ }
237
+ else {
238
+ state.decryptSpeed = Math.floor(Math.random() * 5) + 5;
239
+ }
240
+ }
241
+ // Transition to discovered
242
+ if (state.decryptChangesRemaining <= 0) {
243
+ state.phase = "discovered";
244
+ state.discoveryFrame = 0;
245
+ const [x, y] = key.split(",").map(Number);
246
+ const char = this.characters.find(c => c.originalPosition.x === x && c.originalPosition.y === y);
247
+ if (char) {
248
+ state.currentSymbol = char.originalSymbol;
249
+ }
250
+ }
251
+ }
252
+ else if (state.phase === "discovered") {
253
+ // Discovery fade-in effect
254
+ state.discoveryFrame++;
255
+ if (state.discoveryFrame > 10) {
256
+ completedKeys.push(key);
257
+ }
258
+ }
259
+ }
260
+ // Remove completed characters from decrypting set
261
+ for (const key of completedKeys) {
262
+ this.decryptingChars.delete(key);
263
+ }
264
+ }
265
+ /**
266
+ * Create visual representation of a character
267
+ */
268
+ createCharacterVisual(char, state) {
269
+ let symbol = char.originalSymbol;
270
+ let color = state.currentColor;
271
+ switch (state.phase) {
272
+ case "typing":
273
+ // Typing animation with block characters
274
+ const typingIndex = Math.floor(state.typingFrame / 2) % this.typingSymbols.length;
275
+ symbol = state.typingFrame < this.typingSymbols.length * 2
276
+ ? this.typingSymbols[typingIndex]
277
+ : state.currentSymbol;
278
+ color = this.getRandomCiphertextColor();
279
+ break;
280
+ case "fast_decrypt":
281
+ case "slow_decrypt":
282
+ symbol = state.currentSymbol;
283
+ color = state.currentColor;
284
+ break;
285
+ case "discovered":
286
+ // Fade from white to final color
287
+ const fadeFactor = Math.min(state.discoveryFrame / 10, 1);
288
+ color = this.interpolateColor("ffffff", state.finalColor, fadeFactor);
289
+ symbol = char.originalSymbol;
290
+ break;
291
+ }
292
+ return {
293
+ symbol,
294
+ colors: {
295
+ fg: color,
296
+ bg: null,
297
+ },
298
+ };
299
+ }
300
+ /**
301
+ * Get a random ciphertext color
302
+ */
303
+ getRandomCiphertextColor() {
304
+ return this.options.ciphertextColors[Math.floor(Math.random() * this.options.ciphertextColors.length)];
305
+ }
306
+ /**
307
+ * Get a random encrypted symbol
308
+ */
309
+ getRandomEncryptedSymbol() {
310
+ return this.encryptedSymbols[Math.floor(Math.random() * this.encryptedSymbols.length)];
311
+ }
312
+ /**
313
+ * Check if the effect is complete
314
+ */
315
+ checkCompletion() {
316
+ if (this.animationFrameCount >= this.totalFrames) {
317
+ return true;
318
+ }
319
+ for (const state of this.characterStates.values()) {
320
+ if (state.phase !== "discovered" || state.discoveryFrame < 10) {
321
+ return false;
322
+ }
323
+ }
324
+ return true;
325
+ }
326
+ /**
327
+ * Shuffle array in place
328
+ */
329
+ shuffleArray(array) {
330
+ for (let i = array.length - 1; i > 0; i--) {
331
+ const j = Math.floor(Math.random() * (i + 1));
332
+ [array[i], array[j]] = [array[j], array[i]];
333
+ }
334
+ }
335
+ /**
336
+ * Get ANSI color code for a color
337
+ */
338
+ getColorCode(color) {
339
+ if (!color || this.config.noColor) {
340
+ return "";
341
+ }
342
+ // For RGB colors, convert to ANSI 24-bit color
343
+ if (typeof color === "string") {
344
+ const r = parseInt(color.substring(0, 2), 16);
345
+ const g = parseInt(color.substring(2, 4), 16);
346
+ const b = parseInt(color.substring(4, 6), 16);
347
+ return `\x1b[38;2;${r};${g};${b}m`;
348
+ }
349
+ // For XTerm colors
350
+ return `\x1b[38;5;${color}m`;
351
+ }
352
+ /**
353
+ * Interpolate between two colors
354
+ */
355
+ interpolateColor(color1, color2, factor) {
356
+ const r1 = parseInt(color1.substring(0, 2), 16);
357
+ const g1 = parseInt(color1.substring(2, 4), 16);
358
+ const b1 = parseInt(color1.substring(4, 6), 16);
359
+ const r2 = parseInt(color2.substring(0, 2), 16);
360
+ const g2 = parseInt(color2.substring(2, 4), 16);
361
+ const b2 = parseInt(color2.substring(4, 6), 16);
362
+ const r = Math.round(r1 + (r2 - r1) * factor);
363
+ const g = Math.round(g1 + (g2 - g1) * factor);
364
+ const b = Math.round(b1 + (b2 - b1) * factor);
365
+ return [r, g, b]
366
+ .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
367
+ .join("");
368
+ }
369
+ /**
370
+ * Render fallback for when effects are disabled
371
+ */
372
+ renderFallback() {
373
+ return this.text.split("\n");
374
+ }
375
+ /**
376
+ * Check if effect is complete
377
+ */
378
+ isComplete() {
379
+ return this._isEffectComplete;
380
+ }
381
+ /**
382
+ * Reset the effect
383
+ */
384
+ onReset() {
385
+ this.characterStates.clear();
386
+ this.typingQueue = [];
387
+ this.activeTypingChars.clear();
388
+ this.decryptingChars.clear();
389
+ this.animationFrameCount = 0;
390
+ this._isEffectComplete = false;
391
+ this.onInitialize();
392
+ }
393
+ }
394
+ //# sourceMappingURL=decrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../../src/effects/implementations/decrypt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Blackhole Effect with ASCII Art Center
3
+ * Characters are consumed by a black hole with custom ASCII art and explode outwards
4
+ */
5
+ import { BaseEffect } from "../types.js";
6
+ /**
7
+ * Configuration options for the Blackhole effect
8
+ */
9
+ export interface BlackholeEffectOptions {
10
+ /** Duration in milliseconds */
11
+ duration?: number;
12
+ /** Color for the blackhole border stars */
13
+ blackholeColor?: string;
14
+ /** Colors for stars during explosion */
15
+ starColors?: string[];
16
+ /** Final color for characters */
17
+ finalColor?: string;
18
+ /** Use gradient for final color */
19
+ useGradient?: boolean;
20
+ /** Gradient direction */
21
+ gradientDirection?: "vertical" | "horizontal" | "diagonal";
22
+ /** Size of the blackhole relative to canvas (0.1 - 0.5) */
23
+ blackholeSize?: number;
24
+ /** ASCII art to display at the center */
25
+ centerAsciiArt?: string[];
26
+ /** Color for the center ASCII art */
27
+ centerArtColor?: string;
28
+ /** Whether to animate the center art */
29
+ animateCenterArt?: boolean;
30
+ }
31
+ /**
32
+ * Blackhole effect implementation
33
+ */
34
+ export declare class TestBlackholeEffect extends BaseEffect {
35
+ readonly name = "Blackhole";
36
+ readonly description = "Characters are consumed by a black hole with ASCII art center and explode outwards";
37
+ private options;
38
+ private characterStates;
39
+ private animationFrameCount;
40
+ private totalFrames;
41
+ private _isEffectComplete;
42
+ private currentPhase;
43
+ private blackholeCenter;
44
+ private blackholeRadius;
45
+ private blackholeChars;
46
+ private centerArtChars;
47
+ private centerArtBounds;
48
+ private readonly starSymbols;
49
+ private readonly starfieldColors;
50
+ private readonly defaultPiArt;
51
+ constructor(options?: BlackholeEffectOptions);
52
+ /**
53
+ * Parse ASCII art into character positions
54
+ */
55
+ private parseAsciiArt;
56
+ /**
57
+ * Initialize the effect
58
+ */
59
+ protected onInitialize(): void;
60
+ /**
61
+ * Calculate gradient colors
62
+ */
63
+ private calculateGradientColors;
64
+ /**
65
+ * Get gradient key based on direction
66
+ */
67
+ private getGradientKey;
68
+ /**
69
+ * Render the next frame
70
+ */
71
+ render(): Promise<string[]>;
72
+ /**
73
+ * Render center ASCII art
74
+ */
75
+ private renderCenterArt;
76
+ /**
77
+ * Update animation state for all characters
78
+ */
79
+ private updateAnimationState;
80
+ /**
81
+ * Update individual character position
82
+ */
83
+ private updateCharacterPosition;
84
+ /**
85
+ * Create visual representation of a character
86
+ */
87
+ private createCharacterVisual;
88
+ /**
89
+ * Calculate distance between two coordinates
90
+ */
91
+ private calculateDistance;
92
+ /**
93
+ * Get ANSI color code for a color
94
+ */
95
+ private getColorCode;
96
+ /**
97
+ * Interpolate between two colors
98
+ */
99
+ private interpolateColor;
100
+ /**
101
+ * Render fallback for when effects are disabled
102
+ */
103
+ renderFallback(): string[];
104
+ /**
105
+ * Check if effect is complete
106
+ */
107
+ isComplete(): boolean;
108
+ /**
109
+ * Reset the effect
110
+ */
111
+ protected onReset(): void;
112
+ }
113
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAMX,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;IAC3D,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkCD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,wFACmE;IAEvF,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,YAAY,CAKO;IAG3B,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,cAAc,CAAyB;IAG/C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,eAAe,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAC7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO9B;IAGF,OAAO,CAAC,QAAQ,CAAC,YAAY,CA+B3B;gBAEU,OAAO,GAAE,sBAA2B;IAiBhD;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IA8F9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwC/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA8CjC;;OAEG;IACH,OAAO,CAAC,eAAe;IA2FvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwI/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkE7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;CAS1B"}