import{b as a,d as R,e as h}from"./chunk-TF5C7XJX.js";import"./chunk-DWY47FQV.js";import{HTTPException as bn}from"hono/http-exception";import{Hono as En}from"hono/tiny";import{validator as u}from"hono/validator";import{array as Y,literal as Z,minLength as K,object as J,pipe as nn,safeParse as en,string as tn,union as rn}from"valibot";var on=J({tags:rn([nn(Y(tn()),K(1)),Z("all")])});async function L(n){let{output:r,success:e}=en(on,await n.req.json(),{abortEarly:!0});return e?r:n.text("Invalid input",400)}import{parseDuration as T,parseSize as sn,Server as an}from"@prisma/query-plan-executor";import{version as w}from"@prisma/query-plan-executor";var I;async function q(n){return I===void 0&&(I=await an.create({databaseUrl:n.get("db").connectionString,maxResponseSize:sn("128 MiB"),queryTimeout:T("PT5M"),maxTransactionTimeout:T("PT5M"),maxTransactionWaitTime:T("PT5M"),perRequestLogContext:{logFormat:"text",logLevel:n.get("debug")?"debug":"off"}})),I}import{Buffer as B}from"buffer";var S=new Map;async function b(n){let e=new TextEncoder().encode(n),t=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(t)).map(s=>s.toString(16).padStart(2,"0")).join("")}function M(n){let r=n.req.param("schemaHash"),e=S.get(r);return e==null?n.json({EngineNotStarted:{reason:"SchemaMissing"}},404):{schemaHash:r,schemas:e}}async function j(n,r,e){let t=B.from(n,"base64").toString("utf8"),o=un(t,r.toString());e&&console.log("[Accelerate] schema with override:",o);let i=await b(o);return{base64Override:B.from(o,"utf8").toString("base64"),overrideHash:i}}var cn=" ";function un(n,r){let e=fn(n);if(!e)throw new Error("No datasource block found in schema.");let t=n.slice(e.openBraceIndex+1,e.closeBraceIndex),o=pn(t,r,hn(n,e.openBraceIndex));return`${n.slice(0,e.openBraceIndex+1)}${o}${n.slice(e.closeBraceIndex)}`}function fn(n){let r="datasource";for(let e=0;e`${r.line}${r.terminator}`).join("")}function V(n){let r=!1,e=!1;for(let t=0;t{let r=await L(n);return r instanceof Response?r:n.body(null)});var Cn="/:clientVersion/:schemaHash",p=x.basePath(Cn);x.route("/",p);var Hn=["/graphql","/itx/:transactionId/graphql"];p.on("POST",[...Hn],u("header",a),async n=>{let{req:r}=n;try{let e=await v(n);if(e instanceof Response)return e;let t=await r.text(),o=r.param("transactionId"),i=await e.request(t,{...y(n),"X-transaction-id":o});return n.text(i)}catch(e){return h(e,n)}});p.basePath("/itx/:transactionId").on("POST",["/commit","/rollback"],u("header",a),async n=>{let{req:r}=n;try{let e=await v(n);if(e instanceof Response)return e;let o=`${r.routePath.split("/").filter(Boolean).at(-1)}Transaction`,i=r.param("transactionId"),s=await e[o](i,y(n));return n.json(s)}catch(e){return h(e,n)}});p.put("/schema",u("header",a),async n=>{let{req:r}=n,e=await r.text();if(!e)return n.text("Missing schema",400);let t=r.param("schemaHash"),o=S.get(t);if(o==null){if(t!==await b(e))return n.text("Schema hash mismatch",400);let i=await j(e,n.get("db").prismaORMConnectionString,n.get("debug"));return S.set(t,{base64Original:e,...i}),n.text(t)}return e!==o.base64Original?n.text("Schema mismatch",400):n.text(t)});p.post("/transaction/start",u("header",a),async n=>{let{req:r}=n,e=await F(n);if(e instanceof Response)return e;try{let t=await v(n);if(t instanceof Response)return t;let o=await t.startTransaction(e,y(n)),i=W(o,n);if(i instanceof Response)return i;let{id:s}=i,c=r.param("clientVersion"),f=r.param("schemaHash");return n.json({...o,"data-proxy":{endpoint:`${new URL(r.url).origin}/${c}/${f}/itx/${s}`}})}catch(t){return h(t,n)}});async function v(n){let{req:r}=n,e=M(n);if(e instanceof Response)return e;let{base64Override:t,overrideHash:o}=e.schemas;return await R.get({base64Schema:t,clientVersion:process.env.PRISMA_DEV_FORCE_CLIENT_VERSION||r.param("clientVersion"),debug:n.get("debug"),platform:n.get("platform"),schemaHash:o})}var On=[["/connection-info","GET"],["/query","POST"],["/transaction/start","POST"],["/transaction/:transactionId/commit","POST"],["/transaction/:transactionId/query","POST"],["/transaction/:transactionId/rollback","POST"]];for(let[n,r]of On)x.on(r,n,u("header",a),async e=>{let t=e.req.header("prisma-engine-hash");if(t!=="0.0.0"&&t!==w)throw new bn(400,{message:`Using an HTTP connection string is not supported with Prisma Client version ${t} by this version of \`prisma dev\`. Please either use a direct TCP connection string or upgrade your client to version ${w}.`});return await(await q(e)).fetch(e.req.raw)});export{x as accelerateRoute};