Initial Commit
* Implements Select package.json and parse dependencies * Implements Bun API to handle package Analysis * Implements NPM Registry API handlers * Analyze the cross dependencies between packages * Implements loading NodeJS versions with search (inclusing LTS) * Error handling * Implements Report option to get higher infor about the dependencies * Implements Upgrade command builder
This commit is contained in:
64
src/APITester.tsx
Normal file
64
src/APITester.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
||||
import { Textarea } from "@/components/ui/textarea";
|
||||
import { useRef, type FormEvent } from "react";
|
||||
|
||||
export function APITester() {
|
||||
const responseInputRef = useRef<HTMLTextAreaElement>(null);
|
||||
|
||||
const testEndpoint = async (e: FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
|
||||
try {
|
||||
const form = e.currentTarget;
|
||||
const formData = new FormData(form);
|
||||
const endpoint = formData.get("endpoint") as string;
|
||||
const url = new URL(endpoint, location.href);
|
||||
const method = formData.get("method") as string;
|
||||
const res = await fetch(url, { method });
|
||||
|
||||
const data = await res.json();
|
||||
responseInputRef.current!.value = JSON.stringify(data, null, 2);
|
||||
} catch (error) {
|
||||
responseInputRef.current!.value = String(error);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-6">
|
||||
<form onSubmit={testEndpoint} className="flex items-center gap-2">
|
||||
<Label htmlFor="method" className="sr-only">
|
||||
Method
|
||||
</Label>
|
||||
<Select name="method" defaultValue="GET">
|
||||
<SelectTrigger className="w-[100px]" id="method">
|
||||
<SelectValue placeholder="Method" />
|
||||
</SelectTrigger>
|
||||
<SelectContent align="start">
|
||||
<SelectItem value="GET">GET</SelectItem>
|
||||
<SelectItem value="PUT">PUT</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<Label htmlFor="endpoint" className="sr-only">
|
||||
Endpoint
|
||||
</Label>
|
||||
<Input id="endpoint" type="text" name="endpoint" defaultValue="/api/hello" placeholder="/api/hello" />
|
||||
<Button type="submit" variant="secondary">
|
||||
Send
|
||||
</Button>
|
||||
</form>
|
||||
<Label htmlFor="response" className="sr-only">
|
||||
Response
|
||||
</Label>
|
||||
<Textarea
|
||||
ref={responseInputRef}
|
||||
id="response"
|
||||
readOnly
|
||||
placeholder="Response will appear here..."
|
||||
className="min-h-[140px] font-mono resize-y"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user