{"version":3,"sources":["/Users/gerard/dev/gapp/client/dist/chunk-DUQIOKJT.cjs","../src/vitePlugin.ts"],"names":[],"mappings":"AAAA;ACGA,IAAI,qBAAA;AAEG,SAAS,iBAAA,CAAkB,OAAA,EAGvB;AACT,EAAA,MAAM,UAAA,mCAAY,OAAA,2BAAS,WAAA,UAAa,yBAAA;AACxC,EAAA,MAAM,YAAA,mCAAc,OAAA,6BAAS,aAAA,UAAe,cAAA;AAE5C,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IAEN,eAAA,CAAgB,MAAA,EAAuB;AACrC,sBAAA,MAAA,qBAAO,UAAA,6BAAY,IAAA,mBAAK,WAAA,EAAa,CAAA,EAAA,GAAM;AACzC,QAAA,OAAA,CAAQ,GAAA;AAAA,UACN,sDAAA;AAAA,UACA;AAAA,QACF,CAAA;AAAA,MACF,CAAC,GAAA;AAGD,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAA8B,IAAA,EAAM,IAAA,EAAA,GAAS;AACnE,QAAA,sBAAA,EAAwB,GAAA,CAAI,OAAA,CAAQ,MAAA;AACpC,QAAA,IAAA,CAAK,CAAA;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,KAAA;AAAA,MACP,MAAM,OAAA,CAAQ,IAAA,EAAM,GAAA,EAAK;AACvB,QAAA,MAAM,YAAA,EAAe,GAAA,CAAY,WAAA;AACjC,QAAA,MAAM,KAAA,EAAO,YAAA,EACT,IAAI,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAA,CAAE,SAAA,EACzC,GAAA;AAEJ,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,EAAM,CAAA,EAAA;AACV,YAAA;AACD,UAAA;AAEO,UAAA;AACN,YAAA;AAGF,UAAA;AAEY,UAAA;AACD,YAAA;AAGD,YAAA;AACT,UAAA;AAEY,UAAA;AACH,YAAA;AACN,cAAA;AACF,YAAA;AACO,YAAA;AACT,UAAA;AAEM,UAAA;AACA,UAAA;AAEM,UAAA;AACF,YAAA;AACN,cAAA;AACA,cAAA;AACF,YAAA;AACK,UAAA;AACG,YAAA;AACV,UAAA;AAEM,UAAA;AACJ,YAAA;AACD,UAAA;AACW,UAAA;AACA,QAAA;AACO,UAAA;AACT,YAAA;AACH,UAAA;AACG,YAAA;AACN,cAAA;AACe,cAAA;AACjB,YAAA;AACF,UAAA;AACO,UAAA;AACT,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACF;ADvBuB;AACA;AACA;AACA","file":"/Users/gerard/dev/gapp/client/dist/chunk-DUQIOKJT.cjs","sourcesContent":[null,"import type { Plugin, ViteDevServer, Connect } from \"vite\";\n\n// Store the current request's cookies for use in transformIndexHtml\nlet currentRequestCookies: string | undefined;\n\nexport function gappPreloadPlugin(options?: {\n  serverUrl?: string;\n  preloadPath?: string;\n}): Plugin {\n  const serverUrl = options?.serverUrl ?? \"http://localhost:8080\";\n  const preloadPath = options?.preloadPath ?? \"/__preload\";\n\n  return {\n    name: \"gapp-preload\",\n\n    configureServer(server: ViteDevServer) {\n      server.httpServer?.once(\"listening\", () => {\n        console.log(\n          \"[gapp-preload] Plugin active, fetching preloads from\",\n          serverUrl\n        );\n      });\n\n      // Middleware to capture cookies from incoming requests\n      server.middlewares.use((req: Connect.IncomingMessage, _res, next) => {\n        currentRequestCookies = req.headers.cookie;\n        next();\n      });\n    },\n\n    transformIndexHtml: {\n      order: \"pre\",\n      async handler(html, ctx) {\n        const originalUrl = (ctx as any).originalUrl as string | undefined;\n        const path = originalUrl\n          ? new URL(originalUrl, \"http://localhost\").pathname\n          : \"/\";\n\n        try {\n          const url = `${serverUrl}${preloadPath}?path=${encodeURIComponent(\n            path\n          )}`;\n\n          console.log(\n            `[gapp-preload] Fetching preloads for path=\"${path}\" (originalUrl=\"${originalUrl}\"), cookies: ${\n              currentRequestCookies ? \"present\" : \"none\"\n            }`\n          );\n\n          const res = await fetch(url, {\n            headers: currentRequestCookies\n              ? { Cookie: currentRequestCookies }\n              : {},\n            signal: AbortSignal.timeout(2000),\n          });\n\n          if (!res.ok) {\n            console.warn(\n              `[gapp-preload] Server returned ${res.status} for ${path}`\n            );\n            return html;\n          }\n\n          const preloaded = await res.json();\n          const methods = Object.keys(preloaded);\n\n          if (methods.length > 0) {\n            console.log(\n              `[gapp-preload] Loaded ${methods.length} RPCs for ${path}:`,\n              methods\n            );\n          } else {\n            console.log(`[gapp-preload] No RPCs matched for ${path}`);\n          }\n\n          const script = `<script>window.__PRELOADED__ = ${JSON.stringify(\n            preloaded\n          )};window.__PRELOAD_TIMESTAMP__ = ${Date.now()};</script>`;\n          return html.replace(\"</head>\", `${script}</head>`);\n        } catch (err) {\n          if ((err as Error).name === \"TimeoutError\") {\n            console.warn(\"[gapp-preload] Server timeout, skipping preload\");\n          } else {\n            console.warn(\n              \"[gapp-preload] Server unavailable, skipping preload:\",\n              (err as Error).message\n            );\n          }\n          return html;\n        }\n      },\n    },\n  };\n}\n"]}