{"version":3,"sources":["jsdelivr-header.js","/npm/@better-auth/expo@1.5.6/src/routes.ts","/npm/@better-auth/expo@1.5.6/src/index.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,8KCFA,MAAa,uBAAyB,mBACrC,4BACA,CACC,OAAQ,MACR,MAAO,EAAE,OAAO,CACf,iBAAkB,EAAE,SACpB,WAAY,EAAE,SAAS,aAExB,SAAU,gBAEX,MAAO,IACN,MAAM,WAAE,GAAe,EAAI,MAC3B,GAAI,EAAY,CACf,MAAM,EAAmB,EAAI,QAAQ,iBAAiB,cAAe,CACpE,OAAQ,MAOT,OALA,EAAI,UACH,EAAiB,KACjB,EACA,EAAiB,YAEX,EAAI,SAAS,EAAI,MAAM,iB,CAG/B,MAAM,iBAAE,GAAqB,EAAI,MAE3B,EADM,IAAI,IAAI,GACF,aAAa,IAAI,SACnC,IAAK,EACJ,MAAM,IAAI,SAAS,cAAe,CACjC,QAAS,qBAGX,MAAM,EAAc,EAAI,QAAQ,iBAAiB,QAAS,CACzD,OAAQ,MAQT,aANM,EAAI,gBACT,EAAY,KACZ,EACA,EAAI,QAAQ,OACZ,EAAY,YAEN,EAAI,SAAS,EAAI,MAAM,iBAAiB,ICzBpC,KAAQ,IACb,CACN,GAAI,OACJ,KAAO,IAIC,CACN,QAAS,CACR,eAJwB,gBAAzB,QAAQ,IAAI,SAA6B,CAAC,UAAY,MAQxD,eAAM,CAAU,EAAS,GACxB,GAAI,GAAS,uBAAyB,EAAQ,QAAQ,IAAI,UACzD,OAMD,MAAM,EAAa,EAAQ,QAAQ,IAAI,eACvC,GAAK,EAIL,IAGC,OADA,EAAQ,QAAQ,IAAI,SAAU,GACvB,CAAE,U,OAIT,MAAM,EAAa,IAAI,QAAQ,EAAQ,SAEvC,OADA,EAAW,IAAI,SAAU,GAClB,CAAE,QAAS,IAAI,QAAQ,EAAS,CAAE,QAAS,I,GAGpD,MAAO,CACN,MAAO,CACN,CACC,QAAQ,MAEN,EAAQ,MAAM,WAAW,cACzB,EAAQ,MAAM,WAAW,qBACzB,EAAQ,MAAM,WAAW,uBACzB,EAAQ,MAAM,WAAW,kBAG3B,QAAS,sBAAqB,MAAO,IACpC,MAAM,EAAU,EAAI,QAAQ,gBACtB,EAAW,GAAS,IAAI,YAC9B,IAAK,EACJ,OAGD,GADmB,EAAS,SAAS,yBAEpC,OAED,IAAI,EACJ,IACC,EAAc,IAAI,IAAI,E,OAEtB,M,CAKD,GAF0B,UAAzB,EAAY,UACa,WAAzB,EAAY,SAEZ,OAGD,IADwB,EAAI,QAAQ,gBAAgB,GAEnD,OAED,MAAM,EAAS,GAAS,IAAI,cACvB,IAGL,EAAY,aAAa,IAAI,SAAU,GACvC,EAAI,UAAU,WAAY,EAAY,YAAW,OAKrD,UAAW,CACV,+CAED,mB","file":"/npm/@better-auth/expo@1.5.6/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@better-auth/expo@1.5.6/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { HIDE_METADATA } from \"better-auth\";\nimport { APIError, createAuthEndpoint } from \"better-auth/api\";\nimport * as z from \"zod\";\n\nexport const expoAuthorizationProxy = createAuthEndpoint(\n\t\"/expo-authorization-proxy\",\n\t{\n\t\tmethod: \"GET\",\n\t\tquery: z.object({\n\t\t\tauthorizationURL: z.string(),\n\t\t\toauthState: z.string().optional(),\n\t\t}),\n\t\tmetadata: HIDE_METADATA,\n\t},\n\tasync (ctx) => {\n\t\tconst { oauthState } = ctx.query;\n\t\tif (oauthState) {\n\t\t\tconst oauthStateCookie = ctx.context.createAuthCookie(\"oauth_state\", {\n\t\t\t\tmaxAge: 10 * 60, // 10 minutes\n\t\t\t});\n\t\t\tctx.setCookie(\n\t\t\t\toauthStateCookie.name,\n\t\t\t\toauthState,\n\t\t\t\toauthStateCookie.attributes,\n\t\t\t);\n\t\t\treturn ctx.redirect(ctx.query.authorizationURL);\n\t\t}\n\n\t\tconst { authorizationURL } = ctx.query;\n\t\tconst url = new URL(authorizationURL);\n\t\tconst state = url.searchParams.get(\"state\");\n\t\tif (!state) {\n\t\t\tthrow new APIError(\"BAD_REQUEST\", {\n\t\t\t\tmessage: \"Unexpected error\",\n\t\t\t});\n\t\t}\n\t\tconst stateCookie = ctx.context.createAuthCookie(\"state\", {\n\t\t\tmaxAge: 5 * 60, // 5 minutes\n\t\t});\n\t\tawait ctx.setSignedCookie(\n\t\t\tstateCookie.name,\n\t\t\tstate,\n\t\t\tctx.context.secret,\n\t\t\tstateCookie.attributes,\n\t\t);\n\t\treturn ctx.redirect(ctx.query.authorizationURL);\n\t},\n);\n","import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport { createAuthMiddleware } from \"@better-auth/core/api\";\nimport { expoAuthorizationProxy } from \"./routes\";\n\nexport interface ExpoOptions {\n\t/**\n\t * Disable origin override for expo API routes\n\t * When set to true, the origin header will not be overridden for expo API routes\n\t */\n\tdisableOriginOverride?: boolean | undefined;\n}\n\ndeclare module \"@better-auth/core\" {\n\tinterface BetterAuthPluginRegistry<AuthOptions, Options> {\n\t\texpo: {\n\t\t\tcreator: typeof expo;\n\t\t};\n\t}\n}\n\nexport const expo = (options?: ExpoOptions | undefined) => {\n\treturn {\n\t\tid: \"expo\",\n\t\tinit: (ctx) => {\n\t\t\tconst trustedOrigins =\n\t\t\t\tprocess.env.NODE_ENV === \"development\" ? [\"exp://\"] : [];\n\n\t\t\treturn {\n\t\t\t\toptions: {\n\t\t\t\t\ttrustedOrigins,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tasync onRequest(request, ctx) {\n\t\t\tif (options?.disableOriginOverride || request.headers.get(\"origin\")) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t/**\n\t\t\t * To bypass origin check from expo, we need to set the origin\n\t\t\t * header to the expo-origin header\n\t\t\t */\n\t\t\tconst expoOrigin = request.headers.get(\"expo-origin\");\n\t\t\tif (!expoOrigin) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Prefer in-place mutation (works on Bun, Node, Deno).\n\t\t\t\trequest.headers.set(\"origin\", expoOrigin);\n\t\t\t\treturn { request };\n\t\t\t} catch {\n\t\t\t\t// Cloudflare Workers has immutable headers on incoming requests,\n\t\t\t\t// so fall back to constructing a new Request.\n\t\t\t\tconst newHeaders = new Headers(request.headers);\n\t\t\t\tnewHeaders.set(\"origin\", expoOrigin);\n\t\t\t\treturn { request: new Request(request, { headers: newHeaders }) };\n\t\t\t}\n\t\t},\n\t\thooks: {\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn !!(\n\t\t\t\t\t\t\tcontext.path?.startsWith(\"/callback\") ||\n\t\t\t\t\t\t\tcontext.path?.startsWith(\"/oauth2/callback\") ||\n\t\t\t\t\t\t\tcontext.path?.startsWith(\"/magic-link/verify\") ||\n\t\t\t\t\t\t\tcontext.path?.startsWith(\"/verify-email\")\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst headers = ctx.context.responseHeaders;\n\t\t\t\t\t\tconst location = headers?.get(\"location\");\n\t\t\t\t\t\tif (!location) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst isProxyURL = location.includes(\"/oauth-proxy-callback\");\n\t\t\t\t\t\tif (isProxyURL) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet redirectURL: URL;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tredirectURL = new URL(location);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst isHttpRedirect =\n\t\t\t\t\t\t\tredirectURL.protocol === \"http:\" ||\n\t\t\t\t\t\t\tredirectURL.protocol === \"https:\";\n\t\t\t\t\t\tif (isHttpRedirect) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst isTrustedOrigin = ctx.context.isTrustedOrigin(location);\n\t\t\t\t\t\tif (!isTrustedOrigin) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst cookie = headers?.get(\"set-cookie\");\n\t\t\t\t\t\tif (!cookie) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tredirectURL.searchParams.set(\"cookie\", cookie);\n\t\t\t\t\t\tctx.setHeader(\"location\", redirectURL.toString());\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tendpoints: {\n\t\t\texpoAuthorizationProxy,\n\t\t},\n\t\toptions,\n\t} satisfies BetterAuthPlugin;\n};\n"]}