network-terminal 1.0.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/index.d.mts +66 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +759 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +723 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/NetworkTerminal.tsx","../src/components/Terminal.tsx","../src/components/TerminalHeader.tsx","../src/utils/formatters.ts","../src/utils/colors.ts","../src/components/LogEntry.tsx","../src/hooks/useNetworkInterceptor.ts"],"sourcesContent":["export { NetworkTerminal } from './components/NetworkTerminal';\nexport { Terminal } from './components/Terminal';\nexport { TerminalHeader } from './components/TerminalHeader';\nexport { LogEntry } from './components/LogEntry';\nexport { useNetworkInterceptor } from './hooks/useNetworkInterceptor';\nexport { formatJson, truncate, formatTime } from './utils/formatters';\nexport { getStatusColor, getMethodColor } from './utils/colors';\nexport type {\n NetworkLog,\n NetworkTerminalProps,\n TerminalProps,\n TerminalHeaderProps,\n LogEntryProps,\n UseNetworkInterceptorProps,\n} from './types';\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { NetworkLog, NetworkTerminalProps } from '../types';\nimport { Terminal } from './Terminal';\nimport { useNetworkInterceptor } from '../hooks/useNetworkInterceptor';\n\nconst styles = {\n floatingButton: {\n position: 'fixed' as const,\n bottom: '16px',\n right: '16px',\n zIndex: 9999,\n backgroundColor: '#1f2937',\n color: '#4ade80',\n padding: '8px 16px',\n borderRadius: '8px',\n fontFamily: 'monospace',\n fontSize: '14px',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n border: '1px solid #374151',\n cursor: 'pointer',\n },\n container: {\n position: 'fixed' as const,\n bottom: 0,\n left: 0,\n right: 0,\n zIndex: 9999,\n backgroundColor: '#111827',\n borderTop: '2px solid #22c55e',\n boxShadow: '0 -10px 15px -3px rgba(0, 0, 0, 0.1)',\n },\n containerTop: {\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n zIndex: 9999,\n backgroundColor: '#111827',\n borderBottom: '2px solid #22c55e',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n },\n mainHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '8px 16px',\n backgroundColor: '#1f2937',\n borderBottom: '1px solid #374151',\n },\n headerLeft: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n },\n title: {\n color: '#4ade80',\n fontFamily: 'monospace',\n fontWeight: 'bold',\n },\n hint: {\n color: '#6b7280',\n fontFamily: 'monospace',\n fontSize: '12px',\n },\n headerRight: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n clearButton: {\n color: '#9ca3af',\n fontSize: '14px',\n fontFamily: 'monospace',\n padding: '4px 12px',\n borderRadius: '4px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n },\n closeButton: {\n color: '#9ca3af',\n fontSize: '18px',\n fontWeight: 'bold',\n padding: '0 8px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n borderRadius: '4px',\n },\n terminalsContainer: {\n display: 'flex',\n gap: '8px',\n padding: '8px',\n height: '450px',\n },\n terminalWrapper: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column' as const,\n },\n} as const;\n\nexport const NetworkTerminal: React.FC<NetworkTerminalProps> = ({\n maxLogs = 100,\n defaultVisible = false,\n position = 'bottom',\n height = '450px',\n zIndex = 9999,\n}) => {\n const [logs, setLogs] = useState<NetworkLog[]>([]);\n const [isVisible, setIsVisible] = useState(defaultVisible);\n const [requestExpanded, setRequestExpanded] = useState(true);\n const [responseExpanded, setResponseExpanded] = useState(true);\n\n const addLog = useCallback(\n (log: NetworkLog) => {\n setLogs((prev) => [...prev.slice(-(maxLogs - 1)), log]);\n },\n [maxLogs]\n );\n\n const updateLog = useCallback((id: string, updates: Partial<NetworkLog>) => {\n setLogs((prev) =>\n prev.map((log) => (log.id === id ? { ...log, ...updates } : log))\n );\n }, []);\n\n useNetworkInterceptor({\n enabled: isVisible,\n onLogAdd: addLog,\n onLogUpdate: updateLog,\n });\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.ctrlKey && e.shiftKey && e.key === 'N') {\n e.preventDefault();\n setIsVisible((prev) => !prev);\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const clearLogs = () => setLogs([]);\n\n if (!isVisible) {\n return (\n <button\n onClick={() => setIsVisible(true)}\n style={{\n ...styles.floatingButton,\n zIndex,\n }}\n title=\"Open Network Terminal (Ctrl+Shift+N)\"\n >\n {'>'}_ Network\n </button>\n );\n }\n\n const containerStyle =\n position === 'top'\n ? { ...styles.containerTop, zIndex }\n : { ...styles.container, zIndex };\n\n return (\n <div style={containerStyle}>\n <div style={styles.mainHeader}>\n <div style={styles.headerLeft}>\n <span style={styles.title}>{'>'}_ Network Terminal</span>\n <span style={styles.hint}>Press Ctrl+Shift+N to toggle</span>\n </div>\n <div style={styles.headerRight}>\n <button\n onClick={clearLogs}\n style={styles.clearButton}\n onMouseEnter={(e) => (e.currentTarget.style.color = '#fff')}\n onMouseLeave={(e) => (e.currentTarget.style.color = '#9ca3af')}\n >\n Clear All\n </button>\n <button\n onClick={() => setIsVisible(false)}\n style={styles.closeButton}\n onMouseEnter={(e) => (e.currentTarget.style.color = '#f87171')}\n onMouseLeave={(e) => (e.currentTarget.style.color = '#9ca3af')}\n >\n {'\\u00D7'}\n </button>\n </div>\n </div>\n\n <div style={{ ...styles.terminalsContainer, height }}>\n <div style={styles.terminalWrapper}>\n <Terminal\n title=\"Requests\"\n logs={logs}\n type=\"request\"\n onClear={clearLogs}\n expanded={requestExpanded}\n onToggleExpand={() => setRequestExpanded(!requestExpanded)}\n />\n </div>\n <div style={styles.terminalWrapper}>\n <Terminal\n title=\"Responses\"\n logs={logs}\n type=\"response\"\n onClear={clearLogs}\n expanded={responseExpanded}\n onToggleExpand={() => setResponseExpanded(!responseExpanded)}\n />\n </div>\n </div>\n </div>\n );\n};\n","import React, { useRef, useState, useEffect } from 'react';\nimport { TerminalProps } from '../types';\nimport { TerminalHeader } from './TerminalHeader';\nimport { LogEntry } from './LogEntry';\n\nconst styles = {\n container: {\n display: 'flex',\n flexDirection: 'column' as const,\n backgroundColor: '#111827',\n borderRadius: '8px',\n border: '1px solid #374151',\n overflow: 'hidden',\n transition: 'all 0.2s',\n flex: 1,\n },\n collapsed: {\n height: '48px',\n flex: 'none' as const,\n },\n body: {\n flex: 1,\n overflow: 'auto',\n padding: '16px',\n fontFamily: 'monospace',\n fontSize: '14px',\n minHeight: '200px',\n maxHeight: '400px',\n },\n empty: {\n color: '#6b7280',\n fontStyle: 'italic',\n },\n} as const;\n\nexport const Terminal: React.FC<TerminalProps> = ({\n title,\n logs,\n type,\n onClear,\n expanded,\n onToggleExpand,\n}) => {\n const terminalRef = useRef<HTMLDivElement>(null);\n const [autoScroll, setAutoScroll] = useState(true);\n\n useEffect(() => {\n if (autoScroll && terminalRef.current) {\n terminalRef.current.scrollTop = terminalRef.current.scrollHeight;\n }\n }, [logs, autoScroll]);\n\n const handleScroll = () => {\n if (terminalRef.current) {\n const { scrollTop, scrollHeight, clientHeight } = terminalRef.current;\n setAutoScroll(scrollHeight - scrollTop - clientHeight < 50);\n }\n };\n\n return (\n <div\n style={{\n ...styles.container,\n ...(expanded ? {} : styles.collapsed),\n }}\n >\n <TerminalHeader\n title={title}\n count={logs.length}\n expanded={expanded}\n onClear={onClear}\n onToggleExpand={onToggleExpand}\n />\n\n {expanded && (\n <div ref={terminalRef} onScroll={handleScroll} style={styles.body}>\n {logs.length === 0 ? (\n <div style={styles.empty}>Waiting for network requests...</div>\n ) : (\n logs.map((log) => <LogEntry key={log.id} log={log} type={type} />)\n )}\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { TerminalHeaderProps } from '../types';\n\nconst styles = {\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '8px 16px',\n backgroundColor: '#1f2937',\n borderBottom: '1px solid #374151',\n },\n left: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n trafficLights: {\n display: 'flex',\n gap: '6px',\n },\n dot: {\n width: '12px',\n height: '12px',\n borderRadius: '50%',\n },\n title: {\n color: '#d1d5db',\n fontFamily: 'monospace',\n fontSize: '14px',\n marginLeft: '8px',\n },\n count: {\n color: '#6b7280',\n fontFamily: 'monospace',\n fontSize: '12px',\n },\n right: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n button: {\n color: '#9ca3af',\n fontSize: '12px',\n fontFamily: 'monospace',\n padding: '4px 8px',\n borderRadius: '4px',\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n },\n} as const;\n\nexport const TerminalHeader: React.FC<TerminalHeaderProps> = ({\n title,\n count,\n expanded,\n onClear,\n onToggleExpand,\n}) => {\n return (\n <div style={styles.header}>\n <div style={styles.left}>\n <div style={styles.trafficLights}>\n <div style={{ ...styles.dot, backgroundColor: '#ef4444' }} />\n <div style={{ ...styles.dot, backgroundColor: '#eab308' }} />\n <div style={{ ...styles.dot, backgroundColor: '#22c55e' }} />\n </div>\n <span style={styles.title}>{title}</span>\n <span style={styles.count}>({count} entries)</span>\n </div>\n <div style={styles.right}>\n <button\n onClick={onClear}\n style={styles.button}\n onMouseEnter={(e) => (e.currentTarget.style.color = '#fff')}\n onMouseLeave={(e) => (e.currentTarget.style.color = '#9ca3af')}\n >\n Clear\n </button>\n <button\n onClick={onToggleExpand}\n style={styles.button}\n onMouseEnter={(e) => (e.currentTarget.style.color = '#fff')}\n onMouseLeave={(e) => (e.currentTarget.style.color = '#9ca3af')}\n >\n {expanded ? '\\u25BC' : '\\u25B2'}\n </button>\n </div>\n </div>\n );\n};\n","export const formatJson = (data: unknown): string => {\n if (!data) return '';\n try {\n if (typeof data === 'string') {\n const parsed = JSON.parse(data);\n return JSON.stringify(parsed, null, 2);\n }\n return JSON.stringify(data, null, 2);\n } catch {\n return String(data);\n }\n};\n\nexport const truncate = (str: string, maxLength: number): string => {\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength) + '...';\n};\n\nexport const formatTime = (date: Date): string => {\n return date.toLocaleTimeString('en-US', {\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n};\n","export const getStatusColor = (status?: number): string => {\n if (!status) return '#9ca3af'; // gray-400\n if (status >= 200 && status < 300) return '#4ade80'; // green-400\n if (status >= 300 && status < 400) return '#facc15'; // yellow-400\n if (status >= 400 && status < 500) return '#fb923c'; // orange-400\n return '#f87171'; // red-400\n};\n\nexport const getMethodColor = (method: string): string => {\n const colors: Record<string, string> = {\n GET: '#22d3ee', // cyan-400\n POST: '#4ade80', // green-400\n PUT: '#facc15', // yellow-400\n PATCH: '#fb923c', // orange-400\n DELETE: '#f87171', // red-400\n };\n return colors[method.toUpperCase()] || '#9ca3af';\n};\n","import React from 'react';\nimport { LogEntryProps } from '../types';\nimport { formatJson, formatTime } from '../utils/formatters';\nimport { getStatusColor, getMethodColor } from '../utils/colors';\n\nconst styles = {\n container: {\n marginBottom: '16px',\n borderBottom: '1px solid #1f2937',\n paddingBottom: '16px',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n marginBottom: '4px',\n flexWrap: 'wrap' as const,\n },\n timestamp: {\n color: '#6b7280',\n fontSize: '12px',\n fontFamily: 'monospace',\n },\n method: {\n fontWeight: 'bold',\n fontFamily: 'monospace',\n },\n status: {\n fontWeight: 'bold',\n fontFamily: 'monospace',\n },\n duration: {\n color: '#6b7280',\n fontSize: '12px',\n fontFamily: 'monospace',\n },\n url: {\n color: '#60a5fa',\n wordBreak: 'break-all' as const,\n marginBottom: '8px',\n fontFamily: 'monospace',\n fontSize: '13px',\n },\n bodyContainer: {\n marginTop: '8px',\n },\n bodyLabel: {\n color: '#a78bfa',\n fontSize: '12px',\n marginBottom: '4px',\n fontFamily: 'monospace',\n },\n pre: {\n backgroundColor: '#1f2937',\n padding: '8px',\n borderRadius: '4px',\n color: '#86efac',\n overflowX: 'auto' as const,\n fontSize: '12px',\n whiteSpace: 'pre-wrap' as const,\n fontFamily: 'monospace',\n maxHeight: '192px',\n overflowY: 'auto' as const,\n margin: 0,\n },\n errorPre: {\n backgroundColor: '#1f2937',\n padding: '8px',\n borderRadius: '4px',\n color: '#fca5a5',\n overflowX: 'auto' as const,\n fontSize: '12px',\n whiteSpace: 'pre-wrap' as const,\n fontFamily: 'monospace',\n margin: 0,\n },\n} as const;\n\nexport const LogEntry: React.FC<LogEntryProps> = ({ log, type }) => {\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <span style={styles.timestamp}>[{formatTime(log.timestamp)}]</span>\n <span style={{ ...styles.method, color: getMethodColor(log.method) }}>\n {log.method}\n </span>\n {type === 'response' && log.status && (\n <span style={{ ...styles.status, color: getStatusColor(log.status) }}>\n {log.status} {log.statusText}\n </span>\n )}\n {log.duration !== undefined && type === 'response' && (\n <span style={styles.duration}>({log.duration}ms)</span>\n )}\n </div>\n\n <div style={styles.url}>{log.url}</div>\n\n {type === 'request' ? (\n log.requestBody ? (\n <div style={styles.bodyContainer}>\n <div style={styles.bodyLabel}>{'\\u25B8'} Payload:</div>\n <pre style={styles.pre}>{formatJson(log.requestBody)}</pre>\n </div>\n ) : null\n ) : log.error ? (\n <div style={styles.bodyContainer}>\n <div style={{ ...styles.bodyLabel, color: '#f87171' }}>\n {'\\u25B8'} Error:\n </div>\n <pre style={styles.errorPre}>{log.error}</pre>\n </div>\n ) : log.responseBody ? (\n <div style={styles.bodyContainer}>\n <div style={styles.bodyLabel}>{'\\u25B8'} Response:</div>\n <pre style={styles.pre}>{formatJson(log.responseBody)}</pre>\n </div>\n ) : null}\n </div>\n );\n};\n","import { useEffect, useRef, useCallback } from 'react';\nimport { NetworkLog, UseNetworkInterceptorProps } from '../types';\n\nexport const useNetworkInterceptor = ({\n enabled,\n onLogAdd,\n onLogUpdate,\n}: UseNetworkInterceptorProps) => {\n const originalFetch = useRef<typeof fetch | null>(null);\n const originalXHROpen = useRef<typeof XMLHttpRequest.prototype.open | null>(null);\n const originalXHRSend = useRef<typeof XMLHttpRequest.prototype.send | null>(null);\n\n const generateId = useCallback((prefix: string) => {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }, []);\n\n // Intercept Fetch\n useEffect(() => {\n if (!enabled) return;\n\n originalFetch.current = window.fetch;\n\n window.fetch = async function (input, init) {\n const id = generateId('fetch');\n const startTime = performance.now();\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n const method = init?.method || 'GET';\n\n let requestBody: unknown = null;\n if (init?.body) {\n try {\n requestBody =\n typeof init.body === 'string' ? JSON.parse(init.body) : init.body;\n } catch {\n requestBody = init.body;\n }\n }\n\n onLogAdd({\n id,\n timestamp: new Date(),\n method: method.toUpperCase(),\n url,\n requestBody,\n type: 'fetch',\n });\n\n try {\n const response = await originalFetch.current!(input, init);\n const duration = Math.round(performance.now() - startTime);\n\n const clonedResponse = response.clone();\n let responseBody: unknown = null;\n\n try {\n responseBody = await clonedResponse.json();\n } catch {\n try {\n responseBody = await clonedResponse.text();\n } catch {\n responseBody = '[Could not read response body]';\n }\n }\n\n onLogUpdate(id, {\n status: response.status,\n statusText: response.statusText,\n responseBody,\n duration,\n });\n\n return response;\n } catch (error: unknown) {\n const duration = Math.round(performance.now() - startTime);\n const errorMessage =\n error instanceof Error ? error.message : 'Network Error';\n onLogUpdate(id, {\n error: errorMessage,\n duration,\n });\n throw error;\n }\n };\n\n return () => {\n if (originalFetch.current) {\n window.fetch = originalFetch.current;\n }\n };\n }, [enabled, onLogAdd, onLogUpdate, generateId]);\n\n // Intercept XHR\n useEffect(() => {\n if (!enabled) return;\n\n originalXHROpen.current = XMLHttpRequest.prototype.open;\n originalXHRSend.current = XMLHttpRequest.prototype.send;\n\n XMLHttpRequest.prototype.open = function (\n method: string,\n url: string | URL\n ) {\n (this as XMLHttpRequest & { _networkTerminal: NetworkLog & { startTime: number } })._networkTerminal = {\n id: generateId('xhr'),\n method: method.toUpperCase(),\n url: url.toString(),\n startTime: 0,\n timestamp: new Date(),\n type: 'xhr',\n };\n return originalXHROpen.current!.apply(\n this,\n arguments as unknown as Parameters<typeof XMLHttpRequest.prototype.open>\n );\n };\n\n XMLHttpRequest.prototype.send = function (body?: Document | XMLHttpRequestBodyInit | null) {\n const meta = (this as XMLHttpRequest & { _networkTerminal?: NetworkLog & { startTime: number } })._networkTerminal;\n\n if (meta) {\n meta.startTime = performance.now();\n\n let requestBody: unknown = null;\n if (body) {\n try {\n requestBody = typeof body === 'string' ? JSON.parse(body) : body;\n } catch {\n requestBody = body;\n }\n }\n\n onLogAdd({\n id: meta.id,\n timestamp: new Date(),\n method: meta.method,\n url: meta.url,\n requestBody,\n type: 'xhr',\n });\n\n this.addEventListener('load', function () {\n const duration = Math.round(performance.now() - meta.startTime);\n\n let responseBody: unknown = null;\n try {\n responseBody = JSON.parse(this.responseText);\n } catch {\n responseBody = this.responseText;\n }\n\n onLogUpdate(meta.id, {\n status: this.status,\n statusText: this.statusText,\n responseBody,\n duration,\n });\n });\n\n this.addEventListener('error', function () {\n const duration = Math.round(performance.now() - meta.startTime);\n onLogUpdate(meta.id, {\n error: 'Network Error',\n duration,\n });\n });\n }\n\n return originalXHRSend.current!.apply(\n this,\n arguments as unknown as Parameters<typeof XMLHttpRequest.prototype.send>\n );\n };\n\n return () => {\n if (originalXHROpen.current) {\n XMLHttpRequest.prototype.open = originalXHROpen.current;\n }\n if (originalXHRSend.current) {\n XMLHttpRequest.prototype.send = originalXHRSend.current;\n }\n };\n }, [enabled, onLogAdd, onLogUpdate, generateId]);\n};\n"],"mappings":"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","names":["import_react","import_jsx_runtime","styles","import_jsx_runtime","styles","import_react","import_jsx_runtime","styles"]}
|