recker 1.0.8 → 1.0.10-alpha.646ad5f
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/cli/handler.d.ts.map +1 -1
- package/dist/cli/handler.js +17 -3
- package/dist/cli/index.js +81 -2
- package/dist/cli/tui/shell.d.ts +26 -0
- package/dist/cli/tui/shell.d.ts.map +1 -1
- package/dist/cli/tui/shell.js +1226 -151
- package/dist/utils/whois.d.ts.map +1 -1
- package/dist/utils/whois.js +17 -2
- package/package.json +4 -7
- package/dist/plugins/rate-limit.d.ts +0 -8
- package/dist/plugins/rate-limit.d.ts.map +0 -1
- package/dist/plugins/rate-limit.js +0 -57
- package/dist/utils/logger.d.ts +0 -33
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -160
- package/dist/utils/status-codes.d.ts +0 -84
- package/dist/utils/status-codes.d.ts.map +0 -1
- package/dist/utils/status-codes.js +0 -204
- package/dist/utils/task-pool.d.ts +0 -38
- package/dist/utils/task-pool.js +0 -104
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/cli/handler.ts"],"names":[],"mappings":"AAwBA,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/cli/handler.ts"],"names":[],"mappings":"AAwBA,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,iBAqH1D"}
|
package/dist/cli/handler.js
CHANGED
|
@@ -39,9 +39,23 @@ export async function handleRequest(options) {
|
|
|
39
39
|
}
|
|
40
40
|
let requestBody = undefined;
|
|
41
41
|
if (options.body) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
options.headers['Content-Type']
|
|
42
|
+
if (typeof options.body === 'string') {
|
|
43
|
+
requestBody = options.body;
|
|
44
|
+
if (!options.headers['Content-Type'] && !options.headers['content-type']) {
|
|
45
|
+
try {
|
|
46
|
+
JSON.parse(options.body);
|
|
47
|
+
options.headers['Content-Type'] = 'application/json';
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
options.headers['Content-Type'] = 'text/plain';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
requestBody = JSON.stringify(options.body);
|
|
56
|
+
if (!options.headers['Content-Type'] && !options.headers['content-type']) {
|
|
57
|
+
options.headers['Content-Type'] = 'application/json';
|
|
58
|
+
}
|
|
45
59
|
}
|
|
46
60
|
}
|
|
47
61
|
const response = await client.request(options.url, {
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,68 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from 'commander';
|
|
3
|
+
import { promises as fs } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
3
5
|
import pc from '../utils/colors.js';
|
|
6
|
+
async function readStdin() {
|
|
7
|
+
if (process.stdin.isTTY) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return new Promise((resolve) => {
|
|
11
|
+
let data = '';
|
|
12
|
+
const timeout = setTimeout(() => {
|
|
13
|
+
resolve(null);
|
|
14
|
+
}, 100);
|
|
15
|
+
process.stdin.setEncoding('utf8');
|
|
16
|
+
process.stdin.on('data', (chunk) => {
|
|
17
|
+
clearTimeout(timeout);
|
|
18
|
+
data += chunk;
|
|
19
|
+
});
|
|
20
|
+
process.stdin.on('end', () => {
|
|
21
|
+
clearTimeout(timeout);
|
|
22
|
+
resolve(data.trim() || null);
|
|
23
|
+
});
|
|
24
|
+
process.stdin.on('error', () => {
|
|
25
|
+
clearTimeout(timeout);
|
|
26
|
+
resolve(null);
|
|
27
|
+
});
|
|
28
|
+
process.stdin.resume();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async function loadEnvFile(filePath) {
|
|
32
|
+
const envPath = typeof filePath === 'string' ? filePath : join(process.cwd(), '.env');
|
|
33
|
+
const envVars = {};
|
|
34
|
+
try {
|
|
35
|
+
const content = await fs.readFile(envPath, 'utf-8');
|
|
36
|
+
const lines = content.split('\n');
|
|
37
|
+
for (const line of lines) {
|
|
38
|
+
const trimmed = line.trim();
|
|
39
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
40
|
+
continue;
|
|
41
|
+
const match = trimmed.match(/^([^=]+)=(.*)$/);
|
|
42
|
+
if (match) {
|
|
43
|
+
const [, key, value] = match;
|
|
44
|
+
const cleanKey = key.trim();
|
|
45
|
+
let cleanValue = value.trim();
|
|
46
|
+
if ((cleanValue.startsWith('"') && cleanValue.endsWith('"')) ||
|
|
47
|
+
(cleanValue.startsWith("'") && cleanValue.endsWith("'"))) {
|
|
48
|
+
cleanValue = cleanValue.slice(1, -1);
|
|
49
|
+
}
|
|
50
|
+
envVars[cleanKey] = cleanValue;
|
|
51
|
+
process.env[cleanKey] = cleanValue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
console.log(pc.gray(`Loaded ${Object.keys(envVars).length} variables from ${envPath}`));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error.code === 'ENOENT') {
|
|
58
|
+
console.log(pc.yellow(`Warning: No .env file found at ${envPath}`));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log(pc.red(`Error loading .env: ${error.message}`));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return envVars;
|
|
65
|
+
}
|
|
4
66
|
async function main() {
|
|
5
67
|
const { handleRequest } = await import('./handler.js');
|
|
6
68
|
const { resolvePreset } = await import('./presets.js');
|
|
@@ -51,7 +113,7 @@ async function main() {
|
|
|
51
113
|
}
|
|
52
114
|
if (!url) {
|
|
53
115
|
url = arg;
|
|
54
|
-
if (!hasPreset && !url.startsWith('http') && !url.startsWith('ws') && !url.startsWith('udp')) {
|
|
116
|
+
if (!hasPreset && !url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('ws://') && !url.startsWith('wss://') && !url.startsWith('udp://')) {
|
|
55
117
|
url = `https://${url}`;
|
|
56
118
|
}
|
|
57
119
|
}
|
|
@@ -66,6 +128,7 @@ async function main() {
|
|
|
66
128
|
.argument('[args...]', 'URL, Method, Headers (Key:Value), Data (key=value)')
|
|
67
129
|
.option('-v, --verbose', 'Show full request/response details')
|
|
68
130
|
.option('-j, --json', 'Force JSON content-type')
|
|
131
|
+
.option('-e, --env [path]', 'Load .env file from current directory or specified path')
|
|
69
132
|
.addHelpText('after', `
|
|
70
133
|
${pc.bold(pc.yellow('Examples:'))}
|
|
71
134
|
${pc.green('$ rek httpbin.org/json')}
|
|
@@ -81,6 +144,10 @@ ${pc.bold(pc.yellow('Available Presets:'))}
|
|
|
81
144
|
program.help();
|
|
82
145
|
return;
|
|
83
146
|
}
|
|
147
|
+
if (options.env !== undefined) {
|
|
148
|
+
await loadEnvFile(options.env);
|
|
149
|
+
}
|
|
150
|
+
const stdinData = await readStdin();
|
|
84
151
|
let argsToParse = args;
|
|
85
152
|
let presetConfig = undefined;
|
|
86
153
|
if (args[0].startsWith('@')) {
|
|
@@ -116,11 +183,23 @@ ${pc.bold(pc.yellow('Available Presets:'))}
|
|
|
116
183
|
return;
|
|
117
184
|
}
|
|
118
185
|
try {
|
|
186
|
+
let body = undefined;
|
|
187
|
+
if (stdinData) {
|
|
188
|
+
try {
|
|
189
|
+
body = JSON.parse(stdinData);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
body = stdinData;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (Object.keys(data).length > 0) {
|
|
196
|
+
body = data;
|
|
197
|
+
}
|
|
119
198
|
await handleRequest({
|
|
120
199
|
method,
|
|
121
200
|
url,
|
|
122
201
|
headers,
|
|
123
|
-
body
|
|
202
|
+
body,
|
|
124
203
|
verbose: options.verbose,
|
|
125
204
|
presetConfig
|
|
126
205
|
});
|
package/dist/cli/tui/shell.d.ts
CHANGED
|
@@ -5,10 +5,16 @@ export declare class RekShell {
|
|
|
5
5
|
private baseUrl;
|
|
6
6
|
private lastResponse;
|
|
7
7
|
private variables;
|
|
8
|
+
private envVars;
|
|
9
|
+
private envLoaded;
|
|
8
10
|
private initialized;
|
|
11
|
+
private currentDoc;
|
|
12
|
+
private currentDocUrl;
|
|
9
13
|
constructor();
|
|
10
14
|
private ensureInitialized;
|
|
11
15
|
private getPrompt;
|
|
16
|
+
private getBaseDomain;
|
|
17
|
+
private getRootDomain;
|
|
12
18
|
private completer;
|
|
13
19
|
start(): Promise<void>;
|
|
14
20
|
private prompt;
|
|
@@ -19,6 +25,8 @@ export declare class RekShell {
|
|
|
19
25
|
private parseLine;
|
|
20
26
|
private setBaseUrl;
|
|
21
27
|
private setVariable;
|
|
28
|
+
private showVars;
|
|
29
|
+
loadEnvFile(filePath?: string): Promise<void>;
|
|
22
30
|
private resolveVariables;
|
|
23
31
|
private resolveUrl;
|
|
24
32
|
private executeRequest;
|
|
@@ -27,6 +35,24 @@ export declare class RekShell {
|
|
|
27
35
|
private runDNS;
|
|
28
36
|
private runRDAP;
|
|
29
37
|
private runPing;
|
|
38
|
+
private runScrap;
|
|
39
|
+
private runSelect;
|
|
40
|
+
private runSelectText;
|
|
41
|
+
private runSelectAttr;
|
|
42
|
+
private runSelectHtml;
|
|
43
|
+
private runSelectLinks;
|
|
44
|
+
private runSelectImages;
|
|
45
|
+
private runSelectScripts;
|
|
46
|
+
private runSelectCSS;
|
|
47
|
+
private runSelectSourcemaps;
|
|
48
|
+
private runUnmap;
|
|
49
|
+
private runUnmapView;
|
|
50
|
+
private runUnmapSave;
|
|
51
|
+
private runBeautify;
|
|
52
|
+
private beautifyJS;
|
|
53
|
+
private beautifyCSS;
|
|
54
|
+
private runBeautifySave;
|
|
55
|
+
private runSelectTable;
|
|
30
56
|
private printHelp;
|
|
31
57
|
}
|
|
32
58
|
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/shell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/shell.ts"],"names":[],"mappings":"AAmCA,qBAAa,QAAQ;IACnB,OAAO,CAAC,EAAE,CAAsB;IAChC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,aAAa,CAAc;;YAWrB,iBAAiB;IAe/B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,SAAS;IAaJ,KAAK;IA8BlB,OAAO,CAAC,MAAM;YAKA,aAAa;YAmKb,kBAAkB;YAkBlB,SAAS;YAkBT,WAAW;IA0DzB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,QAAQ;IAoCV,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM;IA6CnC,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,UAAU;YAeJ,cAAc;YAyEd,QAAQ;YA8GR,MAAM;YA2DN,MAAM;YA2EN,OAAO;YA+DP,OAAO;YA0CP,QAAQ;YAoER,SAAS;YAsCT,aAAa;YA8Bb,aAAa;YA+Bb,aAAa;YA6Bb,cAAc;YAkCd,eAAe;YA+Ef,gBAAgB;YAmEhB,YAAY;YAiEZ,mBAAmB;YAsFnB,QAAQ;YA0FR,YAAY;YAoCZ,YAAY;YA6CZ,WAAW;IA6CzB,OAAO,CAAC,UAAU;IA4GlB,OAAO,CAAC,WAAW;YAgFL,eAAe;YAkBf,cAAc;IA8C5B,OAAO,CAAC,SAAS;CAkElB"}
|