procsi 0.4.1 → 0.6.0
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/commands/on.d.ts.map +1 -1
- package/dist/cli/commands/on.js +1 -0
- package/dist/cli/commands/on.js.map +1 -1
- package/dist/cli/commands/request.d.ts.map +1 -1
- package/dist/cli/commands/request.js +97 -2
- package/dist/cli/commands/request.js.map +1 -1
- package/dist/cli/commands/requests.d.ts +25 -0
- package/dist/cli/commands/requests.d.ts.map +1 -1
- package/dist/cli/commands/requests.js +35 -4
- package/dist/cli/commands/requests.js.map +1 -1
- package/dist/cli/formatters/detail.d.ts.map +1 -1
- package/dist/cli/formatters/detail.js +6 -0
- package/dist/cli/formatters/detail.js.map +1 -1
- package/dist/cli/formatters/table.d.ts.map +1 -1
- package/dist/cli/formatters/table.js +11 -1
- package/dist/cli/formatters/table.js.map +1 -1
- package/dist/cli/tui/App.d.ts.map +1 -1
- package/dist/cli/tui/App.js +81 -28
- package/dist/cli/tui/App.js.map +1 -1
- package/dist/cli/tui/components/AccordionPanel.d.ts.map +1 -1
- package/dist/cli/tui/components/AccordionPanel.js +2 -1
- package/dist/cli/tui/components/AccordionPanel.js.map +1 -1
- package/dist/cli/tui/components/FilterBar.d.ts +10 -2
- package/dist/cli/tui/components/FilterBar.d.ts.map +1 -1
- package/dist/cli/tui/components/FilterBar.js +100 -12
- package/dist/cli/tui/components/FilterBar.js.map +1 -1
- package/dist/cli/tui/components/HelpModal.d.ts +6 -2
- package/dist/cli/tui/components/HelpModal.d.ts.map +1 -1
- package/dist/cli/tui/components/HelpModal.js +19 -46
- package/dist/cli/tui/components/HelpModal.js.map +1 -1
- package/dist/cli/tui/components/RequestListItem.d.ts +8 -0
- package/dist/cli/tui/components/RequestListItem.d.ts.map +1 -1
- package/dist/cli/tui/components/RequestListItem.js +14 -2
- package/dist/cli/tui/components/RequestListItem.js.map +1 -1
- package/dist/cli/tui/components/StatusBar.d.ts +2 -9
- package/dist/cli/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/tui/components/StatusBar.js +7 -13
- package/dist/cli/tui/components/StatusBar.js.map +1 -1
- package/dist/cli/tui/hooks/useExport.d.ts +10 -2
- package/dist/cli/tui/hooks/useExport.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useExport.js +33 -8
- package/dist/cli/tui/hooks/useExport.js.map +1 -1
- package/dist/cli/tui/hooks/useRequests.d.ts +4 -1
- package/dist/cli/tui/hooks/useRequests.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useRequests.js +36 -9
- package/dist/cli/tui/hooks/useRequests.js.map +1 -1
- package/dist/cli/tui/hooks/useStdoutDimensions.d.ts +4 -0
- package/dist/cli/tui/hooks/useStdoutDimensions.d.ts.map +1 -1
- package/dist/cli/tui/hooks/useStdoutDimensions.js +20 -10
- package/dist/cli/tui/hooks/useStdoutDimensions.js.map +1 -1
- package/dist/cli/tui/utils/curl.d.ts.map +1 -1
- package/dist/cli/tui/utils/curl.js +6 -13
- package/dist/cli/tui/utils/curl.js.map +1 -1
- package/dist/cli/tui/utils/export-shared.d.ts +9 -0
- package/dist/cli/tui/utils/export-shared.d.ts.map +1 -0
- package/dist/cli/tui/utils/export-shared.js +15 -0
- package/dist/cli/tui/utils/export-shared.js.map +1 -0
- package/dist/cli/tui/utils/fetch.d.ts +9 -0
- package/dist/cli/tui/utils/fetch.d.ts.map +1 -0
- package/dist/cli/tui/utils/fetch.js +77 -0
- package/dist/cli/tui/utils/fetch.js.map +1 -0
- package/dist/cli/tui/utils/filters.d.ts.map +1 -1
- package/dist/cli/tui/utils/filters.js +1 -0
- package/dist/cli/tui/utils/filters.js.map +1 -1
- package/dist/cli/tui/utils/httpie.d.ts +9 -0
- package/dist/cli/tui/utils/httpie.d.ts.map +1 -0
- package/dist/cli/tui/utils/httpie.js +78 -0
- package/dist/cli/tui/utils/httpie.js.map +1 -0
- package/dist/cli/tui/utils/python-requests.d.ts +19 -0
- package/dist/cli/tui/utils/python-requests.d.ts.map +1 -0
- package/dist/cli/tui/utils/python-requests.js +101 -0
- package/dist/cli/tui/utils/python-requests.js.map +1 -0
- package/dist/cli/tui/utils/terminal-size.d.ts +20 -0
- package/dist/cli/tui/utils/terminal-size.d.ts.map +1 -0
- package/dist/cli/tui/utils/terminal-size.js +100 -0
- package/dist/cli/tui/utils/terminal-size.js.map +1 -0
- package/dist/daemon/control.d.ts +3 -0
- package/dist/daemon/control.d.ts.map +1 -1
- package/dist/daemon/control.js +199 -6
- package/dist/daemon/control.js.map +1 -1
- package/dist/daemon/index.js +7 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/procsi-client.d.ts.map +1 -1
- package/dist/daemon/procsi-client.js +1 -0
- package/dist/daemon/procsi-client.js.map +1 -1
- package/dist/daemon/proxy.d.ts +3 -0
- package/dist/daemon/proxy.d.ts.map +1 -1
- package/dist/daemon/proxy.js +19 -6
- package/dist/daemon/proxy.js.map +1 -1
- package/dist/daemon/replay-tracker.d.ts +11 -0
- package/dist/daemon/replay-tracker.d.ts.map +1 -0
- package/dist/daemon/replay-tracker.js +47 -0
- package/dist/daemon/replay-tracker.js.map +1 -0
- package/dist/daemon/replay.d.ts +20 -0
- package/dist/daemon/replay.d.ts.map +1 -0
- package/dist/daemon/replay.js +113 -0
- package/dist/daemon/replay.js.map +1 -0
- package/dist/daemon/storage.d.ts +16 -2
- package/dist/daemon/storage.d.ts.map +1 -1
- package/dist/daemon/storage.js +104 -7
- package/dist/daemon/storage.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +183 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/body-search.d.ts +28 -0
- package/dist/shared/body-search.d.ts.map +1 -0
- package/dist/shared/body-search.js +64 -0
- package/dist/shared/body-search.js.map +1 -0
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/control-client.d.ts +23 -2
- package/dist/shared/control-client.d.ts.map +1 -1
- package/dist/shared/control-client.js +15 -2
- package/dist/shared/control-client.js.map +1 -1
- package/dist/shared/regex-filter.d.ts +35 -0
- package/dist/shared/regex-filter.d.ts.map +1 -0
- package/dist/shared/regex-filter.js +86 -0
- package/dist/shared/regex-filter.js.map +1 -0
- package/dist/shared/types.d.ts +13 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/skills/procsi/SKILL.md +9 -4
|
@@ -2,18 +2,26 @@
|
|
|
2
2
|
* Hook for exporting captured requests to various formats.
|
|
3
3
|
*/
|
|
4
4
|
import type { CapturedRequest } from "../../../shared/types.js";
|
|
5
|
+
export type ExportFormat = "curl" | "fetch" | "python" | "httpie";
|
|
5
6
|
export interface ExportResult {
|
|
6
7
|
success: boolean;
|
|
7
8
|
message: string;
|
|
8
9
|
}
|
|
9
10
|
interface UseExportResult {
|
|
10
|
-
|
|
11
|
+
exportFormat: (request: CapturedRequest, format: ExportFormat) => Promise<ExportResult>;
|
|
11
12
|
exportHar: (requests: CapturedRequest[], filename?: string) => ExportResult;
|
|
12
13
|
}
|
|
14
|
+
/** Human-readable labels for status messages. */
|
|
15
|
+
export declare const FORMAT_LABELS: Record<ExportFormat, string>;
|
|
13
16
|
/**
|
|
14
|
-
* Generate
|
|
17
|
+
* Generate an export string for a request in the given format and copy to clipboard.
|
|
15
18
|
* Extracted as standalone function for testability.
|
|
16
19
|
*/
|
|
20
|
+
export declare function exportFormatToClipboard(request: CapturedRequest, format: ExportFormat): Promise<ExportResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Generate curl command for a request and copy to clipboard.
|
|
23
|
+
* Kept for backwards compatibility with existing tests.
|
|
24
|
+
*/
|
|
17
25
|
export declare function exportCurlToClipboard(request: CapturedRequest): Promise<ExportResult>;
|
|
18
26
|
/**
|
|
19
27
|
* Export requests to HAR file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useExport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useExport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAQhE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC;CAC7E;AAUD,iDAAiD;AACjD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKtD,CAAC;AAEF;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,YAAY,CAAC,CAevB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAE3F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAkB5F;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,eAAe,CAe3C"}
|
|
@@ -5,28 +5,53 @@ import { useCallback } from "react";
|
|
|
5
5
|
import * as fs from "node:fs";
|
|
6
6
|
import * as path from "node:path";
|
|
7
7
|
import { generateCurl } from "../utils/curl.js";
|
|
8
|
+
import { generateFetch } from "../utils/fetch.js";
|
|
9
|
+
import { generatePythonRequests } from "../utils/python-requests.js";
|
|
10
|
+
import { generateHttpie } from "../utils/httpie.js";
|
|
8
11
|
import { generateHarString } from "../utils/har.js";
|
|
9
12
|
import { copyToClipboard } from "../utils/clipboard.js";
|
|
13
|
+
/** Maps each format to its generator function. */
|
|
14
|
+
const FORMAT_GENERATORS = {
|
|
15
|
+
curl: generateCurl,
|
|
16
|
+
fetch: generateFetch,
|
|
17
|
+
python: generatePythonRequests,
|
|
18
|
+
httpie: generateHttpie,
|
|
19
|
+
};
|
|
20
|
+
/** Human-readable labels for status messages. */
|
|
21
|
+
export const FORMAT_LABELS = {
|
|
22
|
+
curl: "cURL",
|
|
23
|
+
fetch: "Fetch",
|
|
24
|
+
python: "Python",
|
|
25
|
+
httpie: "HTTPie",
|
|
26
|
+
};
|
|
10
27
|
/**
|
|
11
|
-
* Generate
|
|
28
|
+
* Generate an export string for a request in the given format and copy to clipboard.
|
|
12
29
|
* Extracted as standalone function for testability.
|
|
13
30
|
*/
|
|
14
|
-
export async function
|
|
31
|
+
export async function exportFormatToClipboard(request, format) {
|
|
15
32
|
try {
|
|
16
|
-
const
|
|
17
|
-
|
|
33
|
+
const generator = FORMAT_GENERATORS[format];
|
|
34
|
+
const output = generator(request);
|
|
35
|
+
await copyToClipboard(output);
|
|
18
36
|
return {
|
|
19
37
|
success: true,
|
|
20
|
-
message:
|
|
38
|
+
message: `${FORMAT_LABELS[format]} copied to clipboard`,
|
|
21
39
|
};
|
|
22
40
|
}
|
|
23
41
|
catch (err) {
|
|
24
42
|
return {
|
|
25
43
|
success: false,
|
|
26
|
-
message: err instanceof Error ? err.message :
|
|
44
|
+
message: err instanceof Error ? err.message : `Failed to copy ${FORMAT_LABELS[format]}`,
|
|
27
45
|
};
|
|
28
46
|
}
|
|
29
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Generate curl command for a request and copy to clipboard.
|
|
50
|
+
* Kept for backwards compatibility with existing tests.
|
|
51
|
+
*/
|
|
52
|
+
export async function exportCurlToClipboard(request) {
|
|
53
|
+
return exportFormatToClipboard(request, "curl");
|
|
54
|
+
}
|
|
30
55
|
/**
|
|
31
56
|
* Export requests to HAR file.
|
|
32
57
|
* Extracted as standalone function for testability.
|
|
@@ -54,10 +79,10 @@ export function exportHarToFile(requests, filename) {
|
|
|
54
79
|
* Wraps standalone functions with useCallback for React optimisation.
|
|
55
80
|
*/
|
|
56
81
|
export function useExport() {
|
|
57
|
-
const
|
|
82
|
+
const exportFormatFn = useCallback((request, format) => exportFormatToClipboard(request, format), []);
|
|
58
83
|
const exportHar = useCallback((requests, filename) => exportHarToFile(requests, filename), []);
|
|
59
84
|
return {
|
|
60
|
-
|
|
85
|
+
exportFormat: exportFormatFn,
|
|
61
86
|
exportHar,
|
|
62
87
|
};
|
|
63
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExport.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useExport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useExport.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useExport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hook for fetching and polling captured requests from the daemon.
|
|
3
3
|
*/
|
|
4
|
-
import type { CapturedRequest, CapturedRequestSummary, RequestFilter } from "../../../shared/types.js";
|
|
4
|
+
import type { BodySearchOptions, CapturedRequest, CapturedRequestSummary, RequestFilter } from "../../../shared/types.js";
|
|
5
5
|
interface UseRequestsOptions {
|
|
6
6
|
pollInterval?: number;
|
|
7
7
|
filter?: RequestFilter;
|
|
8
|
+
bodySearch?: BodySearchOptions;
|
|
8
9
|
projectRoot?: string;
|
|
9
10
|
}
|
|
10
11
|
interface UseRequestsResult {
|
|
@@ -17,6 +18,8 @@ interface UseRequestsResult {
|
|
|
17
18
|
getFullRequest: (id: string) => Promise<CapturedRequest | null>;
|
|
18
19
|
/** Fetch all requests with full data (for exports) */
|
|
19
20
|
getAllFullRequests: () => Promise<CapturedRequest[]>;
|
|
21
|
+
/** Replay a captured request by ID. Returns the new replayed request ID on success. */
|
|
22
|
+
replayRequest?: (id: string) => Promise<string | null>;
|
|
20
23
|
/** Toggle the saved/bookmark state of a request */
|
|
21
24
|
toggleSaved: (id: string, currentlySaved: boolean) => Promise<boolean>;
|
|
22
25
|
/** Clear all unsaved requests */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRequests.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,qEAAqE;IACrE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qDAAqD;IACrD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAChE,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,mDAAmD;IACnD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useRequests.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,qEAAqE;IACrE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qDAAqD;IACrD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAChE,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,uFAAuF;IACvF,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvD,mDAAmD;IACnD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAuM/E"}
|
|
@@ -10,7 +10,7 @@ const DEFAULT_POLL_INTERVAL_MS = 2000;
|
|
|
10
10
|
* Hook to fetch and poll for captured requests.
|
|
11
11
|
*/
|
|
12
12
|
export function useRequests(options = {}) {
|
|
13
|
-
const { pollInterval = DEFAULT_POLL_INTERVAL_MS, filter, projectRoot } = options;
|
|
13
|
+
const { pollInterval = DEFAULT_POLL_INTERVAL_MS, filter, bodySearch, projectRoot } = options;
|
|
14
14
|
const [requests, setRequests] = useState([]);
|
|
15
15
|
const [isLoading, setIsLoading] = useState(true);
|
|
16
16
|
const [error, setError] = useState(null);
|
|
@@ -18,6 +18,7 @@ export function useRequests(options = {}) {
|
|
|
18
18
|
const lastCountRef = useRef(0);
|
|
19
19
|
const requestsLengthRef = useRef(0);
|
|
20
20
|
const filterRef = useRef(filter);
|
|
21
|
+
const bodySearchRef = useRef(bodySearch);
|
|
21
22
|
// Initialise control client
|
|
22
23
|
useEffect(() => {
|
|
23
24
|
const resolvedRoot = projectRoot ?? findProjectRoot();
|
|
@@ -43,17 +44,30 @@ export function useRequests(options = {}) {
|
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
45
46
|
const currentFilter = filterRef.current;
|
|
47
|
+
const currentBodySearch = bodySearchRef.current;
|
|
46
48
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const newRequests = await client.listRequestsSummary({
|
|
49
|
+
if (currentBodySearch) {
|
|
50
|
+
const newRequests = await client.searchBodies({
|
|
51
|
+
query: currentBodySearch.query,
|
|
52
|
+
target: currentBodySearch.target,
|
|
52
53
|
limit: DEFAULT_QUERY_LIMIT,
|
|
53
54
|
filter: currentFilter,
|
|
54
55
|
});
|
|
55
56
|
setRequests(newRequests);
|
|
56
|
-
lastCountRef.current =
|
|
57
|
+
lastCountRef.current = newRequests.length;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// First check the count to avoid unnecessary data transfer
|
|
61
|
+
const count = await client.countRequests({ filter: currentFilter });
|
|
62
|
+
// Only fetch list if count changed or we have no requests yet
|
|
63
|
+
if (count !== lastCountRef.current || requestsLengthRef.current === 0) {
|
|
64
|
+
const newRequests = await client.listRequestsSummary({
|
|
65
|
+
limit: DEFAULT_QUERY_LIMIT,
|
|
66
|
+
filter: currentFilter,
|
|
67
|
+
});
|
|
68
|
+
setRequests(newRequests);
|
|
69
|
+
lastCountRef.current = count;
|
|
70
|
+
}
|
|
57
71
|
}
|
|
58
72
|
setError(null);
|
|
59
73
|
}
|
|
@@ -70,12 +84,13 @@ export function useRequests(options = {}) {
|
|
|
70
84
|
setIsLoading(false);
|
|
71
85
|
}
|
|
72
86
|
}, []);
|
|
73
|
-
// Keep
|
|
87
|
+
// Keep refs in sync and fetch immediately when search/filter changes
|
|
74
88
|
useEffect(() => {
|
|
75
89
|
filterRef.current = filter;
|
|
90
|
+
bodySearchRef.current = bodySearch;
|
|
76
91
|
lastCountRef.current = 0;
|
|
77
92
|
void fetchRequests();
|
|
78
|
-
}, [filter, fetchRequests]);
|
|
93
|
+
}, [filter, bodySearch, fetchRequests]);
|
|
79
94
|
// Manual refresh function
|
|
80
95
|
const refresh = useCallback(async () => {
|
|
81
96
|
setIsLoading(true);
|
|
@@ -108,6 +123,17 @@ export function useRequests(options = {}) {
|
|
|
108
123
|
return [];
|
|
109
124
|
}
|
|
110
125
|
}, []);
|
|
126
|
+
// Replay request and force refresh
|
|
127
|
+
const replayRequest = useCallback(async (id) => {
|
|
128
|
+
const client = clientRef.current;
|
|
129
|
+
if (!client) {
|
|
130
|
+
throw new Error("Not connected to daemon");
|
|
131
|
+
}
|
|
132
|
+
const replayed = await client.replayRequest({ id, initiator: "tui" });
|
|
133
|
+
lastCountRef.current = 0;
|
|
134
|
+
await fetchRequests();
|
|
135
|
+
return replayed.requestId;
|
|
136
|
+
}, [fetchRequests]);
|
|
111
137
|
// Toggle saved/bookmark state and force refresh
|
|
112
138
|
const toggleSaved = useCallback(async (id, currentlySaved) => {
|
|
113
139
|
const client = clientRef.current;
|
|
@@ -160,6 +186,7 @@ export function useRequests(options = {}) {
|
|
|
160
186
|
refresh,
|
|
161
187
|
getFullRequest,
|
|
162
188
|
getAllFullRequests,
|
|
189
|
+
replayRequest,
|
|
163
190
|
toggleSaved,
|
|
164
191
|
clearRequests,
|
|
165
192
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRequests.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useRequests.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* Returns [columns, rows] of the terminal, updating when the terminal is resized.
|
|
9
|
+
*
|
|
10
|
+
* Reads stdout.columns/rows synchronously on every render so the value is
|
|
11
|
+
* always current — a resize-event counter forces React to re-render, but
|
|
12
|
+
* the actual dimensions are never cached in state.
|
|
9
13
|
*/
|
|
10
14
|
export declare function useStdoutDimensions(): [number, number];
|
|
11
15
|
//# sourceMappingURL=useStdoutDimensions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStdoutDimensions.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useStdoutDimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"useStdoutDimensions.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useStdoutDimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBtD"}
|
|
@@ -6,24 +6,34 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { useState, useEffect } from "react";
|
|
8
8
|
import { useStdout } from "ink";
|
|
9
|
+
const DEFAULT_COLUMNS = 80;
|
|
10
|
+
const DEFAULT_ROWS = 24;
|
|
11
|
+
const STARTUP_RECHECK_MS = 50;
|
|
9
12
|
/**
|
|
10
13
|
* Returns [columns, rows] of the terminal, updating when the terminal is resized.
|
|
14
|
+
*
|
|
15
|
+
* Reads stdout.columns/rows synchronously on every render so the value is
|
|
16
|
+
* always current — a resize-event counter forces React to re-render, but
|
|
17
|
+
* the actual dimensions are never cached in state.
|
|
11
18
|
*/
|
|
12
19
|
export function useStdoutDimensions() {
|
|
13
20
|
const { stdout } = useStdout();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
stdout.rows || 24,
|
|
17
|
-
]);
|
|
21
|
+
// Counter whose sole purpose is to trigger a re-render on resize
|
|
22
|
+
const [, setResizeCount] = useState(0);
|
|
18
23
|
useEffect(() => {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
const triggerRerender = () => setResizeCount((n) => n + 1);
|
|
25
|
+
stdout.on("resize", triggerRerender);
|
|
26
|
+
// Force a post-mount sync and one short delayed recheck.
|
|
27
|
+
// Some terminals populate columns/rows shortly after the first paint
|
|
28
|
+
// without emitting an initial "resize" event.
|
|
29
|
+
triggerRerender();
|
|
30
|
+
const startupRecheckTimer = setTimeout(triggerRerender, STARTUP_RECHECK_MS);
|
|
23
31
|
return () => {
|
|
24
|
-
|
|
32
|
+
clearTimeout(startupRecheckTimer);
|
|
33
|
+
stdout.off("resize", triggerRerender);
|
|
25
34
|
};
|
|
26
35
|
}, [stdout]);
|
|
27
|
-
|
|
36
|
+
// Always read current dimensions — never rely on stale state
|
|
37
|
+
return [stdout.columns || DEFAULT_COLUMNS, stdout.rows || DEFAULT_ROWS];
|
|
28
38
|
}
|
|
29
39
|
//# sourceMappingURL=useStdoutDimensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStdoutDimensions.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useStdoutDimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAEhC
|
|
1
|
+
{"version":3,"file":"useStdoutDimensions.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useStdoutDimensions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAE/B,iEAAiE;IACjE,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAErC,yDAAyD;QACzD,qEAAqE;QACrE,8CAA8C;QAC9C,eAAe,EAAE,CAAC;QAClB,MAAM,mBAAmB,GAAG,UAAU,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAE5E,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,eAAe,EAAE,MAAM,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/curl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/curl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAkBhE;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA+B7D"}
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generate curl commands from captured requests.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
* Headers that should be excluded from curl output.
|
|
6
|
-
* These are typically set automatically by curl or are connection-specific.
|
|
7
|
-
*/
|
|
8
|
-
const EXCLUDED_HEADERS = new Set([
|
|
9
|
-
"host",
|
|
10
|
-
"content-length",
|
|
11
|
-
"connection",
|
|
12
|
-
"accept-encoding",
|
|
13
|
-
"transfer-encoding",
|
|
14
|
-
]);
|
|
4
|
+
import { EXCLUDED_HEADERS } from "./export-shared.js";
|
|
15
5
|
/**
|
|
16
6
|
* Escape a string for use in a shell single-quoted context.
|
|
17
7
|
*
|
|
@@ -44,8 +34,11 @@ export function generateCurl(request) {
|
|
|
44
34
|
}
|
|
45
35
|
parts.push(`-H '${shellEscape(name)}: ${shellEscape(value)}'`);
|
|
46
36
|
}
|
|
47
|
-
// Add body if present
|
|
48
|
-
if (request.requestBody &&
|
|
37
|
+
// Add body if present and method supports it
|
|
38
|
+
if (request.requestBody &&
|
|
39
|
+
request.requestBody.length > 0 &&
|
|
40
|
+
request.method !== "GET" &&
|
|
41
|
+
request.method !== "HEAD") {
|
|
49
42
|
const bodyStr = request.requestBody.toString("utf-8");
|
|
50
43
|
parts.push(`-d '${shellEscape(bodyStr)}'`);
|
|
51
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curl.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/curl.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"curl.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/curl.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,CAAC;IAEjC,wBAAwB;IACxB,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5C,iDAAiD;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,6CAA6C;IAC7C,IACE,OAAO,CAAC,WAAW;QACnB,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC9B,OAAO,CAAC,MAAM,KAAK,KAAK;QACxB,OAAO,CAAC,MAAM,KAAK,MAAM,EACzB,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for export format generators.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Headers that should be excluded from export output.
|
|
6
|
+
* These are typically set automatically by the HTTP client or are connection-specific.
|
|
7
|
+
*/
|
|
8
|
+
export declare const EXCLUDED_HEADERS: Set<string>;
|
|
9
|
+
//# sourceMappingURL=export-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-shared.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/export-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aAM3B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for export format generators.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Headers that should be excluded from export output.
|
|
6
|
+
* These are typically set automatically by the HTTP client or are connection-specific.
|
|
7
|
+
*/
|
|
8
|
+
export const EXCLUDED_HEADERS = new Set([
|
|
9
|
+
"host",
|
|
10
|
+
"content-length",
|
|
11
|
+
"connection",
|
|
12
|
+
"accept-encoding",
|
|
13
|
+
"transfer-encoding",
|
|
14
|
+
]);
|
|
15
|
+
//# sourceMappingURL=export-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-shared.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/export-shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,MAAM;IACN,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate JavaScript fetch() calls from captured requests.
|
|
3
|
+
*/
|
|
4
|
+
import type { CapturedRequest } from "../../../shared/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Generate a JavaScript fetch() call from a captured request.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateFetch(request: CapturedRequest): string;
|
|
9
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/fetch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA6BhE;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAoD9D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate JavaScript fetch() calls from captured requests.
|
|
3
|
+
*/
|
|
4
|
+
import { EXCLUDED_HEADERS } from "./export-shared.js";
|
|
5
|
+
import { isJsonContent } from "./content-type.js";
|
|
6
|
+
/**
|
|
7
|
+
* Escape a string for use inside a JavaScript single-quoted string literal.
|
|
8
|
+
* Null bytes are stripped to prevent truncation issues in some runtimes.
|
|
9
|
+
*/
|
|
10
|
+
function jsStringEscape(str) {
|
|
11
|
+
return str
|
|
12
|
+
.replace(/\0/g, "")
|
|
13
|
+
.replace(/\\/g, "\\\\")
|
|
14
|
+
.replace(/'/g, "\\'")
|
|
15
|
+
.replace(/\n/g, "\\n")
|
|
16
|
+
.replace(/\r/g, "\\r")
|
|
17
|
+
.replace(/\t/g, "\\t");
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Indent each line of a multi-line string by the given number of spaces.
|
|
21
|
+
*/
|
|
22
|
+
function indentBlock(text, spaces) {
|
|
23
|
+
const pad = " ".repeat(spaces);
|
|
24
|
+
return text
|
|
25
|
+
.split("\n")
|
|
26
|
+
.map((line, i) => (i === 0 ? line : `${pad}${line}`))
|
|
27
|
+
.join("\n");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate a JavaScript fetch() call from a captured request.
|
|
31
|
+
*/
|
|
32
|
+
export function generateFetch(request) {
|
|
33
|
+
const options = [];
|
|
34
|
+
// Only include method if not GET (fetch defaults to GET)
|
|
35
|
+
if (request.method !== "GET") {
|
|
36
|
+
options.push(` method: '${request.method}'`);
|
|
37
|
+
}
|
|
38
|
+
// Collect headers (excluding automatic ones)
|
|
39
|
+
const headers = [];
|
|
40
|
+
for (const [name, value] of Object.entries(request.requestHeaders)) {
|
|
41
|
+
if (EXCLUDED_HEADERS.has(name.toLowerCase())) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
headers.push(` '${jsStringEscape(name)}': '${jsStringEscape(value)}'`);
|
|
45
|
+
}
|
|
46
|
+
if (headers.length > 0) {
|
|
47
|
+
options.push(` headers: {\n${headers.join(",\n")}\n }`);
|
|
48
|
+
}
|
|
49
|
+
// Add body if present and method is not GET/HEAD
|
|
50
|
+
if (request.requestBody &&
|
|
51
|
+
request.requestBody.length > 0 &&
|
|
52
|
+
request.method !== "GET" &&
|
|
53
|
+
request.method !== "HEAD") {
|
|
54
|
+
const bodyStr = request.requestBody.toString("utf-8");
|
|
55
|
+
const contentType = request.requestHeaders["content-type"];
|
|
56
|
+
if (isJsonContent(contentType)) {
|
|
57
|
+
try {
|
|
58
|
+
// Parse and re-stringify to get a clean representation
|
|
59
|
+
const parsed = JSON.parse(bodyStr);
|
|
60
|
+
options.push(` body: JSON.stringify(${indentBlock(JSON.stringify(parsed, null, 2), 2)})`);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Invalid JSON — use as raw string
|
|
64
|
+
options.push(` body: '${jsStringEscape(bodyStr)}'`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
options.push(` body: '${jsStringEscape(bodyStr)}'`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const url = `'${jsStringEscape(request.url)}'`;
|
|
72
|
+
if (options.length === 0) {
|
|
73
|
+
return `await fetch(${url});`;
|
|
74
|
+
}
|
|
75
|
+
return `await fetch(${url}, {\n${options.join(",\n")}\n});`;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAa7D"}
|
|
@@ -5,6 +5,7 @@ export function isFilterActive(filter) {
|
|
|
5
5
|
return ((filter.methods !== undefined && filter.methods.length > 0) ||
|
|
6
6
|
filter.statusRange !== undefined ||
|
|
7
7
|
(filter.search !== undefined && filter.search.length > 0) ||
|
|
8
|
+
(filter.regex !== undefined && filter.regex.length > 0) ||
|
|
8
9
|
filter.host !== undefined ||
|
|
9
10
|
filter.pathPrefix !== undefined ||
|
|
10
11
|
filter.since !== undefined ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/filters.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,OAAO,CACL,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,KAAK,SAAS;QAChC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,MAAM,CAAC,UAAU,KAAK,SAAS;QAC/B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,MAAM,KAAK,SAAS;QAC3B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,MAAM,KAAK,SAAS,CAC5B,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/filters.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,OAAO,CACL,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,KAAK,SAAS;QAChC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,MAAM,CAAC,UAAU,KAAK,SAAS;QAC/B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,MAAM,KAAK,SAAS;QAC3B,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,MAAM,KAAK,SAAS,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate HTTPie commands from captured requests.
|
|
3
|
+
*/
|
|
4
|
+
import type { CapturedRequest } from "../../../shared/types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Generate an HTTPie command from a captured request.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateHttpie(request: CapturedRequest): string;
|
|
9
|
+
//# sourceMappingURL=httpie.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpie.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/httpie.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAahE;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAoE/D"}
|