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

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,552 @@
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
+ import { ANSI } from "../utils.js";
7
+ /**
8
+ * Blackhole effect implementation
9
+ */
10
+ export class TestBlackholeEffect extends BaseEffect {
11
+ constructor(options = {}) {
12
+ super();
13
+ this.name = "Blackhole";
14
+ this.description = "Characters are consumed by a black hole with ASCII art center 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
+ // Blackhole properties
22
+ this.blackholeCenter = { x: 0, y: 0 };
23
+ this.blackholeRadius = 0;
24
+ this.blackholeChars = [];
25
+ // ASCII art properties
26
+ this.centerArtChars = [];
27
+ this.centerArtBounds = { width: 0, height: 0 };
28
+ // Star symbols
29
+ this.starSymbols = ["*", "'", "`", "¤", "•", "°", "·", "✦", "✧"];
30
+ this.starfieldColors = [
31
+ "4a4a4d",
32
+ "808080",
33
+ "a0a0a0",
34
+ "c0c0c0",
35
+ "e0e0e0",
36
+ "ffffff",
37
+ ];
38
+ // Default Pi ASCII art
39
+ this.defaultPiArt = [
40
+ " πππππππππππππππππππππ ",
41
+ " ππππππππππππππππππππππππππ ",
42
+ " πππππππππππππππππππππππππππππ ",
43
+ " ππππππππππππππππππππππππππππππππ ",
44
+ " πππππππππππππππππππππππππππ ",
45
+ " ππππππππππππππππππππππππππ ",
46
+ " ππππππππ πππππππππ ππππππ ",
47
+ " ππππππππ ππππππππ πππππππππ ",
48
+ " ππππππππ πππππππ πππππππππππ ",
49
+ " πππππππππππ πππππππππ ππππππππππππ ",
50
+ " πππππππππππππππππππ πππππππππππππ ",
51
+ " πππππππππππππππππ πππππππππππππππ ",
52
+ " πππππππππππππππ πππππππππππππππ ",
53
+ " ππππππππππππ ππππππππππππππππ ",
54
+ " ππ ππππππππππ πππππππππππππππππ ",
55
+ " ππππππ πππππππππ πππππππππππππππππ ",
56
+ " ππππππππππ πππππππ πππππππππππππππππππ",
57
+ "ππππππππππππ πππππππ πππππππππππππππππ",
58
+ "ππππππππππππππ πππππππ ππππππππππππππππ",
59
+ "ππππππππππππππ ππππππππ ππππππππ ",
60
+ " ππππππππππππ ππππππππππ ππππππππ ",
61
+ " ππππππππππππ ππππππππππππ ππππππππ ",
62
+ " πππππππππππππ πππππππππππππππππππππππ ",
63
+ " ππππππππππππ πππππππππππππππππππππππ ",
64
+ " ππππππππππππ πππππππππππππππππππππ ",
65
+ " πππππππππππ πππππππππππππππππππππ ",
66
+ " ππππππππππ ππππππππππππππππππππ ",
67
+ " ππππππππππ πππππππππππππππππππ ",
68
+ " ππππππππ ππππππππππππππππ ",
69
+ " πππππππ πππππππππππ ",
70
+ ];
71
+ this.options = {
72
+ duration: 6000,
73
+ blackholeColor: "ffffff",
74
+ starColors: ["ffcc0d", "ff7326", "ff194d", "bf2669", "702a8c", "049dbf"],
75
+ finalColor: "ffffff",
76
+ useGradient: true,
77
+ gradientDirection: "diagonal",
78
+ blackholeSize: 0.3,
79
+ centerAsciiArt: this.defaultPiArt,
80
+ centerArtColor: "9945ff",
81
+ animateCenterArt: true,
82
+ ...options,
83
+ };
84
+ }
85
+ /**
86
+ * Parse ASCII art into character positions
87
+ */
88
+ parseAsciiArt(art) {
89
+ this.centerArtChars = [];
90
+ let maxX = 0;
91
+ let maxY = art.length;
92
+ for (let y = 0; y < art.length; y++) {
93
+ const line = art[y];
94
+ maxX = Math.max(maxX, line.length);
95
+ for (let x = 0; x < line.length; x++) {
96
+ const char = line[x];
97
+ if (char && char !== " ") {
98
+ this.centerArtChars.push({
99
+ symbol: char,
100
+ relativePos: { x, y },
101
+ });
102
+ }
103
+ }
104
+ }
105
+ this.centerArtBounds = { width: maxX, height: maxY };
106
+ }
107
+ /**
108
+ * Initialize the effect
109
+ */
110
+ onInitialize() {
111
+ this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
112
+ const dimensions = this.getCanvasDimensions();
113
+ this.blackholeCenter = {
114
+ x: Math.floor(dimensions.width / 2),
115
+ y: Math.floor(dimensions.height / 2),
116
+ };
117
+ // Parse ASCII art
118
+ this.parseAsciiArt(this.options.centerAsciiArt);
119
+ // Calculate radius to accommodate ASCII art
120
+ const artRadius = Math.max(Math.ceil(this.centerArtBounds.width / 2), Math.ceil(this.centerArtBounds.height / 2));
121
+ this.blackholeRadius = Math.max(artRadius + 5, // Add padding around ASCII art
122
+ Math.floor(Math.min(dimensions.width * this.options.blackholeSize, dimensions.height * this.options.blackholeSize)));
123
+ // Initialize character states
124
+ this.characterStates.clear();
125
+ this.blackholeChars = [];
126
+ // Calculate final colors for gradient
127
+ const gradientColors = this.calculateGradientColors(dimensions);
128
+ // Select characters for blackhole ring
129
+ const blackholeCharCount = Math.min(Math.floor(this.blackholeRadius * 3), Math.floor(this.characters.length * 0.3));
130
+ const shuffledChars = [...this.characters].sort(() => Math.random() - 0.5);
131
+ this.blackholeChars = shuffledChars.slice(0, blackholeCharCount);
132
+ // Initialize all character states
133
+ for (const char of this.characters) {
134
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
135
+ const isBlackholeChar = this.blackholeChars.includes(char);
136
+ let finalColor = this.options.finalColor;
137
+ if (this.options.useGradient) {
138
+ const gradientKey = this.getGradientKey(char.originalPosition, dimensions);
139
+ finalColor = gradientColors[gradientKey] || this.options.finalColor;
140
+ }
141
+ // Random starfield position
142
+ const starfieldPos = {
143
+ x: Math.floor(Math.random() * dimensions.width),
144
+ y: Math.floor(Math.random() * dimensions.height),
145
+ };
146
+ this.characterStates.set(key, {
147
+ phase: "starfield",
148
+ isBlackholeRing: isBlackholeChar,
149
+ isCenterArt: false,
150
+ starSymbol: this.starSymbols[Math.floor(Math.random() * this.starSymbols.length)],
151
+ starColor: this.starfieldColors[Math.floor(Math.random() * this.starfieldColors.length)],
152
+ position: { ...starfieldPos },
153
+ targetPosition: { ...char.originalPosition },
154
+ spiralAngle: Math.random() * Math.PI * 2,
155
+ spiralRadius: this.calculateDistance(starfieldPos, this.blackholeCenter),
156
+ explosionVector: { x: 0, y: 0 },
157
+ settlingProgress: 0,
158
+ finalColor,
159
+ });
160
+ }
161
+ this.currentPhase = "forming";
162
+ this.animationFrameCount = 0;
163
+ this._isEffectComplete = false;
164
+ }
165
+ /**
166
+ * Calculate gradient colors
167
+ */
168
+ calculateGradientColors(dimensions) {
169
+ const gradientMap = {};
170
+ if (this.options.gradientDirection === "diagonal") {
171
+ const maxDist = Math.sqrt(dimensions.width ** 2 + dimensions.height ** 2);
172
+ for (let y = 0; y < dimensions.height; y++) {
173
+ for (let x = 0; x < dimensions.width; x++) {
174
+ const dist = Math.sqrt(x ** 2 + y ** 2);
175
+ const factor = dist / maxDist;
176
+ const key = `${x},${y}`;
177
+ gradientMap[key] = this.interpolateColor(this.options.starColors[this.options.starColors.length - 1], this.options.finalColor, factor);
178
+ }
179
+ }
180
+ }
181
+ else {
182
+ const size = this.options.gradientDirection === "vertical"
183
+ ? dimensions.height
184
+ : dimensions.width;
185
+ const startColor = this.options.starColors[this.options.starColors.length - 1];
186
+ for (let i = 0; i < size; i++) {
187
+ const factor = i / (size - 1);
188
+ gradientMap[i] = this.interpolateColor(startColor, this.options.finalColor, factor);
189
+ }
190
+ }
191
+ return gradientMap;
192
+ }
193
+ /**
194
+ * Get gradient key based on direction
195
+ */
196
+ getGradientKey(pos, _dimensions) {
197
+ if (this.options.gradientDirection === "diagonal") {
198
+ return `${pos.x},${pos.y}`;
199
+ }
200
+ else if (this.options.gradientDirection === "vertical") {
201
+ return pos.y;
202
+ }
203
+ else {
204
+ return pos.x;
205
+ }
206
+ }
207
+ /**
208
+ * Render the next frame
209
+ */
210
+ async render() {
211
+ if (!this.isInitialized) {
212
+ throw new Error("Effect not initialized");
213
+ }
214
+ // Update animation state
215
+ this.updateAnimationState();
216
+ // Create the frame
217
+ const dimensions = this.getCanvasDimensions();
218
+ const frame = Array(dimensions.height)
219
+ .fill("")
220
+ .map(() => Array(dimensions.width).fill(" "));
221
+ // Render center ASCII art first (so it appears behind other elements)
222
+ if (this.currentPhase !== "forming") {
223
+ this.renderCenterArt(frame, dimensions);
224
+ }
225
+ // Render characters
226
+ for (const char of this.characters) {
227
+ const key = `${char.originalPosition.x},${char.originalPosition.y}`;
228
+ const state = this.characterStates.get(key);
229
+ if (state && !state.isCenterArt) {
230
+ const visual = this.createCharacterVisual(char, state);
231
+ char.visual = visual;
232
+ const x = Math.round(state.position.x);
233
+ const y = Math.round(state.position.y);
234
+ if (y >= 0 && y < dimensions.height && x >= 0 && x < dimensions.width) {
235
+ // Apply ANSI color codes
236
+ const colorCode = this.getColorCode(visual.colors.fg);
237
+ const resetCode = ANSI.reset;
238
+ frame[y][x] = colorCode + visual.symbol + resetCode;
239
+ }
240
+ }
241
+ }
242
+ this.animationFrameCount++;
243
+ // Convert frame to strings
244
+ return frame.map((row) => row.join(""));
245
+ }
246
+ /**
247
+ * Render center ASCII art
248
+ */
249
+ renderCenterArt(frame, dimensions) {
250
+ const artOffsetX = Math.floor(this.blackholeCenter.x - this.centerArtBounds.width / 2);
251
+ const artOffsetY = Math.floor(this.blackholeCenter.y - this.centerArtBounds.height / 2);
252
+ // Calculate art properties based on phase
253
+ let opacity = 1;
254
+ let rotation = 0;
255
+ let scale = 1;
256
+ if (this.options.animateCenterArt) {
257
+ const frameProgress = this.animationFrameCount / this.totalFrames;
258
+ switch (this.currentPhase) {
259
+ case "forming":
260
+ opacity = Math.min(frameProgress / 0.15, 1);
261
+ scale = 0.5 + opacity * 0.5;
262
+ break;
263
+ case "consuming":
264
+ rotation = frameProgress * Math.PI * 2;
265
+ opacity = 1;
266
+ // Pulsate
267
+ scale = 1 + Math.sin(frameProgress * Math.PI * 10) * 0.1;
268
+ break;
269
+ case "collapsing":
270
+ const collapseProgress = (frameProgress - 0.5) / 0.1;
271
+ scale = 1 - collapseProgress * 0.5;
272
+ opacity = 1;
273
+ break;
274
+ case "exploding":
275
+ opacity = 0; // Hide during explosion
276
+ break;
277
+ }
278
+ }
279
+ // Render each character
280
+ for (const artChar of this.centerArtChars) {
281
+ let x = artChar.relativePos.x;
282
+ let y = artChar.relativePos.y;
283
+ // Apply rotation if animating
284
+ if (rotation !== 0 && this.options.animateCenterArt) {
285
+ const centerX = this.centerArtBounds.width / 2;
286
+ const centerY = this.centerArtBounds.height / 2;
287
+ const relX = x - centerX;
288
+ const relY = y - centerY;
289
+ x = Math.round(centerX + relX * Math.cos(rotation) - relY * Math.sin(rotation));
290
+ y = Math.round(centerY + relX * Math.sin(rotation) + relY * Math.cos(rotation));
291
+ }
292
+ // Apply scale
293
+ if (scale !== 1) {
294
+ const centerX = this.centerArtBounds.width / 2;
295
+ const centerY = this.centerArtBounds.height / 2;
296
+ x = Math.round(centerX + (x - centerX) * scale);
297
+ y = Math.round(centerY + (y - centerY) * scale);
298
+ }
299
+ const finalX = artOffsetX + x;
300
+ const finalY = artOffsetY + y;
301
+ if (finalY >= 0 &&
302
+ finalY < dimensions.height &&
303
+ finalX >= 0 &&
304
+ finalX < dimensions.width &&
305
+ opacity > 0.1) {
306
+ const colorCode = this.getColorCode(this.options.centerArtColor);
307
+ const resetCode = ANSI.reset;
308
+ frame[finalY][finalX] = colorCode + artChar.symbol + resetCode;
309
+ }
310
+ }
311
+ }
312
+ /**
313
+ * Update animation state for all characters
314
+ */
315
+ updateAnimationState() {
316
+ const progress = this.animationFrameCount / this.totalFrames;
317
+ // Update phase transitions
318
+ if (this.currentPhase === "forming" && progress > 0.15) {
319
+ this.currentPhase = "consuming";
320
+ }
321
+ else if (this.currentPhase === "consuming" && progress > 0.5) {
322
+ this.currentPhase = "collapsing";
323
+ }
324
+ else if (this.currentPhase === "collapsing" && progress > 0.6) {
325
+ this.currentPhase = "exploding";
326
+ }
327
+ else if (this.currentPhase === "exploding" && progress > 0.7) {
328
+ this.currentPhase = "settling";
329
+ }
330
+ // Update character positions based on phase
331
+ for (const [_key, state] of this.characterStates) {
332
+ if (!state.isCenterArt) {
333
+ this.updateCharacterPosition(state);
334
+ }
335
+ }
336
+ // Check completion
337
+ this._isEffectComplete = progress >= 1;
338
+ }
339
+ /**
340
+ * Update individual character position
341
+ */
342
+ updateCharacterPosition(state) {
343
+ const frameProgress = this.animationFrameCount / this.totalFrames;
344
+ switch (this.currentPhase) {
345
+ case "forming":
346
+ if (state.isBlackholeRing) {
347
+ // Move to blackhole ring position
348
+ const ringProgress = Math.min(frameProgress / 0.15, 1);
349
+ const angle = (this.blackholeChars.indexOf(this.characters.find((c) => this.characterStates.get(`${c.originalPosition.x},${c.originalPosition.y}`) === state)) /
350
+ this.blackholeChars.length) *
351
+ Math.PI *
352
+ 2;
353
+ const targetX = this.blackholeCenter.x + Math.cos(angle) * this.blackholeRadius;
354
+ const targetY = this.blackholeCenter.y + Math.sin(angle) * this.blackholeRadius;
355
+ state.position.x =
356
+ state.position.x +
357
+ (targetX - state.position.x) * ringProgress * 0.1;
358
+ state.position.y =
359
+ state.position.y +
360
+ (targetY - state.position.y) * ringProgress * 0.1;
361
+ state.phase = "consuming";
362
+ }
363
+ break;
364
+ case "consuming":
365
+ if (state.isBlackholeRing) {
366
+ // Rotate blackhole ring
367
+ const angle = (this.blackholeChars.indexOf(this.characters.find((c) => this.characterStates.get(`${c.originalPosition.x},${c.originalPosition.y}`) === state)) /
368
+ this.blackholeChars.length) *
369
+ Math.PI *
370
+ 2 +
371
+ frameProgress * Math.PI * 2;
372
+ state.position.x =
373
+ this.blackholeCenter.x + Math.cos(angle) * this.blackholeRadius;
374
+ state.position.y =
375
+ this.blackholeCenter.y + Math.sin(angle) * this.blackholeRadius;
376
+ }
377
+ else {
378
+ // Spiral into blackhole
379
+ const consumeProgress = (frameProgress - 0.15) / 0.35;
380
+ if (consumeProgress > 0) {
381
+ state.spiralAngle += 0.2;
382
+ state.spiralRadius *= 0.95;
383
+ state.position.x =
384
+ this.blackholeCenter.x +
385
+ Math.cos(state.spiralAngle) * state.spiralRadius;
386
+ state.position.y =
387
+ this.blackholeCenter.y +
388
+ Math.sin(state.spiralAngle) * state.spiralRadius;
389
+ if (state.spiralRadius < 2) {
390
+ state.phase = "collapsed";
391
+ state.position = { ...this.blackholeCenter };
392
+ }
393
+ }
394
+ }
395
+ break;
396
+ case "collapsing":
397
+ // All characters move to center
398
+ const collapseProgress = (frameProgress - 0.5) / 0.1;
399
+ if (collapseProgress > 0) {
400
+ state.position.x += (this.blackholeCenter.x - state.position.x) * 0.2;
401
+ state.position.y += (this.blackholeCenter.y - state.position.y) * 0.2;
402
+ state.phase = "collapsed";
403
+ }
404
+ break;
405
+ case "exploding":
406
+ // Calculate explosion vector
407
+ if (state.explosionVector.x === 0 && state.explosionVector.y === 0) {
408
+ const angle = Math.atan2(state.targetPosition.y - this.blackholeCenter.y, state.targetPosition.x - this.blackholeCenter.x);
409
+ const distance = this.calculateDistance(state.targetPosition, this.blackholeCenter);
410
+ const speed = Math.min(distance * 0.3, 5);
411
+ state.explosionVector.x = Math.cos(angle) * speed;
412
+ state.explosionVector.y = Math.sin(angle) * speed;
413
+ state.phase = "exploding";
414
+ }
415
+ // Apply explosion movement
416
+ state.position.x += state.explosionVector.x;
417
+ state.position.y += state.explosionVector.y;
418
+ // Dampen explosion
419
+ state.explosionVector.x *= 0.9;
420
+ state.explosionVector.y *= 0.9;
421
+ break;
422
+ case "settling":
423
+ // Settle to final position
424
+ const settleProgress = (frameProgress - 0.7) / 0.3;
425
+ if (settleProgress > 0) {
426
+ state.position.x += (state.targetPosition.x - state.position.x) * 0.1;
427
+ state.position.y += (state.targetPosition.y - state.position.y) * 0.1;
428
+ state.settlingProgress = Math.min(settleProgress, 1);
429
+ if (Math.abs(state.position.x - state.targetPosition.x) < 0.5 &&
430
+ Math.abs(state.position.y - state.targetPosition.y) < 0.5) {
431
+ state.position = { ...state.targetPosition };
432
+ state.phase = "final";
433
+ }
434
+ }
435
+ break;
436
+ }
437
+ }
438
+ /**
439
+ * Create visual representation of a character
440
+ */
441
+ createCharacterVisual(char, state) {
442
+ let symbol = state.starSymbol;
443
+ let color = state.starColor;
444
+ switch (state.phase) {
445
+ case "starfield":
446
+ // Initial starfield state
447
+ break;
448
+ case "consuming":
449
+ if (state.isBlackholeRing) {
450
+ symbol = "*";
451
+ color = this.options.blackholeColor;
452
+ }
453
+ else {
454
+ // Fading as consumed
455
+ const fadeColors = ["808080", "606060", "404040", "202020", "000000"];
456
+ const fadeIndex = Math.min(Math.floor((1 - state.spiralRadius / 50) * fadeColors.length), fadeColors.length - 1);
457
+ color = fadeColors[Math.max(0, fadeIndex)];
458
+ }
459
+ break;
460
+ case "collapsed":
461
+ symbol = "●";
462
+ color =
463
+ this.options.starColors[Math.floor(Math.random() * this.options.starColors.length)];
464
+ break;
465
+ case "exploding":
466
+ symbol = char.originalSymbol;
467
+ color =
468
+ this.options.starColors[Math.floor(this.animationFrameCount / 2) %
469
+ this.options.starColors.length];
470
+ break;
471
+ case "settling":
472
+ case "final":
473
+ symbol = char.originalSymbol;
474
+ // Fade from star color to final color
475
+ const starColor = this.options.starColors[0];
476
+ color = this.interpolateColor(starColor, state.finalColor, state.settlingProgress);
477
+ break;
478
+ }
479
+ return {
480
+ symbol,
481
+ colors: {
482
+ fg: color,
483
+ bg: null,
484
+ },
485
+ };
486
+ }
487
+ /**
488
+ * Calculate distance between two coordinates
489
+ */
490
+ calculateDistance(a, b) {
491
+ return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
492
+ }
493
+ /**
494
+ * Get ANSI color code for a color
495
+ */
496
+ getColorCode(color) {
497
+ if (!color || this.config.noColor) {
498
+ return "";
499
+ }
500
+ // For RGB colors, convert to ANSI 24-bit color
501
+ if (typeof color === "string") {
502
+ const r = parseInt(color.substring(0, 2), 16);
503
+ const g = parseInt(color.substring(2, 4), 16);
504
+ const b = parseInt(color.substring(4, 6), 16);
505
+ return `\x1b[38;2;${r};${g};${b}m`;
506
+ }
507
+ // For XTerm colors
508
+ return `\x1b[38;5;${color}m`;
509
+ }
510
+ /**
511
+ * Interpolate between two colors
512
+ */
513
+ interpolateColor(color1, color2, factor) {
514
+ const r1 = parseInt(color1.substring(0, 2), 16);
515
+ const g1 = parseInt(color1.substring(2, 4), 16);
516
+ const b1 = parseInt(color1.substring(4, 6), 16);
517
+ const r2 = parseInt(color2.substring(0, 2), 16);
518
+ const g2 = parseInt(color2.substring(2, 4), 16);
519
+ const b2 = parseInt(color2.substring(4, 6), 16);
520
+ const r = Math.round(r1 + (r2 - r1) * factor);
521
+ const g = Math.round(g1 + (g2 - g1) * factor);
522
+ const b = Math.round(b1 + (b2 - b1) * factor);
523
+ return [r, g, b]
524
+ .map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
525
+ .join("");
526
+ }
527
+ /**
528
+ * Render fallback for when effects are disabled
529
+ */
530
+ renderFallback() {
531
+ return this.text.split("\n");
532
+ }
533
+ /**
534
+ * Check if effect is complete
535
+ */
536
+ isComplete() {
537
+ return this._isEffectComplete;
538
+ }
539
+ /**
540
+ * Reset the effect
541
+ */
542
+ onReset() {
543
+ this.characterStates.clear();
544
+ this.blackholeChars = [];
545
+ this.centerArtChars = [];
546
+ this.currentPhase = "forming";
547
+ this.animationFrameCount = 0;
548
+ this._isEffectComplete = false;
549
+ this.onInitialize();
550
+ }
551
+ }
552
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/effects/implementations/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Waves Effect
3
+ * Creates wave patterns that travel across the text
4
+ */
5
+ import { BaseEffect } from "../types.js";
6
+ /**
7
+ * Configuration options for the Waves effect
8
+ */
9
+ export interface WavesEffectOptions {
10
+ /** Duration in milliseconds */
11
+ duration?: number;
12
+ /** Wave colors */
13
+ waveColors?: string[];
14
+ /** Final text color */
15
+ finalColor?: string;
16
+ /** Wave speed (higher = faster) */
17
+ waveSpeed?: number;
18
+ /** Wave frequency (waves per screen width) */
19
+ waveFrequency?: number;
20
+ /** Wave amplitude (height in characters) */
21
+ waveAmplitude?: number;
22
+ /** Wave direction */
23
+ direction?: "horizontal" | "vertical" | "diagonal";
24
+ /** Use gradient for wave colors */
25
+ useGradient?: boolean;
26
+ }
27
+ /**
28
+ * Waves effect implementation
29
+ */
30
+ export declare class WavesEffect extends BaseEffect {
31
+ readonly name = "Waves";
32
+ readonly description = "Creates wave patterns that travel across the text";
33
+ private options;
34
+ private characterStates;
35
+ private animationFrameCount;
36
+ private totalFrames;
37
+ private wavePosition;
38
+ private _isEffectComplete;
39
+ private gradient?;
40
+ constructor(options?: WavesEffectOptions);
41
+ /**
42
+ * Initialize the effect
43
+ */
44
+ protected onInitialize(): void;
45
+ /**
46
+ * Render the next frame
47
+ */
48
+ render(): Promise<string[]>;
49
+ /**
50
+ * Update animation state for all characters
51
+ */
52
+ private updateAnimationState;
53
+ /**
54
+ * Create visual representation of a character
55
+ */
56
+ private createCharacterVisual;
57
+ /**
58
+ * Get ANSI color code for a color
59
+ */
60
+ private getColorCode;
61
+ /**
62
+ * Interpolate between two colors
63
+ */
64
+ private interpolateColor;
65
+ /**
66
+ * Render fallback for when effects are disabled
67
+ */
68
+ renderFallback(): string[];
69
+ /**
70
+ * Check if effect is complete
71
+ */
72
+ isComplete(): boolean;
73
+ /**
74
+ * Reset the effect
75
+ */
76
+ protected onReset(): void;
77
+ }
78
+ //# sourceMappingURL=waves.d.ts.map