Hi @Rasel Rana Rocky - Do you have a sample project to get started with a simple server having - Rou
Hi @Rasel Rana Rocky - Do you have a sample project to get started with a simple server having - Router, D1 connectivity, CORS ?

Route patterns may not contain infix wildcards or query parameters. For example, neitherexample.com/*.jpgnorexample.com/?foo=*are valid route patterns.
When more than one route pattern could match a request URL, the most specific route pattern wins. For example, the patternwww.example.com/*would take precedence over*.example.com/*when matching a request forhttps://www.example.com/. The patternexample.com/hello/*would take precedence overexample.com/*when matching a request for example.com/hello/world.

import Image from "./image.png" and then Wrangler will bundle it for you..wrangler/state/v3/r2 is created containing my files, but are they only accessible through the binding? does wrangler cli run some alternative local server to serve files ?example.com/*.jpgexample.com/?foo=*www.example.com/**.example.com/*https://www.example.com/example.com/hello/*example.com/*import Image from "./image.png".wrangler/state/v3/r2router.post("/v1/streaming", async (request, { OPENAI_API }) => {
let { readable, writable } = new TransformStream();
const client = new ChatOpenAI({
openAIApiKey: OPENAI_API,
});
const stream = await client.stream(
"Write a 2 sentence poem about a sunset."
);
let writer = writable.getWriter();
const textEncoder = new TextEncoder();
for await (const part of stream) {
if (part.content.length) {
// Assuming part.content is a string containing the text
const words = part.content.split(" "); // Split the text into words
for (const word of words) {
const sseFormattedData = `data: ${word}\n\n`; // Format each word as SSE
await writer.write(textEncoder.encode(sseFormattedData));
console.log("🚀 - forawait - sseFormattedData:", sseFormattedData);
await new Promise((r) => setTimeout(r, 1000)); // Wait for 1 second before sending the next word
}
}
}
writer.close();
return new Response(readable, {
// headers: {
// "Content-Type": "text/event-stream",
// "Cache-Control": "no-cache",
// Connection: "keep-alive",
// },
});
})