@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
+ * Blackhole Effect
3
+ * Characters are consumed by a black hole and explode outwards
4
+ */
5
+ import { BaseEffect, } from "../types.js";
6
+ import { ANSI } from "../utils.js";
7
+ /**
8
+ * Blackhole effect implementation
9
+ */
10
+ export class BlackholeEffect extends BaseEffect {
11
+ constructor(options = {}) {
12
+ super();
13
+ this.name = "Blackhole";
14
+ this.description = "Characters are consumed by a black hole and explode outwards";
15
+ this.characterStates = new Map();
16
+ this.animationFrameCount = 0;
17
+ this.totalFrames = 0;
18
+ this._isEffectComplete = false;
19
+ // Animation phase tracking
20
+ this.currentPhase = "forming";
21
+ // @ts-ignore - Reserved for phase transitions
22
+ this.phaseProgress = 0;
23
+ // Blackhole properties
24
+ this.blackholeCenter = { x: 0, y: 0 };
25
+ this.blackholeRadius = 0;
26
+ this.blackholeChars = [];
27
+ // @ts-ignore - Reserved for queued consumption
28
+ this.consumptionQueue = [];
29
+ // Star symbols
30
+ this.starSymbols = ["*", "'", "`", "¤", "•", "°", "·", "✦", "✧"];
31
+ this.starfieldColors = ["4a4a4d", "808080", "a0a0a0", "c0c0c0", "e0e0e0", "ffffff"];
32
+ this.options = {
33
+ duration: 6000,
34
+ blackholeColor: "ffffff",
35
+ starColors: ["ffcc0d", "ff7326", "ff194d", "bf2669", "702a8c", "049dbf"],
36
+ finalColor: "ffffff",
37
+ useGradient: true,
38
+ gradientDirection: "diagonal",
39
+ blackholeSize: 0.3,
40
+ ...options,
41
+ };
42
+ }
43
+ /**
44
+ * Initialize the effect
45
+ */
46
+ onInitialize() {
47
+ this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
48
+ const dimensions = this.getCanvasDimensions();
49
+ this.blackholeCenter = {
50
+ x: Math.floor(dimensions.width / 2),
51
+ y: Math.floor(dimensions.height / 2),
52
+ };
53
+ this.blackholeRadius = Math.max(3, Math.floor(Math.min(dimensions.width * this.options.blackholeSize, dimensions.height * this.options.blackholeSize)));
54
+ // Initialize character states
55
+ this.characterStates.clear();
56
+ this.blackholeChars = [];
57
+ this.consumptionQueue = [];
58
+ // Calculate final colors for gradient
59
+ const gradientColors = this.calculateGradientColors(dimensions);
60
+ // Select characters for blackhole ring
61
+ const blackholeCharCount = Math.min(Math.floor(this.blackholeRadius * 3), Math.floor(this.characters.length * 0.3));
62
+ const shuffledChars = [...this.characters].sort(() => Math.random() - 0.5);
63
+ this.blackholeChars = shuffledChars.slice(0, blackholeCharCount);
64
+ this.consumptionQueue = shuffledChars.slice(blackholeCharCount);
65
+ // Initialize all character states
66
+ for (const char of this.characters) {
67
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
68
+ const isBlackholeChar = this.blackholeChars.includes(char);
69
+ let finalColor = this.options.finalColor;
70
+ if (this.options.useGradient) {
71
+ const gradientKey = this.getGradientKey(char.originalPosition, dimensions);
72
+ finalColor = gradientColors[gradientKey] || this.options.finalColor;
73
+ }
74
+ // Random starfield position
75
+ const starfieldPos = {
76
+ x: Math.floor(Math.random() * dimensions.width),
77
+ y: Math.floor(Math.random() * dimensions.height),
78
+ };
79
+ this.characterStates.set(key, {
80
+ phase: "starfield",
81
+ isBlackholeRing: isBlackholeChar,
82
+ starSymbol: this.starSymbols[Math.floor(Math.random() * this.starSymbols.length)],
83
+ starColor: this.starfieldColors[Math.floor(Math.random() * this.starfieldColors.length)],
84
+ position: { ...starfieldPos },
85
+ targetPosition: { ...char.originalPosition },
86
+ spiralAngle: Math.random() * Math.PI * 2,
87
+ spiralRadius: this.calculateDistance(starfieldPos, this.blackholeCenter),
88
+ explosionVector: { x: 0, y: 0 },
89
+ settlingProgress: 0,
90
+ finalColor,
91
+ });
92
+ }
93
+ this.currentPhase = "forming";
94
+ this.phaseProgress = 0;
95
+ this.animationFrameCount = 0;
96
+ this._isEffectComplete = false;
97
+ }
98
+ /**
99
+ * Calculate gradient colors
100
+ */
101
+ calculateGradientColors(dimensions) {
102
+ const gradientMap = {};
103
+ if (this.options.gradientDirection === "diagonal") {
104
+ const maxDist = Math.sqrt(dimensions.width ** 2 + dimensions.height ** 2);
105
+ for (let y = 0; y < dimensions.height; y++) {
106
+ for (let x = 0; x < dimensions.width; x++) {
107
+ const dist = Math.sqrt(x ** 2 + y ** 2);
108
+ const factor = dist / maxDist;
109
+ const key = `${x},${y}`;
110
+ gradientMap[key] = this.interpolateColor(this.options.starColors[this.options.starColors.length - 1], this.options.finalColor, factor);
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ const size = this.options.gradientDirection === "vertical"
116
+ ? dimensions.height
117
+ : dimensions.width;
118
+ const startColor = this.options.starColors[this.options.starColors.length - 1];
119
+ for (let i = 0; i < size; i++) {
120
+ const factor = i / (size - 1);
121
+ gradientMap[i] = this.interpolateColor(startColor, this.options.finalColor, factor);
122
+ }
123
+ }
124
+ return gradientMap;
125
+ }
126
+ /**
127
+ * Get gradient key based on direction
128
+ */
129
+ getGradientKey(pos, _dimensions) {
130
+ if (this.options.gradientDirection === "diagonal") {
131
+ return `${pos.x},${pos.y}`;
132
+ }
133
+ else if (this.options.gradientDirection === "vertical") {
134
+ return pos.y;
135
+ }
136
+ else {
137
+ return pos.x;
138
+ }
139
+ }
140
+ /**
141
+ * Render the next frame
142
+ */
143
+ async render() {
144
+ if (!this.isInitialized) {
145
+ throw new Error("Effect not initialized");
146
+ }
147
+ // Update animation state
148
+ this.updateAnimationState();
149
+ // Create the frame
150
+ const dimensions = this.getCanvasDimensions();
151
+ const frame = Array(dimensions.height)
152
+ .fill("")
153
+ .map(() => Array(dimensions.width).fill(" "));
154
+ // Render characters
155
+ for (const char of this.characters) {
156
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
157
+ const state = this.characterStates.get(key);
158
+ if (state) {
159
+ const visual = this.createCharacterVisual(char, state);
160
+ char.visual = visual;
161
+ const x = Math.round(state.position.x);
162
+ const y = Math.round(state.position.y);
163
+ if (y >= 0 && y < dimensions.height && x >= 0 && x < dimensions.width) {
164
+ // Apply ANSI color codes
165
+ const colorCode = this.getColorCode(visual.colors.fg);
166
+ const resetCode = ANSI.reset;
167
+ frame[y][x] = colorCode + visual.symbol + resetCode;
168
+ }
169
+ }
170
+ }
171
+ this.animationFrameCount++;
172
+ // Convert frame to strings
173
+ return frame.map((row) => row.join(""));
174
+ }
175
+ /**
176
+ * Update animation state for all characters
177
+ */
178
+ updateAnimationState() {
179
+ const progress = this.animationFrameCount / this.totalFrames;
180
+ // Update phase transitions
181
+ if (this.currentPhase === "forming" && progress > 0.15) {
182
+ this.currentPhase = "consuming";
183
+ }
184
+ else if (this.currentPhase === "consuming" && progress > 0.5) {
185
+ this.currentPhase = "collapsing";
186
+ }
187
+ else if (this.currentPhase === "collapsing" && progress > 0.6) {
188
+ this.currentPhase = "exploding";
189
+ }
190
+ else if (this.currentPhase === "exploding" && progress > 0.7) {
191
+ this.currentPhase = "settling";
192
+ }
193
+ // Update character positions based on phase
194
+ for (const [_key, state] of this.characterStates) {
195
+ this.updateCharacterPosition(state);
196
+ }
197
+ // Check completion
198
+ this._isEffectComplete = progress >= 1;
199
+ }
200
+ /**
201
+ * Update individual character position
202
+ */
203
+ updateCharacterPosition(state) {
204
+ const frameProgress = this.animationFrameCount / this.totalFrames;
205
+ switch (this.currentPhase) {
206
+ case "forming":
207
+ if (state.isBlackholeRing) {
208
+ // Move to blackhole ring position
209
+ const ringProgress = Math.min(frameProgress / 0.15, 1);
210
+ const angle = (this.blackholeChars.indexOf(this.characters.find(c => this.characterStates.get(`${c.originalPosition.x},${c.originalPosition.y}`) === state)) / this.blackholeChars.length) * Math.PI * 2;
211
+ const targetX = this.blackholeCenter.x + Math.cos(angle) * this.blackholeRadius;
212
+ const targetY = this.blackholeCenter.y + Math.sin(angle) * this.blackholeRadius;
213
+ state.position.x = state.position.x + (targetX - state.position.x) * ringProgress * 0.1;
214
+ state.position.y = state.position.y + (targetY - state.position.y) * ringProgress * 0.1;
215
+ state.phase = "consuming";
216
+ }
217
+ break;
218
+ case "consuming":
219
+ if (state.isBlackholeRing) {
220
+ // Rotate blackhole ring
221
+ const angle = (this.blackholeChars.indexOf(this.characters.find(c => this.characterStates.get(`${c.originalPosition.x},${c.originalPosition.y}`) === state)) / this.blackholeChars.length) * Math.PI * 2 + frameProgress * Math.PI * 2;
222
+ state.position.x = this.blackholeCenter.x + Math.cos(angle) * this.blackholeRadius;
223
+ state.position.y = this.blackholeCenter.y + Math.sin(angle) * this.blackholeRadius;
224
+ }
225
+ else {
226
+ // Spiral into blackhole
227
+ const consumeProgress = (frameProgress - 0.15) / 0.35;
228
+ if (consumeProgress > 0) {
229
+ state.spiralAngle += 0.2;
230
+ state.spiralRadius *= 0.95;
231
+ state.position.x = this.blackholeCenter.x + Math.cos(state.spiralAngle) * state.spiralRadius;
232
+ state.position.y = this.blackholeCenter.y + Math.sin(state.spiralAngle) * state.spiralRadius;
233
+ if (state.spiralRadius < 2) {
234
+ state.phase = "collapsed";
235
+ state.position = { ...this.blackholeCenter };
236
+ }
237
+ }
238
+ }
239
+ break;
240
+ case "collapsing":
241
+ // All characters move to center
242
+ const collapseProgress = (frameProgress - 0.5) / 0.1;
243
+ if (collapseProgress > 0) {
244
+ state.position.x += (this.blackholeCenter.x - state.position.x) * 0.2;
245
+ state.position.y += (this.blackholeCenter.y - state.position.y) * 0.2;
246
+ state.phase = "collapsed";
247
+ }
248
+ break;
249
+ case "exploding":
250
+ // Calculate explosion vector
251
+ if (state.explosionVector.x === 0 && state.explosionVector.y === 0) {
252
+ const angle = Math.atan2(state.targetPosition.y - this.blackholeCenter.y, state.targetPosition.x - this.blackholeCenter.x);
253
+ const distance = this.calculateDistance(state.targetPosition, this.blackholeCenter);
254
+ const speed = Math.min(distance * 0.3, 5);
255
+ state.explosionVector.x = Math.cos(angle) * speed;
256
+ state.explosionVector.y = Math.sin(angle) * speed;
257
+ state.phase = "exploding";
258
+ }
259
+ // Apply explosion movement
260
+ state.position.x += state.explosionVector.x;
261
+ state.position.y += state.explosionVector.y;
262
+ // Dampen explosion
263
+ state.explosionVector.x *= 0.9;
264
+ state.explosionVector.y *= 0.9;
265
+ break;
266
+ case "settling":
267
+ // Settle to final position
268
+ const settleProgress = (frameProgress - 0.7) / 0.3;
269
+ if (settleProgress > 0) {
270
+ state.position.x += (state.targetPosition.x - state.position.x) * 0.1;
271
+ state.position.y += (state.targetPosition.y - state.position.y) * 0.1;
272
+ state.settlingProgress = Math.min(settleProgress, 1);
273
+ if (Math.abs(state.position.x - state.targetPosition.x) < 0.5 &&
274
+ Math.abs(state.position.y - state.targetPosition.y) < 0.5) {
275
+ state.position = { ...state.targetPosition };
276
+ state.phase = "final";
277
+ }
278
+ }
279
+ break;
280
+ }
281
+ }
282
+ /**
283
+ * Create visual representation of a character
284
+ */
285
+ createCharacterVisual(char, state) {
286
+ let symbol = state.starSymbol;
287
+ let color = state.starColor;
288
+ switch (state.phase) {
289
+ case "starfield":
290
+ // Initial starfield state
291
+ break;
292
+ case "consuming":
293
+ if (state.isBlackholeRing) {
294
+ symbol = "*";
295
+ color = this.options.blackholeColor;
296
+ }
297
+ else {
298
+ // Fading as consumed
299
+ const fadeColors = ["808080", "606060", "404040", "202020", "000000"];
300
+ const fadeIndex = Math.min(Math.floor((1 - state.spiralRadius / 50) * fadeColors.length), fadeColors.length - 1);
301
+ color = fadeColors[Math.max(0, fadeIndex)];
302
+ }
303
+ break;
304
+ case "collapsed":
305
+ symbol = "●";
306
+ color = this.options.starColors[Math.floor(Math.random() * this.options.starColors.length)];
307
+ break;
308
+ case "exploding":
309
+ symbol = char.originalSymbol;
310
+ color = this.options.starColors[Math.floor(this.animationFrameCount / 2) % this.options.starColors.length];
311
+ break;
312
+ case "settling":
313
+ case "final":
314
+ symbol = char.originalSymbol;
315
+ // Fade from star color to final color
316
+ const starColor = this.options.starColors[0];
317
+ color = this.interpolateColor(starColor, state.finalColor, state.settlingProgress);
318
+ break;
319
+ }
320
+ return {
321
+ symbol,
322
+ colors: {
323
+ fg: color,
324
+ bg: null,
325
+ },
326
+ };
327
+ }
328
+ /**
329
+ * Calculate distance between two coordinates
330
+ */
331
+ calculateDistance(a, b) {
332
+ return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
333
+ }
334
+ /**
335
+ * Get ANSI color code for a color
336
+ */
337
+ getColorCode(color) {
338
+ if (!color || this.config.noColor) {
339
+ return "";
340
+ }
341
+ // For RGB colors, convert to ANSI 24-bit color
342
+ if (typeof color === "string") {
343
+ const r = parseInt(color.substring(0, 2), 16);
344
+ const g = parseInt(color.substring(2, 4), 16);
345
+ const b = parseInt(color.substring(4, 6), 16);
346
+ return `\x1b[38;2;${r};${g};${b}m`;
347
+ }
348
+ // For XTerm colors
349
+ return `\x1b[38;5;${color}m`;
350
+ }
351
+ /**
352
+ * Interpolate between two colors
353
+ */
354
+ interpolateColor(color1, color2, factor) {
355
+ const r1 = parseInt(color1.substring(0, 2), 16);
356
+ const g1 = parseInt(color1.substring(2, 4), 16);
357
+ const b1 = parseInt(color1.substring(4, 6), 16);
358
+ const r2 = parseInt(color2.substring(0, 2), 16);
359
+ const g2 = parseInt(color2.substring(2, 4), 16);
360
+ const b2 = parseInt(color2.substring(4, 6), 16);
361
+ const r = Math.round(r1 + (r2 - r1) * factor);
362
+ const g = Math.round(g1 + (g2 - g1) * factor);
363
+ const b = Math.round(b1 + (b2 - b1) * factor);
364
+ return [r, g, b]
365
+ .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
366
+ .join("");
367
+ }
368
+ /**
369
+ * Render fallback for when effects are disabled
370
+ */
371
+ renderFallback() {
372
+ return this.text.split("\n");
373
+ }
374
+ /**
375
+ * Check if effect is complete
376
+ */
377
+ isComplete() {
378
+ return this._isEffectComplete;
379
+ }
380
+ /**
381
+ * Reset the effect
382
+ */
383
+ onReset() {
384
+ this.characterStates.clear();
385
+ this.blackholeChars = [];
386
+ this.consumptionQueue = [];
387
+ this.currentPhase = "forming";
388
+ this.phaseProgress = 0;
389
+ this.animationFrameCount = 0;
390
+ this._isEffectComplete = false;
391
+ this.onInitialize();
392
+ }
393
+ }
394
+ //# sourceMappingURL=blackhole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blackhole.js","sourceRoot":"","sources":["../../../src/effects/implementations/blackhole.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Burn Effect
3
+ * Characters are ignited and burn up the screen
4
+ */
5
+ import { BaseEffect } from "../types.js";
6
+ /**
7
+ * Configuration options for the Burn effect
8
+ */
9
+ export interface BurnEffectOptions {
10
+ /** Duration in milliseconds */
11
+ duration?: number;
12
+ /** Starting color before burning */
13
+ startingColor?: string;
14
+ /** Colors to transition through while burning */
15
+ burnColors?: string[];
16
+ /** Speed of the burn spread (characters per frame) */
17
+ burnSpeed?: number;
18
+ /** Delay between burn waves */
19
+ burnDelay?: number;
20
+ /** Randomness factor for burn timing */
21
+ burnRandomness?: number;
22
+ }
23
+ /**
24
+ * Burn effect implementation
25
+ */
26
+ export declare class BurnEffect extends BaseEffect {
27
+ readonly name = "Burn";
28
+ readonly description = "Characters are ignited and burn up the screen";
29
+ private options;
30
+ private characterStates;
31
+ private burnFront;
32
+ private animationFrameCount;
33
+ private totalFrames;
34
+ private burnPhaseDuration;
35
+ private _isEffectComplete;
36
+ constructor(options?: BurnEffectOptions);
37
+ /**
38
+ * Initialize the effect
39
+ */
40
+ protected onInitialize(): void;
41
+ /**
42
+ * Render the next frame
43
+ */
44
+ render(): Promise<string[]>;
45
+ /**
46
+ * Update burn state for all characters
47
+ */
48
+ private updateBurnState;
49
+ /**
50
+ * Create visual representation of a character
51
+ */
52
+ private createCharacterVisual;
53
+ /**
54
+ * Get ANSI color code for a color
55
+ */
56
+ private getColorCode;
57
+ /**
58
+ * Interpolate between two colors
59
+ */
60
+ private interpolateColor;
61
+ /**
62
+ * Render fallback for when effects are disabled
63
+ */
64
+ renderFallback(): string[];
65
+ /**
66
+ * Check if effect is complete
67
+ */
68
+ isComplete(): boolean;
69
+ /**
70
+ * Reset the effect
71
+ */
72
+ protected onReset(): void;
73
+ }
74
+ //# sourceMappingURL=burn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burn.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/burn.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAIX,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,mDAAmD;IAEvE,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,OAAO,GAAE,iBAAsB;IAa3C;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IA0B9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuCjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAuDvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4D7B;;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;CAO1B"}