shellfie-cli 2.0.2 → 2.0.9
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.
- package/README.md +28 -9
- package/dist/cli.js +0 -0
- package/package.json +6 -2
- package/dist/animator.d.ts +0 -8
- package/dist/animator.d.ts.map +0 -1
- package/dist/animator.js +0 -210
- package/dist/animator.js.map +0 -1
- package/dist/dvd-executor-v2.d.ts +0 -76
- package/dist/dvd-executor-v2.d.ts.map +0 -1
- package/dist/dvd-executor-v2.js +0 -258
- package/dist/dvd-executor-v2.js.map +0 -1
- package/dist/dvd-executor.d.ts +0 -144
- package/dist/dvd-executor.d.ts.map +0 -1
- package/dist/dvd-executor.js +0 -669
- package/dist/dvd-executor.js.map +0 -1
- package/dist/dvd-parser.d.ts +0 -96
- package/dist/dvd-parser.d.ts.map +0 -1
- package/dist/dvd-parser.js +0 -279
- package/dist/dvd-parser.js.map +0 -1
- package/dist/dvd.d.ts +0 -31
- package/dist/dvd.d.ts.map +0 -1
- package/dist/dvd.js +0 -154
- package/dist/dvd.js.map +0 -1
- package/dist/frame-animator.d.ts +0 -21
- package/dist/frame-animator.d.ts.map +0 -1
- package/dist/frame-animator.js +0 -254
- package/dist/frame-animator.js.map +0 -1
- package/dist/frame-capture.d.ts +0 -16
- package/dist/frame-capture.d.ts.map +0 -1
- package/dist/frame-capture.js +0 -162
- package/dist/frame-capture.js.map +0 -1
- package/dist/svg-animator-v2.d.ts +0 -23
- package/dist/svg-animator-v2.d.ts.map +0 -1
- package/dist/svg-animator-v2.js +0 -134
- package/dist/svg-animator-v2.js.map +0 -1
- package/dist/svg-animator.d.ts +0 -23
- package/dist/svg-animator.d.ts.map +0 -1
- package/dist/svg-animator.js +0 -134
- package/dist/svg-animator.js.map +0 -1
- package/dist/terminal-renderer.d.ts +0 -34
- package/dist/terminal-renderer.d.ts.map +0 -1
- package/dist/terminal-renderer.js +0 -229
- package/dist/terminal-renderer.js.map +0 -1
package/dist/dvd-executor-v2.js
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* DVD Command Executor V2
|
|
4
|
-
* Executes real commands with typing effect and cursor
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.DVDExecutorV2 = void 0;
|
|
8
|
-
const node_child_process_1 = require("node:child_process");
|
|
9
|
-
const node_util_1 = require("node:util");
|
|
10
|
-
const terminal_renderer_1 = require("./terminal-renderer");
|
|
11
|
-
const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
12
|
-
class DVDExecutorV2 {
|
|
13
|
-
context;
|
|
14
|
-
options;
|
|
15
|
-
constructor(options = {}) {
|
|
16
|
-
this.options = options;
|
|
17
|
-
this.context = {
|
|
18
|
-
lines: [''],
|
|
19
|
-
currentLine: '',
|
|
20
|
-
cursorX: 0,
|
|
21
|
-
cursorY: 0,
|
|
22
|
-
frames: [],
|
|
23
|
-
clipboard: '',
|
|
24
|
-
startTime: Date.now(),
|
|
25
|
-
width: options.width || 800,
|
|
26
|
-
height: options.height || 600,
|
|
27
|
-
fontSize: options.fontSize || 14,
|
|
28
|
-
title: options.title,
|
|
29
|
-
template: options.template || 'macos',
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Capture current terminal state as a frame
|
|
34
|
-
*/
|
|
35
|
-
captureFrame(showCursor = true) {
|
|
36
|
-
const buffer = [...this.context.lines];
|
|
37
|
-
buffer[this.context.cursorY] = this.context.currentLine;
|
|
38
|
-
const state = (0, terminal_renderer_1.createTerminalState)(buffer.join('\n'), this.context.cursorX, this.context.cursorY, this.context.width, this.context.height, this.context.fontSize, showCursor);
|
|
39
|
-
const svg = (0, terminal_renderer_1.renderTerminalSVG)(state, {
|
|
40
|
-
title: this.context.title,
|
|
41
|
-
template: this.context.template,
|
|
42
|
-
});
|
|
43
|
-
const frame = {
|
|
44
|
-
timestamp: Date.now() - this.context.startTime,
|
|
45
|
-
svg,
|
|
46
|
-
state,
|
|
47
|
-
};
|
|
48
|
-
this.context.frames.push(frame);
|
|
49
|
-
this.options.onFrame?.(frame);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Execute Type command - simulate typing character by character
|
|
53
|
-
*/
|
|
54
|
-
async executeType(text, speed) {
|
|
55
|
-
const delay = speed || 50;
|
|
56
|
-
for (const char of text) {
|
|
57
|
-
this.context.currentLine += char;
|
|
58
|
-
this.context.cursorX++;
|
|
59
|
-
// Capture frame showing the new character with cursor
|
|
60
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
61
|
-
this.captureFrame(true);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Execute Enter - run the command and capture output
|
|
66
|
-
*/
|
|
67
|
-
async executeEnter() {
|
|
68
|
-
const command = this.context.currentLine.trim();
|
|
69
|
-
// Finalize current line (the command that was typed)
|
|
70
|
-
this.context.lines[this.context.cursorY] = this.context.currentLine;
|
|
71
|
-
// Move to next line
|
|
72
|
-
this.context.cursorY++;
|
|
73
|
-
this.context.cursorX = 0;
|
|
74
|
-
this.context.currentLine = '';
|
|
75
|
-
if (!this.context.lines[this.context.cursorY]) {
|
|
76
|
-
this.context.lines[this.context.cursorY] = '';
|
|
77
|
-
}
|
|
78
|
-
// Capture frame showing command was submitted (cursor on new line)
|
|
79
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
80
|
-
this.captureFrame(true);
|
|
81
|
-
// Execute the command if it's not empty
|
|
82
|
-
if (command) {
|
|
83
|
-
try {
|
|
84
|
-
const { stdout, stderr } = await execAsync(command, {
|
|
85
|
-
env: { ...process.env, FORCE_COLOR: '1', CLICOLOR_FORCE: '1' },
|
|
86
|
-
maxBuffer: 10 * 1024 * 1024, // 10MB buffer
|
|
87
|
-
});
|
|
88
|
-
const output = (stdout + stderr).trim();
|
|
89
|
-
if (output) {
|
|
90
|
-
// Split output into lines and add to terminal
|
|
91
|
-
const outputLines = output.split('\n');
|
|
92
|
-
for (const line of outputLines) {
|
|
93
|
-
this.context.lines[this.context.cursorY] = line;
|
|
94
|
-
this.context.cursorY++;
|
|
95
|
-
this.context.lines[this.context.cursorY] = '';
|
|
96
|
-
}
|
|
97
|
-
// Capture frame showing command output
|
|
98
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
99
|
-
this.captureFrame(true);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
// Command failed - show error output
|
|
104
|
-
const error = err;
|
|
105
|
-
const errorOutput = (error.stderr || error.stdout || 'Command failed').trim();
|
|
106
|
-
const errorLines = errorOutput.split('\n');
|
|
107
|
-
for (const line of errorLines) {
|
|
108
|
-
this.context.lines[this.context.cursorY] = line;
|
|
109
|
-
this.context.cursorY++;
|
|
110
|
-
this.context.lines[this.context.cursorY] = '';
|
|
111
|
-
}
|
|
112
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
113
|
-
this.captureFrame(true);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Execute arrow keys
|
|
119
|
-
*/
|
|
120
|
-
async executeArrow(direction) {
|
|
121
|
-
switch (direction) {
|
|
122
|
-
case 'Left':
|
|
123
|
-
if (this.context.cursorX > 0)
|
|
124
|
-
this.context.cursorX--;
|
|
125
|
-
break;
|
|
126
|
-
case 'Right':
|
|
127
|
-
if (this.context.cursorX < this.context.currentLine.length)
|
|
128
|
-
this.context.cursorX++;
|
|
129
|
-
break;
|
|
130
|
-
case 'Up':
|
|
131
|
-
if (this.context.cursorY > 0) {
|
|
132
|
-
this.context.cursorY--;
|
|
133
|
-
this.context.currentLine = this.context.lines[this.context.cursorY];
|
|
134
|
-
this.context.cursorX = Math.min(this.context.cursorX, this.context.currentLine.length);
|
|
135
|
-
}
|
|
136
|
-
break;
|
|
137
|
-
case 'Down':
|
|
138
|
-
if (this.context.cursorY < this.context.lines.length - 1) {
|
|
139
|
-
this.context.cursorY++;
|
|
140
|
-
this.context.currentLine = this.context.lines[this.context.cursorY];
|
|
141
|
-
this.context.cursorX = Math.min(this.context.cursorX, this.context.currentLine.length);
|
|
142
|
-
}
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
146
|
-
this.captureFrame(true);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Execute Backspace
|
|
150
|
-
*/
|
|
151
|
-
async executeBackspace() {
|
|
152
|
-
if (this.context.cursorX > 0) {
|
|
153
|
-
this.context.currentLine =
|
|
154
|
-
this.context.currentLine.slice(0, this.context.cursorX - 1) +
|
|
155
|
-
this.context.currentLine.slice(this.context.cursorX);
|
|
156
|
-
this.context.cursorX--;
|
|
157
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
158
|
-
this.captureFrame(true);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Execute a single command
|
|
163
|
-
*/
|
|
164
|
-
async executeCommand(command) {
|
|
165
|
-
switch (command.type) {
|
|
166
|
-
case 'Type':
|
|
167
|
-
await this.executeType(command.text, command.speed);
|
|
168
|
-
break;
|
|
169
|
-
case 'Key':
|
|
170
|
-
if (['Left', 'Right', 'Up', 'Down'].includes(command.key)) {
|
|
171
|
-
await this.executeArrow(command.key);
|
|
172
|
-
}
|
|
173
|
-
else if (command.key === 'Enter') {
|
|
174
|
-
await this.executeEnter();
|
|
175
|
-
}
|
|
176
|
-
else if (command.key === 'Backspace') {
|
|
177
|
-
await this.executeBackspace();
|
|
178
|
-
}
|
|
179
|
-
else if (command.key === 'Space') {
|
|
180
|
-
await this.executeType(' ');
|
|
181
|
-
}
|
|
182
|
-
else if (command.key === 'Tab') {
|
|
183
|
-
await this.executeType(' '); // 4 spaces
|
|
184
|
-
}
|
|
185
|
-
break;
|
|
186
|
-
case 'Sleep':
|
|
187
|
-
await new Promise((resolve) => setTimeout(resolve, command.duration));
|
|
188
|
-
this.captureFrame(true);
|
|
189
|
-
break;
|
|
190
|
-
case 'Screenshot':
|
|
191
|
-
this.captureFrame(true);
|
|
192
|
-
break;
|
|
193
|
-
case 'Copy':
|
|
194
|
-
this.context.clipboard = command.text;
|
|
195
|
-
break;
|
|
196
|
-
case 'Paste':
|
|
197
|
-
if (this.context.clipboard) {
|
|
198
|
-
await this.executeType(this.context.clipboard);
|
|
199
|
-
}
|
|
200
|
-
break;
|
|
201
|
-
case 'Hide':
|
|
202
|
-
case 'Show':
|
|
203
|
-
case 'Output':
|
|
204
|
-
case 'Require':
|
|
205
|
-
case 'Set':
|
|
206
|
-
case 'Source':
|
|
207
|
-
case 'Env':
|
|
208
|
-
case 'Comment':
|
|
209
|
-
case 'Shortcut':
|
|
210
|
-
case 'Wait':
|
|
211
|
-
// Not implemented in simulation mode
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Execute complete DVD script
|
|
217
|
-
*/
|
|
218
|
-
async execute(script) {
|
|
219
|
-
// Apply settings
|
|
220
|
-
for (const [key, value] of script.settings.entries()) {
|
|
221
|
-
if (key === 'Width')
|
|
222
|
-
this.context.width = parseInt(value, 10);
|
|
223
|
-
if (key === 'Height')
|
|
224
|
-
this.context.height = parseInt(value, 10);
|
|
225
|
-
if (key === 'FontSize')
|
|
226
|
-
this.context.fontSize = parseInt(value, 10);
|
|
227
|
-
if (key === 'Title')
|
|
228
|
-
this.context.title = value;
|
|
229
|
-
if (key === 'Template')
|
|
230
|
-
this.context.template = value;
|
|
231
|
-
}
|
|
232
|
-
// Capture initial frame
|
|
233
|
-
this.captureFrame(true);
|
|
234
|
-
// Execute commands
|
|
235
|
-
const actionCommands = script.commands.filter((cmd) => !['Output', 'Require', 'Set', 'Env'].includes(cmd.type));
|
|
236
|
-
for (let i = 0; i < actionCommands.length; i++) {
|
|
237
|
-
await this.executeCommand(actionCommands[i]);
|
|
238
|
-
this.options.onProgress?.(i + 1, actionCommands.length);
|
|
239
|
-
}
|
|
240
|
-
// Capture final frame without cursor
|
|
241
|
-
this.captureFrame(false);
|
|
242
|
-
return this.context.frames;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Get all captured frames
|
|
246
|
-
*/
|
|
247
|
-
getFrames() {
|
|
248
|
-
return this.context.frames;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Cleanup (no-op for simulation)
|
|
252
|
-
*/
|
|
253
|
-
async cleanup() {
|
|
254
|
-
// Nothing to clean up in simulation mode
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
exports.DVDExecutorV2 = DVDExecutorV2;
|
|
258
|
-
//# sourceMappingURL=dvd-executor-v2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dvd-executor-v2.js","sourceRoot":"","sources":["../src/dvd-executor-v2.ts"],"names":[],"mappings":"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"}
|
package/dist/dvd-executor.d.ts
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DVD Command Executor
|
|
3
|
-
* Executes real commands with typing effect and cursor
|
|
4
|
-
*/
|
|
5
|
-
import type { DVDScript } from './dvd-parser';
|
|
6
|
-
import { type TerminalState } from './terminal-renderer';
|
|
7
|
-
import { type Theme } from 'shellfie';
|
|
8
|
-
export interface TerminalFrame {
|
|
9
|
-
timestamp: number;
|
|
10
|
-
svg: string;
|
|
11
|
-
state: TerminalState;
|
|
12
|
-
}
|
|
13
|
-
export interface SimulatorContext {
|
|
14
|
-
lines: string[];
|
|
15
|
-
currentLine: string;
|
|
16
|
-
cursorX: number;
|
|
17
|
-
cursorY: number;
|
|
18
|
-
frames: TerminalFrame[];
|
|
19
|
-
clipboard: string;
|
|
20
|
-
startTime: number;
|
|
21
|
-
width: number;
|
|
22
|
-
height: number;
|
|
23
|
-
fontSize: number;
|
|
24
|
-
typingSpeed: number;
|
|
25
|
-
title?: string;
|
|
26
|
-
template?: 'macos' | 'windows' | 'minimal';
|
|
27
|
-
promptPrefix: string;
|
|
28
|
-
theme?: Theme;
|
|
29
|
-
cursorBlink: boolean;
|
|
30
|
-
selectionStart?: number;
|
|
31
|
-
selectionEnd?: number;
|
|
32
|
-
watermark?: string;
|
|
33
|
-
screenshotCounter: number;
|
|
34
|
-
outputPath?: string;
|
|
35
|
-
}
|
|
36
|
-
export interface DVDExecutorOptions {
|
|
37
|
-
width?: number;
|
|
38
|
-
height?: number;
|
|
39
|
-
fontSize?: number;
|
|
40
|
-
title?: string;
|
|
41
|
-
template?: 'macos' | 'windows' | 'minimal';
|
|
42
|
-
theme?: Theme;
|
|
43
|
-
onFrame?: (frame: TerminalFrame) => void;
|
|
44
|
-
onProgress?: (current: number, total: number, description?: string) => void;
|
|
45
|
-
}
|
|
46
|
-
export declare class DVDExecutor {
|
|
47
|
-
private context;
|
|
48
|
-
private options;
|
|
49
|
-
constructor(options?: DVDExecutorOptions);
|
|
50
|
-
/**
|
|
51
|
-
* Capture current terminal state as a frame
|
|
52
|
-
*/
|
|
53
|
-
private captureFrame;
|
|
54
|
-
/**
|
|
55
|
-
* Execute Type command - simulate typing character by character
|
|
56
|
-
*/
|
|
57
|
-
private executeType;
|
|
58
|
-
/**
|
|
59
|
-
* Strip ANSI escape codes to get actual string length
|
|
60
|
-
*/
|
|
61
|
-
private stripAnsi;
|
|
62
|
-
/**
|
|
63
|
-
* Execute Enter - run the command and capture streaming output
|
|
64
|
-
*/
|
|
65
|
-
private executeEnter;
|
|
66
|
-
/**
|
|
67
|
-
* Execute command with streaming output support
|
|
68
|
-
*/
|
|
69
|
-
private executeCommandStreaming;
|
|
70
|
-
/**
|
|
71
|
-
* Execute arrow keys
|
|
72
|
-
*/
|
|
73
|
-
private executeArrow;
|
|
74
|
-
/**
|
|
75
|
-
* Execute Screenshot - save current terminal state as static SVG using shellfie
|
|
76
|
-
*/
|
|
77
|
-
private executeScreenshot;
|
|
78
|
-
/**
|
|
79
|
-
* Execute Backspace - delete characters with animation
|
|
80
|
-
*/
|
|
81
|
-
private executeBackspace;
|
|
82
|
-
/**
|
|
83
|
-
* Execute keyboard shortcut with modifiers
|
|
84
|
-
*/
|
|
85
|
-
private executeShortcut;
|
|
86
|
-
/**
|
|
87
|
-
* Execute selection movement (Shift + Left/Right)
|
|
88
|
-
*/
|
|
89
|
-
private executeSelectionMove;
|
|
90
|
-
/**
|
|
91
|
-
* Execute word movement (Alt + Left/Right)
|
|
92
|
-
*/
|
|
93
|
-
private executeWordMove;
|
|
94
|
-
/**
|
|
95
|
-
* Execute word selection (Alt + Shift + Left/Right)
|
|
96
|
-
*/
|
|
97
|
-
private executeWordSelection;
|
|
98
|
-
/**
|
|
99
|
-
* Execute line navigation (Cmd/Ctrl + Left/Right)
|
|
100
|
-
*/
|
|
101
|
-
private executeLineNavigation;
|
|
102
|
-
/**
|
|
103
|
-
* Execute word deletion (Cmd/Ctrl + Backspace)
|
|
104
|
-
*/
|
|
105
|
-
private executeWordDelete;
|
|
106
|
-
/**
|
|
107
|
-
* Check if there's an active selection
|
|
108
|
-
*/
|
|
109
|
-
private hasSelection;
|
|
110
|
-
/**
|
|
111
|
-
* Get selected text
|
|
112
|
-
*/
|
|
113
|
-
private getSelectedText;
|
|
114
|
-
/**
|
|
115
|
-
* Clear selection
|
|
116
|
-
*/
|
|
117
|
-
private clearSelection;
|
|
118
|
-
/**
|
|
119
|
-
* Delete selected text and return true if selection was deleted
|
|
120
|
-
*/
|
|
121
|
-
private deleteSelection;
|
|
122
|
-
/**
|
|
123
|
-
* Find word boundary in the given direction
|
|
124
|
-
* Returns the position of the word boundary
|
|
125
|
-
*/
|
|
126
|
-
private findWordBoundary;
|
|
127
|
-
/**
|
|
128
|
-
* Execute a single command
|
|
129
|
-
*/
|
|
130
|
-
private executeCommand;
|
|
131
|
-
/**
|
|
132
|
-
* Execute complete DVD script
|
|
133
|
-
*/
|
|
134
|
-
execute(script: DVDScript): Promise<TerminalFrame[]>;
|
|
135
|
-
/**
|
|
136
|
-
* Get all captured frames
|
|
137
|
-
*/
|
|
138
|
-
getFrames(): TerminalFrame[];
|
|
139
|
-
/**
|
|
140
|
-
* Cleanup (no-op for simulation)
|
|
141
|
-
*/
|
|
142
|
-
cleanup(): Promise<void>;
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=dvd-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dvd-executor.d.ts","sourceRoot":"","sources":["../src/dvd-executor.ts"],"names":[],"mappings":"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"}
|