// basePath (/docedit) + app path (/note) — ค่าจาก next.config.mjs (inline ตอน build ผ่าน env) // ใช้กับ URL ฝั่ง browser ที่ Next ไม่เติม basePath ให้เอง: fetch/EventSource/ // plain /workerSrc/img src — ต่างจาก /router/redirect ของ next ที่เติม // basePath ให้อัตโนมัติ (path ที่เขียนถึง route จึงต้องมี /note นำหน้าเอง เช่น "/note/login") // ยกเว้น API route อยู่ใต้ app/api/note/** (URL /docedit/api/note/…) — path ที่ขึ้นต้น // "/api/" เติมแค่ basePath (caller เขียน "/api/note/…" เอง) ไม่มี /note ซ้อน // และ static ของ sibling wordaddin ใต้ public/wordaddin/** (URL /docedit/wordaddin/… // เช่น office.js ที่ self-host) — path ที่ขึ้นต้น "/wordaddin/" เติมแค่ basePath เช่นกัน // (pdfUrl ใน DB เก็บ logical path ไม่รวม prefix เติมตอนใช้เท่านั้น) export function withBasePath(path: string): string { // absolute http(s) ผ่านไปเฉย ๆ (N8: pdf_url เก็บ URL รีโมตได้ — ห้าม prefix ทับ) if (/^https?:\/\//i.test(path)) return path; if (path.startsWith("/api/") || path.startsWith("/wordaddin/")) { return `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}${path}`; } return `${process.env.NEXT_PUBLIC_BASE_PATH ?? ""}${process.env.NEXT_PUBLIC_APP_PATH ?? ""}${path}`; }