@fnndsc/chell 4.2.8 → 4.3.1
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/dist/builtins/fs/pull.d.ts +2 -2
- package/dist/builtins/fs/pull.js +10 -6
- package/dist/builtins/fs/pull.js.map +1 -1
- package/dist/builtins/help.js +12 -12
- package/dist/builtins/net/query.js +26 -6
- package/dist/builtins/net/query.js.map +1 -1
- package/dist/chell.d.ts +6 -12
- package/dist/chell.js +5 -1187
- package/dist/chell.js.map +1 -1
- package/dist/core/boot.d.ts +7 -0
- package/dist/core/boot.js +601 -0
- package/dist/core/boot.js.map +1 -0
- package/dist/core/dispatch.d.ts +48 -0
- package/dist/core/dispatch.js +544 -0
- package/dist/core/dispatch.js.map +1 -0
- package/dist/core/preprocess.d.ts +46 -0
- package/dist/core/preprocess.js +146 -0
- package/dist/core/preprocess.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/spinner.js +4 -2
- package/dist/lib/spinner.js.map +1 -1
- package/package.json +10 -6
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Command-line preprocessing: pure parsing of pipes, redirects and
|
|
3
|
+
* wildcard/shell-escape detection.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import { statSync } from 'fs';
|
|
9
|
+
import { Ok, Err, errorStack } from '@fnndsc/cumin';
|
|
10
|
+
import { args_tokenize } from '../lib/parser.js';
|
|
11
|
+
/** Commands whose arguments benefit from glob/wildcard expansion. */
|
|
12
|
+
const WILDCARD_COMMANDS = ['ls', 'rm', 'cat', 'mv', 'cp', 'du', 'tree'];
|
|
13
|
+
/**
|
|
14
|
+
* Determines if a command should have its arguments expanded for wildcards.
|
|
15
|
+
*
|
|
16
|
+
* @param command - The command name.
|
|
17
|
+
* @returns True if wildcards should be expanded.
|
|
18
|
+
*/
|
|
19
|
+
export function wildcards_expandCheck(command) {
|
|
20
|
+
return WILDCARD_COMMANDS.includes(command);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns true if the input line is a shell escape (starts with `!`).
|
|
24
|
+
*
|
|
25
|
+
* @param line - Trimmed input line.
|
|
26
|
+
*/
|
|
27
|
+
export function command_shellEscape_detect(line) {
|
|
28
|
+
return line.startsWith('!');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parses a command line for pipe operators and returns segments.
|
|
32
|
+
* Respects single and double quotes.
|
|
33
|
+
*
|
|
34
|
+
* @param line - The full command line.
|
|
35
|
+
* @returns An array of command segments.
|
|
36
|
+
*/
|
|
37
|
+
export function pipes_parse(line) {
|
|
38
|
+
const segments = [];
|
|
39
|
+
let currentSegment = '';
|
|
40
|
+
let inSingleQuote = false;
|
|
41
|
+
let inDoubleQuote = false;
|
|
42
|
+
for (let i = 0; i < line.length; i++) {
|
|
43
|
+
const char = line[i];
|
|
44
|
+
if (char === "'" && !inDoubleQuote) {
|
|
45
|
+
inSingleQuote = !inSingleQuote;
|
|
46
|
+
currentSegment += char;
|
|
47
|
+
}
|
|
48
|
+
else if (char === '"' && !inSingleQuote) {
|
|
49
|
+
inDoubleQuote = !inDoubleQuote;
|
|
50
|
+
currentSegment += char;
|
|
51
|
+
}
|
|
52
|
+
else if (char === '|' && !inSingleQuote && !inDoubleQuote) {
|
|
53
|
+
segments.push(currentSegment.trim());
|
|
54
|
+
currentSegment = '';
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
currentSegment += char;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (currentSegment.trim()) {
|
|
61
|
+
segments.push(currentSegment.trim());
|
|
62
|
+
}
|
|
63
|
+
return segments;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parses a command line for output redirection operators (> or >>).
|
|
67
|
+
* Respects single and double quotes.
|
|
68
|
+
*
|
|
69
|
+
* @param line - The full command line.
|
|
70
|
+
* @returns An object with the command and redirect info, or null if no redirection.
|
|
71
|
+
*/
|
|
72
|
+
export function redirect_parse(line) {
|
|
73
|
+
let inSingleQuote = false;
|
|
74
|
+
let inDoubleQuote = false;
|
|
75
|
+
for (let i = 0; i < line.length; i++) {
|
|
76
|
+
const char = line[i];
|
|
77
|
+
if (char === "'" && !inDoubleQuote) {
|
|
78
|
+
inSingleQuote = !inSingleQuote;
|
|
79
|
+
}
|
|
80
|
+
else if (char === '"' && !inSingleQuote) {
|
|
81
|
+
inDoubleQuote = !inDoubleQuote;
|
|
82
|
+
}
|
|
83
|
+
else if (!inSingleQuote && !inDoubleQuote) {
|
|
84
|
+
// Check for >>
|
|
85
|
+
if (i < line.length - 1 && line[i] === '>' && line[i + 1] === '>') {
|
|
86
|
+
const command = line.substring(0, i).trim();
|
|
87
|
+
const filePath = line.substring(i + 2).trim();
|
|
88
|
+
return { command, operator: '>>', filePath };
|
|
89
|
+
}
|
|
90
|
+
// Check for >
|
|
91
|
+
else if (line[i] === '>') {
|
|
92
|
+
const command = line.substring(0, i).trim();
|
|
93
|
+
const filePath = line.substring(i + 1).trim();
|
|
94
|
+
return { command, operator: '>', filePath };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolves the final redirect target path. If the target is an existing directory
|
|
102
|
+
* and the source command is `cat <file>`, resolves to `<dir>/<basename>`.
|
|
103
|
+
* Returns Err (with message on errorStack) when the filename cannot be determined.
|
|
104
|
+
*
|
|
105
|
+
* @param filePath - The redirect target path as written by the user.
|
|
106
|
+
* @param commandLine - The command whose output is being redirected.
|
|
107
|
+
* @returns Ok(resolved path) or Err on failure.
|
|
108
|
+
*/
|
|
109
|
+
export function redirectTarget_resolve(filePath, commandLine) {
|
|
110
|
+
try {
|
|
111
|
+
const stats = statSync(filePath);
|
|
112
|
+
if (!stats.isDirectory()) {
|
|
113
|
+
return Ok(filePath);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const nodeErr = err;
|
|
118
|
+
if (nodeErr.code === 'ENOENT') {
|
|
119
|
+
return Ok(filePath);
|
|
120
|
+
}
|
|
121
|
+
errorStack.stack_push('error', `Redirect: filesystem error for '${filePath}': ${String(err)}`);
|
|
122
|
+
return Err();
|
|
123
|
+
}
|
|
124
|
+
const tokens = args_tokenize(commandLine);
|
|
125
|
+
if (tokens.length === 0) {
|
|
126
|
+
errorStack.stack_push('error', `Redirect target '${filePath}' is a directory and no source command was provided.`);
|
|
127
|
+
return Err();
|
|
128
|
+
}
|
|
129
|
+
const [command, ...args] = tokens;
|
|
130
|
+
if (command !== 'cat') {
|
|
131
|
+
errorStack.stack_push('error', `Redirect target '${filePath}' is a directory; cannot infer filename for command '${command}'.`);
|
|
132
|
+
return Err();
|
|
133
|
+
}
|
|
134
|
+
const sourceArgs = args.filter((arg) => arg !== '--binary');
|
|
135
|
+
if (sourceArgs.length === 0) {
|
|
136
|
+
errorStack.stack_push('error', `Redirect target '${filePath}' is a directory; no source file provided to 'cat'.`);
|
|
137
|
+
return Err();
|
|
138
|
+
}
|
|
139
|
+
if (sourceArgs.length > 1) {
|
|
140
|
+
errorStack.stack_push('error', `Redirect target '${filePath}' is a directory; 'cat' with multiple files cannot choose a single output name.`);
|
|
141
|
+
return Err();
|
|
142
|
+
}
|
|
143
|
+
const sourceName = path.basename(sourceArgs[0]);
|
|
144
|
+
return Ok(path.join(filePath, sourceName));
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=preprocess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocess.js","sourceRoot":"","sources":["../../src/core/preprocess.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ process.emitWarning = function (warning, ...args) {
|
|
|
18
18
|
};
|
|
19
19
|
import { fileURLToPath } from 'url';
|
|
20
20
|
import { realpathSync } from 'fs';
|
|
21
|
-
import { chell_start } from './
|
|
21
|
+
import { chell_start } from './core/boot.js';
|
|
22
22
|
const currentFile = fileURLToPath(import.meta.url);
|
|
23
23
|
// Compare real paths to handle symlinks (e.g. global install)
|
|
24
24
|
let isMain = false;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,iEAAiE;AACjE,iFAAiF;AACjF,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;AAChD,OAAO,CAAC,WAAW,GAAG,UAAU,OAAuB,EAAE,GAAG,IAAW;IACrE,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAChE,CAAC;QACD,OAAO;IACT,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,iEAAiE;AACjE,iFAAiF;AACjF,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;AAChD,OAAO,CAAC,WAAW,GAAG,UAAU,OAAuB,EAAE,GAAG,IAAW;IACrE,IACE,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAChE,CAAC;QACD,OAAO;IACT,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,GAAW,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE3D,8DAA8D;AAC9D,IAAI,MAAM,GAAY,KAAK,CAAC;AAC5B,IAAI,CAAC;IACH,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAAC,OAAO,CAAU,EAAE,CAAC;IACpB,qBAAqB;AACvB,CAAC;AAED,IAAI,MAAM,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/lib/spinner.js
CHANGED
|
@@ -41,8 +41,10 @@ export class Spinner {
|
|
|
41
41
|
const elapsedSeconds = ((Date.now() - this.startTime) / 1000).toFixed(1);
|
|
42
42
|
displayMessage = `${this.message} (${elapsedSeconds}s)`;
|
|
43
43
|
}
|
|
44
|
-
// Note: We use chalk.gray for the message to match the existing "Fetching..." style
|
|
45
|
-
|
|
44
|
+
// Note: We use chalk.gray for the message to match the existing "Fetching..." style.
|
|
45
|
+
// \x1b[K erases to end-of-line so a shorter message never leaves the
|
|
46
|
+
// tail of a longer previous one behind.
|
|
47
|
+
process.stdout.write(`\r\x1b[K${chalk.bgBlack.cyanBright.bold(frame)} ${chalk.gray(displayMessage)}`);
|
|
46
48
|
}, 80);
|
|
47
49
|
}
|
|
48
50
|
stop(clearLine = true) {
|
package/dist/lib/spinner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,QAAQ,GAA0B,IAAI,CAAC;IACvC,OAAO,GAAW,EAAE,CAAC;IACrB,MAAM,GAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5D,UAAU,GAAW,CAAC,CAAC;IACvB,aAAa,GAAY,KAAK,CAAC;IAC/B,SAAS,GAAW,CAAC,CAAC;IACtB,UAAU,GAAY,KAAK,CAAC;IAEpC,YAAY,iBAAyB,YAAY;QAC/C,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,OAAgB,EAAE,aAAsB,KAAK;QACxD,2DAA2D;QAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,4BAA4B;QAC3C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5B,cAAc;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,MAAM,KAAK,GAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChG,IAAI,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC;YAE1C,wBAAwB;YACxB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,cAAc,GAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjF,cAAc,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,cAAc,IAAI,CAAC;YAC1D,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnndsc/chell",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.1",
|
|
4
4
|
"description": "ChELL Executes Layered Logic - Interactive ChRIS REPL Shell",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,8 +20,12 @@
|
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc && chmod +x ./dist/index.js",
|
|
23
|
+
"exemplars:build": "tsc -p exemplars/ts",
|
|
23
24
|
"start": "node dist/index.js",
|
|
24
|
-
"test": "NODE_OPTIONS='--experimental-vm-modules' jest --forceExit"
|
|
25
|
+
"test": "NODE_OPTIONS='--experimental-vm-modules --disable-warning=ExperimentalWarning' jest --forceExit --coverage",
|
|
26
|
+
"bundle": "node scripts/bundle.mjs",
|
|
27
|
+
"pkg:binaries": "pkg build/chell.cjs -t node22-linux-x64 -o build/bin/chell-linux-x64 && pkg build/chell.cjs -t node22-linux-arm64 -o build/bin/chell-linux-arm64 && pkg build/chell.cjs -t node22-macos-x64 -o build/bin/chell-macos-x64 && pkg build/chell.cjs -t node22-macos-arm64 -o build/bin/chell-macos-arm64",
|
|
28
|
+
"binaries": "npm run bundle && npm run pkg:binaries"
|
|
25
29
|
},
|
|
26
30
|
"keywords": [
|
|
27
31
|
"chris",
|
|
@@ -33,9 +37,9 @@
|
|
|
33
37
|
"author": "FNNDSC <dev@babyMRI.org>",
|
|
34
38
|
"license": "MIT",
|
|
35
39
|
"dependencies": {
|
|
36
|
-
"@fnndsc/chili": "^3.
|
|
37
|
-
"@fnndsc/cumin": "^3.
|
|
38
|
-
"@fnndsc/salsa": "^3.2.
|
|
40
|
+
"@fnndsc/chili": "^3.3.0",
|
|
41
|
+
"@fnndsc/cumin": "^3.4.0",
|
|
42
|
+
"@fnndsc/salsa": "^3.2.5",
|
|
39
43
|
"chalk": "^4.1.2",
|
|
40
44
|
"cli-progress": "^3.12.0",
|
|
41
45
|
"commander": "^12.1.0",
|
|
@@ -51,7 +55,7 @@
|
|
|
51
55
|
"@types/jest": "^30.0.0",
|
|
52
56
|
"@types/js-yaml": "^4.0.5",
|
|
53
57
|
"@types/minimatch": "^5.1.2",
|
|
54
|
-
"@types/node": "^
|
|
58
|
+
"@types/node": "^22.0.0",
|
|
55
59
|
"@types/ws": "^8.18.1",
|
|
56
60
|
"jest": "^30.2.0",
|
|
57
61
|
"ts-jest": "^29.4.5",
|