SvelteKit
Use Insightcn in SvelteKit applications.
Setup
Install insightcn:
npm install insightcnServer Route
import { json } from "@sveltejs/kit";
import type { RequestHandler } from "./$types";
import { captureRegistryEvent } from "@insightcn/sdk";
export const GET: RequestHandler = async ({ params, request }) => {
const registryUrl = `https://your-registry.com/r/${params.slug}.json`;
const registryResponse = await fetch(registryUrl);
const data = await registryResponse.json();
await captureRegistryEvent(request, "your-api-key", "installed");
return json(data);
};RSS Feed Route
import { generateRegistryRssFeed } from "@insightcn/sdk";
import type { RequestHandler } from "./$types";
export const GET: RequestHandler = async () => {
const rssFeed = await generateRegistryRssFeed({
baseUrl: "https://your-registry.com",
rss: {
title: "My Shadcn Registry",
description: "Custom components for shadcn/ui",
endpoint: "/api/rss",
},
github: {
owner: "your-org",
repo: "your-registry",
token: import.meta.env.VITE_GITHUB_TOKEN,
},
});
if (!rssFeed) {
return new Response("No items found", { status: 404 });
}
return new Response(rssFeed, {
headers: {
"Content-Type": "application/rss+xml",
"Cache-Control": "public, max-age=3600",
},
});
};Client-Side Usage
<script>
import { captureRegistryEvent, generateRegistryRssFeed } from "@insightcn/sdk";
async function handleInstall() {
const request = new Request("https://your-registry.com/r/ui/button.json", {
method: "GET",
headers: { "user-agent": "node-fetch" },
});
await captureRegistryEvent(request, "your-api-key", "installed");
}
async function handleGenerateRss() {
const rss = await generateRegistryRssFeed({
baseUrl: "https://your-registry.com",
rss: {
title: "My Shadcn Registry",
description: "Custom components for shadcn/ui",
},
});
console.log(rss);
}
</script>
<button on:click={handleInstall}>Install Button</button>
<button on:click={handleGenerateRss}>Generate RSS</button>Environment Variables
INSIGHTCN_API_KEY=your-api-key
VITE_GITHUB_TOKEN=your-github-token