/home/techb158/balavpn.abdallabala.com/.next/cache/webpack/server-production
NameSizeModeActions
0.pack75919080666editdlrm
1.pack13755910666editdlrm
2.pack2103570666editdlrm
3.pack435023240666editdlrm
4.pack8831030666editdlrm
5.pack2236720666editdlrm
6.pack124000666editdlrm
7.pack1863090666editdlrm
8.pack2143630666editdlrm
9.pack7358150666editdlrm
10.pack2358320666editdlrm
11.pack30785860666editdlrm
12.pack33078460666editdlrm
index.pack85782510666editdlrm
index.pack.old85783080666editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/.next/cache/webpack/server-production/9.pack (735815B)
wpc;: webpack/lib/cache/PackFileCacheStrategyPackContentItems Compilation/modules|javascript/auto|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-flight-loader\index.js!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\app\api\auth\sso\callback\route.js|rscCompilation/modules|javascript/auto|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-flight-loader\index.js!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\lib\oidc.js|rscCompilation/codeGeneration|javascript/auto|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-flight-loader\index.js!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-swc-loader.js??ruleSet[1].rules[16].oneOf[4].use[0]!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\lib\oidc.js|rsc|webpack-runtimeCompilation/codeGeneration|javascript/auto|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-app-loader\index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|ade79ae9a31a371a|webpack-runtimeCompilation/assets|chunk6696Compilation/assets|chunk4310MinifierWebpackPlugin|../app/api/auth/sso/route.jsMinifierWebpackPlugin|../app/api/auth/sso/callback/route.jswebpack/lib/NormalModulewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } exportsTypenamespace javascript/autorscC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\app\api\auth\sso\callbackaliasmainFieldsconditionNamesfullySpecified`$server-only$client-only$next/dist/compiled/server-only$next/dist/compiled/client-only$C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\head.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\image.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\constants.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\router.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dynamic.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\script.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\link.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\form.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\navigation.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\headers.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\og.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\server.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\document.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\app.jsreact$react/compiler-runtime$react/jsx-dev-runtime$react/jsx-runtime$react-dom$react-dom/client$react-dom/server$react-dom/server.browser$react-dom/server.edge$react-dom/static$react-dom/static.browser$react-dom/static.edge$react-server-dom-webpack/client$react-server-dom-webpack/server$react-server-dom-webpack/server.node$react-server-dom-webpack/static$@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.tsnextnext/dist/compiled/server-only/emptynext/dist/compiled/client-only/errornext/dist/client/components/noop-headnext/dist/api/imagenext/dist/api/constantsnext/dist/api/routernext/dist/api/app-dynamicnext/dist/api/scriptnext/dist/client/app-dir/linknext/dist/client/app-dir/formnext/dist/api/navigation.react-servernext/dist/api/headersnext/dist/api/ognext/dist/api/servernext/dist/api/documentnext/dist/api/appnext/dist/server/route-modules/app-page/vendored/rsc/reactnext/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtimenext/dist/server/route-modules/app-page/vendored/rsc/react-domnext/dist/compiled/react-dom/clientnext/dist/compiled/react-dom/server.nodenext/dist/compiled/react-dom/server.browsernext/dist/build/webpack/alias/react-dom-server.jsnext/dist/compiled/react-dom/static.nodenext/dist/compiled/react-dom/static.browsernext/dist/compiled/react-dom/static.edgenext/dist/compiled/react-server-dom-webpack/client.nodenext/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-servernext/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-staticnext/dist/client/dev/noop-turbopack-hmrC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\nextmodulemainreact-server... `cacheableparsedfileDependenciescontextDependenciesmissingDependenciesbuildDependenciesvalueDependencieshashassetsassetsInfostrictexportsArgumenttopLevelDeclarationssnapshot webpack/lib/util/LazySetC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-flight-loader\index.jsC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-swc-loader.jswebpack/DefinePlugin_hashwebpack/DefinePlugin process.env.NEXT_PUBLIC_APP_URLb5546ded"https://balavpn.abdallabala.com"08f09de442c01990typeactionIdsclientRefsclientEntryTypeisClientRefserver  __webpack_exports__getCookiesetCookiehandleSsoCallbackgetOidcConfigstateCookieNameSESSION_MAX_AGEGETwebpack/lib/FileSystemInfoSnapshot >TyBC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\app\api\auth\sso\callback\route.jssafeTimetimestamp!ayBayB2de9a6fad7be3201webpack/lib/dependencies/HarmonyCompatibilityDependency dwebpack/lib/dependencies/HarmonyExportHeaderDependencyA& A  c Hwebpack/lib/dependencies/RequireHeaderDependencya% bL`y@ b+Mwebpack/lib/dependencies/ConstDependency trueA b* Y0A bW YA c5S5r0A  b5S5@webpack/lib/dependencies/CommonJsRequireDependency../../../../../services/sso-service a&K bL../../../../../lib/oidc A b+Mwebpack/lib/dependencies/PureExpressionDependency A `(webpack/lib/dependencies/HarmonyExportSpecifierDependency` c H  "use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; `  TUC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\lib  `T  bc1afec5d13ad1a4     ȐdiscoverProviderbase64UrlEncodegenerateNoncegenerateStatedecodeJwtPayloadgetCookieExpiresËrandomBytes >TyBC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\lib\oidc.js !yBpyB19db91f1d716efa2  `  `  a&- b) A bA `0 A bA { crypto a.6 b)webpack/lib/dependencies/CommonJsSelfReferenceDependencya A^lmodule.exports c,,   sourcesruntimeRequirementsdatajavascriptwebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; d &,.5C__webpack_require__55511"https://balavpn.abdallabala.com"0 buffersourcesizemaps const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; {"finalSource":true} mapbufferedMap  ReplaceSourceRawSource~012undefined3844__webpack_require__undefined465355511undefined444474"https://balavpn.abdallabala.com"undefined4795010undefined d__webpack_require__  kwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceG // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } }  e$&JyK% __webpack_require__4997075617 true0"https://balavpn.abdallabala.com"0buffersourcesizemapshash= const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } 3036__webpack_require__undefined387449970undefined121127__webpack_require__undefined12915375617undefined451479 trueundefined4964970undefined543549undefined22542284"https://balavpn.abdallabala.com"undefined228923110undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  Iwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abdt_~% / t  % ( h ! />`h r_s%4%%% ''''((+(+--//1133N5Rh55555;7O7779999:;;;M=X=__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._~A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map z094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741501undefined16521670__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17061714__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19181953".next"undefined195819590undefined19862024 falseundefined22922291: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25972607__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26762765undefined27672773undefined30893109falseundefined31123176{}undefined33223361falseundefined38873902__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43604374__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52165224__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56415654__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62586272__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63086323__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined63516368__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64036424__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70607073__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined80518064__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95009524__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96229643__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined999510008__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1019810211__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1045110465__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1103711048__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1171711735__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1217212180__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1273012744__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1321013223__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1364613672__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1371913732__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1379813819__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1413914159__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1422014231__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1472314736__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1483514842__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1509815112__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1533315351__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1569315704__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sx/\ 2)Bf<_Kkg""@##_ %h%&&&r'')\*,c-/\/11345'6V666d789P99;;J<<==C>1?@@module_compiled.AppRouteRouteModuleroute_kind.RouteKindroute_namespaceObject(0,patch_fetch.patchFetch)(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindjQ// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map   ` ConcatSourceRawSourceG // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js  ReplaceSource3036__webpack_require__undefined387449970undefined121127__webpack_require__undefined12915375617undefined451479 trueundefined4964970undefined543549undefined22542284"https://balavpn.abdallabala.com"undefined228923110undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map z094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741501undefined16521670__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17061714__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19181953".next"undefined195819590undefined19862024 falseundefined22922291: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25972607__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26762765undefined27672773undefined30893109falseundefined31123176{}undefined33223361falseundefined38873902__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43604374__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52165224__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56415654__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62586272__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63086323__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined63516368__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64036424__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70607073__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined80518064__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95009524__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96229643__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined999510008__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1019810211__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1045110465__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1103711048__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1171711735__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1217212180__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1273012744__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1321013223__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1364613672__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1371913732__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1379813819__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1413914159__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1422014231__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1472314736__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1483514842__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1509815112__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1533315351__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1569315704__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined888933route_namespaceObjectundefined12391327(0,patch_fetch.patchFetch)undefined23962496(0,app_paths_.normalizeAppPath)undefined29543048no_fallback_error_external_.NoFallbackErrorundefined38903976(0,trace_tracer.getTracer)undefined43934489(0,request_meta.getRequestMeta)undefined50935186node.NodeNextRequestundefined52225317node.NodeNextResponseundefined53455436next_request.NextRequestAdapterundefined54715583(0,next_request.signalFromNodeResponse)undefined62196297constants.BaseServerSpanundefined72757371(0,request_meta.getRequestMeta)undefined88078926(0,web_utils.toNodeOutgoingHttpHeaders)undefined90249132lib_constants.NEXT_CACHE_TAGS_HEADERundefined94849576lib_constants.INFINITE_CACHEundefined97669858lib_constants.INFINITE_CACHEundefined1009810179response_cache.CachedRouteKindundefined1075110844(0,send_response/* sendResponse */.I)undefined1151311619(0,utils/* getRevalidateReason */.c)undefined1205612124route_kind.RouteKindundefined1267412755response_cache.CachedRouteKindundefined1322113317(0,request_meta.getRequestMeta)undefined1374013863(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1391014006(0,request_meta.getRequestMeta)undefined1407214180lib_constants.NEXT_CACHE_TAGS_HEADERundefined1450014611(0,cache_control.getCacheControlHeader)undefined1467214765(0,send_response/* sendResponse */.I)undefined1525715335constants.BaseServerSpanundefined1543415500trace_tracer.SpanKindundefined1575615850no_fallback_error_external_.NoFallbackErrorundefined1607116177(0,utils/* getRevalidateReason */.c)undefined1651916612(0,send_response/* sendResponse */.I)undefinedc ` { var exports = {}; exports.id = 6696; exports.ids = [6696]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashv/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource$/***/ ((module) => { "use strict";  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3421:  )webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcevar __webpack_unused_export__; webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map h :NNQO"$4GMO[0R__webpack_unused_export__ = ()Object.defineProperty(exports, "I", ())__webpack_require__712375508817679 truebuffersourcesizemapshash var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map {"finalSource":true}mapbufferedMap ConcatSourceRawSourcevar __webpack_unused_export__; ReplaceSourceRawSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map>012undefined1458__webpack_unused_export__ = (undefined7878)undefined81127Object.defineProperty(exports, "I", (undefined210210))undefined230236__webpack_require__undefined23825871237undefined284290__webpack_require__undefined29230855088undefined327333__webpack_require__undefined33534717679undefined560594 trueundefined /***/ }) 1 /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map /***/ })   S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; ReplaceSourceRawSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map>012undefined1458__webpack_unused_export__ = (undefined7878)undefined81127Object.defineProperty(exports, "I", (undefined210210))undefined230236__webpack_require__undefined23825871237undefined284290__webpack_require__undefined29230855088undefined327333__webpack_require__undefined33534717679undefined560594 trueundefined, /***/ 10846:  3webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ })  Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 22752:  DZwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource5 // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource ]webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceconst { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc"); export async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } d^df{@__webpack_require__75617buffersourcesizemapshashconst { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = __webpack_require__(75617); async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceconst { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc"); export async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } D94100__webpack_require__undefined10212375617undefined127133undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  Hwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abdj_|Y| E 0 (0:_Hl{\i;H$$^%s%&&''((**--T/\/11b3o35R05_5l55577T7_7K9X999::;;= =__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._PA // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741491undefined16421660__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16961704__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18811916".next"undefined192119220undefined19491987 falseundefined22452244: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25502560__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26292718undefined27202726undefined30333053falseundefined30563120{}undefined32663305falseundefined38313846__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43044318__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined51605168__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined55855598__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62026216__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined62526267__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined62956312__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined63476368__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70047017__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined79958008__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined94449468__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined95669587__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined99399952__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1014210155__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1039510409__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1098110992__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1166111679__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1211612124__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1267412688__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1315413167__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1359013616__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1366313676__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1374213763__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1408314103__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1416414175__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1466714680__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1477914786__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1504215056__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1527715295__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1563715648__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sS . \ Z[81k=9""#~#_$:%%T&D'').*,5-../T11w33~55(66667v88"99k;;<^<^==C>?Y@@module_compiled.AppRouteRouteModuleroute_kind.RouteKindroute_namespaceObject(0,patch_fetch.patchFetch)(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindbuffersourcesizemapshashLK// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js const { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = __webpack_require__(75617); async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map {"finalSource":true}mapbufferedMap ` ConcatSourceRawSource5 // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js  ReplaceSourceReplaceSourceRawSourceconst { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc"); export async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } D94100__webpack_require__undefined10212375617undefined127133undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741491undefined16421660__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16961704__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18811916".next"undefined192119220undefined19491987 falseundefined22452244: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25502560__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26292718undefined27202726undefined30333053falseundefined30563120{}undefined32663305falseundefined38313846__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43044318__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined51605168__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined55855598__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62026216__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined62526267__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined62956312__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined63476368__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70047017__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined79958008__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined94449468__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined95669587__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined99399952__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1014210155__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1039510409__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1098110992__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1166111679__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1211612124__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1267412688__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1315413167__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1359013616__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1366313676__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1374213763__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1408314103__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1416414175__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1466714680__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1477914786__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1504215056__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1527715295__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1563715648__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined851896route_namespaceObjectundefined12021290(0,patch_fetch.patchFetch)undefined23502450(0,app_paths_.normalizeAppPath)undefined29083002no_fallback_error_external_.NoFallbackErrorundefined38443930(0,trace_tracer.getTracer)undefined43474443(0,request_meta.getRequestMeta)undefined50475140node.NodeNextRequestundefined51765271node.NodeNextResponseundefined52995390next_request.NextRequestAdapterundefined54255537(0,next_request.signalFromNodeResponse)undefined61736251constants.BaseServerSpanundefined72297325(0,request_meta.getRequestMeta)undefined87618880(0,web_utils.toNodeOutgoingHttpHeaders)undefined89789086lib_constants.NEXT_CACHE_TAGS_HEADERundefined94389530lib_constants.INFINITE_CACHEundefined97209812lib_constants.INFINITE_CACHEundefined1005210133response_cache.CachedRouteKindundefined1070510798(0,send_response/* sendResponse */.I)undefined1146711573(0,utils/* getRevalidateReason */.c)undefined1201012078route_kind.RouteKindundefined1262812709response_cache.CachedRouteKindundefined1317513271(0,request_meta.getRequestMeta)undefined1369413817(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1386413960(0,request_meta.getRequestMeta)undefined1402614134lib_constants.NEXT_CACHE_TAGS_HEADERundefined1445414565(0,cache_control.getCacheControlHeader)undefined1462614719(0,send_response/* sendResponse */.I)undefined1521115289constants.BaseServerSpanundefined1538815454trace_tracer.SpanKindundefined1571015804no_fallback_error_external_.NoFallbackErrorundefined1602516131(0,utils/* getRevalidateReason */.c)undefined1647316566(0,send_response/* sendResponse */.I)undefined /***/ }) K/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js const { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = __webpack_require__(75617); async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ })  `_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; 5 // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js  ReplaceSourceconst { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc"); export async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } D94100__webpack_require__undefined10212375617undefined127133undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741491undefined16421660__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16961704__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18811916".next"undefined192119220undefined19491987 falseundefined22452244: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25502560__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26292718undefined27202726undefined30333053falseundefined30563120{}undefined32663305falseundefined38313846__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43044318__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined51605168__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined55855598__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62026216__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined62526267__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined62956312__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined63476368__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70047017__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined79958008__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined94449468__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined95669587__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined99399952__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1014210155__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1039510409__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1098110992__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1166111679__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1211612124__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1267412688__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1315413167__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1359013616__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1366313676__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1374213763__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1408314103__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1416414175__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1466714680__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1477914786__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1504215056__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1527715295__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1563715648__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined851896route_namespaceObjectundefined12021290(0,patch_fetch.patchFetch)undefined23502450(0,app_paths_.normalizeAppPath)undefined29083002no_fallback_error_external_.NoFallbackErrorundefined38443930(0,trace_tracer.getTracer)undefined43474443(0,request_meta.getRequestMeta)undefined50475140node.NodeNextRequestundefined51765271node.NodeNextResponseundefined52995390next_request.NextRequestAdapterundefined54255537(0,next_request.signalFromNodeResponse)undefined61736251constants.BaseServerSpanundefined72297325(0,request_meta.getRequestMeta)undefined87618880(0,web_utils.toNodeOutgoingHttpHeaders)undefined89789086lib_constants.NEXT_CACHE_TAGS_HEADERundefined94389530lib_constants.INFINITE_CACHEundefined97209812lib_constants.INFINITE_CACHEundefined1005210133response_cache.CachedRouteKindundefined1070510798(0,send_response/* sendResponse */.I)undefined1146711573(0,utils/* getRevalidateReason */.c)undefined1201012078route_kind.RouteKindundefined1262812709response_cache.CachedRouteKindundefined1317513271(0,request_meta.getRequestMeta)undefined1369413817(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1386413960(0,request_meta.getRequestMeta)undefined1402614134lib_constants.NEXT_CACHE_TAGS_HEADERundefined1445414565(0,cache_control.getCacheControlHeader)undefined1462614719(0,send_response/* sendResponse */.I)undefined1521115289constants.BaseServerSpanundefined1538815454trace_tracer.SpanKindundefined1571015804no_fallback_error_external_.NoFallbackErrorundefined1602516131(0,utils/* getRevalidateReason */.c)undefined1647316566(0,send_response/* sendResponse */.I)undefined, /***/ 29294:  6webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ })  Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ })  Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 55511:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; #module.exports = require("crypto");  /***/ }) Q/***/ ((module) => { "use strict"; module.exports = require("crypto"); /***/ })  #module.exports = require("crypto");, /***/ 63033:  ;webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ })  \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 75617:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; d &,.5C__webpack_require__55511"https://balavpn.abdallabala.com"0buffersourcesizemapshash const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; ~012undefined3844__webpack_require__undefined465355511undefined444474"https://balavpn.abdallabala.com"undefined4795010undefined /***/ }) ]/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; /***/ })  S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; "use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; ~012undefined3844__webpack_require__undefined465355511undefined444474"https://balavpn.abdallabala.com"undefined4795010undefined, /***/ 78335:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) /***/ (() => { /***/ })  /***/ (() => { , /***/ 86439:  +webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) z/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ })  Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");, /***/ 95736:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource ~webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceR"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map  c 47Nfalse{}module.exports = __webpack_require__(44870)buffersourcesizemapshash if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSourceR"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map012undefined1852falseundefined55141{}undefined158194falseundefined197906{}undefined927964falseundefined9671261{}undefined12861306falseundefined13091431{}undefined14561539module.exports = __webpack_require__(44870)undefined /***/ }) S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map /***/ })  S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; R"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map012undefined1852falseundefined55141{}undefined158194falseundefined197906{}undefined927964falseundefined9671261{}undefined12861306falseundefined13091431{}undefined14561539module.exports = __webpack_require__(44870)undefined, /***/ 96487:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) z | } }; ; // load runtime var __webpack_require__ = require("../../../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873], () => (__webpack_exec__(22752))); ,module.exports = __webpack_exports__; })(); f(() => { var exports = {}; exports.id = 6696; exports.ids = [6696]; exports.modules = { /***/ 261: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3421: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map /***/ }), /***/ 10846: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 22752: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js const { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = __webpack_require__(75617); async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ }), /***/ 29294: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 44870: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 55511: /***/ ((module) => { "use strict"; module.exports = require("crypto"); /***/ }), /***/ 63033: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 75617: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; /***/ }), /***/ 78335: /***/ (() => { /***/ }), /***/ 86439: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 95736: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map /***/ }), /***/ 96487: /***/ (() => { /***/ }) }; ; // load runtime var __webpack_require__ = require("../../../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873], () => (__webpack_exec__(22752))); module.exports = __webpack_exports__; })(); {}  @d(() => { var exports = {}; exports.id = 6696; exports.ids = [6696]; exports.modules = { /***/ 261: $/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3421: S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__;  "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map>012undefined1458__webpack_unused_export__ = (undefined7878)undefined81127Object.defineProperty(exports, "I", (undefined210210))undefined230236__webpack_require__undefined23825871237undefined284290__webpack_require__undefined29230855088undefined327333__webpack_require__undefined33534717679undefined560594 trueundefined, /***/ 10846: Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 22752: _/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; 5 // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/route.js const { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc"); export async function GET() { try { const config = getOidcConfig(); if (!config) { return new Response(JSON.stringify({ error: "SSO not enabled" }), { status: 501, headers: { "Content-Type": "application/json" } }); } const disco = await discoverProvider(config.issuer); const state = generateState(); const params = new URLSearchParams({ response_type: "code", client_id: config.clientId, redirect_uri: config.redirectUrl, scope: "openid email profile", state }); const location = `${disco.authorization_endpoint}?${params.toString()}`; return new Response(null, { status: 302, headers: { Location: location, "Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}` } }); } catch (error) { return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { "Content-Type": "application/json" } }); } } D94100__webpack_require__undefined10212375617undefined127133undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/route", pathname: "/api/auth/sso", filename: "route", bundlePath: "app/api/auth/sso/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map y094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741491undefined16421660__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined16961704__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined18811916".next"undefined192119220undefined19491987 falseundefined22452244: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25502560__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26292718undefined27202726undefined30333053falseundefined30563120{}undefined32663305falseundefined38313846__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43044318__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined51605168__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined55855598__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62026216__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined62526267__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined62956312__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined63476368__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70047017__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined79958008__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined94449468__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined95669587__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined99399952__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1014210155__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1039510409__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1098110992__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1166111679__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1211612124__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1267412688__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1315413167__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1359013616__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1366313676__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1374213763__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1408314103__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1416414175__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1466714680__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1477914786__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1504215056__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1527715295__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1563715648__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined851896route_namespaceObjectundefined12021290(0,patch_fetch.patchFetch)undefined23502450(0,app_paths_.normalizeAppPath)undefined29083002no_fallback_error_external_.NoFallbackErrorundefined38443930(0,trace_tracer.getTracer)undefined43474443(0,request_meta.getRequestMeta)undefined50475140node.NodeNextRequestundefined51765271node.NodeNextResponseundefined52995390next_request.NextRequestAdapterundefined54255537(0,next_request.signalFromNodeResponse)undefined61736251constants.BaseServerSpanundefined72297325(0,request_meta.getRequestMeta)undefined87618880(0,web_utils.toNodeOutgoingHttpHeaders)undefined89789086lib_constants.NEXT_CACHE_TAGS_HEADERundefined94389530lib_constants.INFINITE_CACHEundefined97209812lib_constants.INFINITE_CACHEundefined1005210133response_cache.CachedRouteKindundefined1070510798(0,send_response/* sendResponse */.I)undefined1146711573(0,utils/* getRevalidateReason */.c)undefined1201012078route_kind.RouteKindundefined1262812709response_cache.CachedRouteKindundefined1317513271(0,request_meta.getRequestMeta)undefined1369413817(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1386413960(0,request_meta.getRequestMeta)undefined1402614134lib_constants.NEXT_CACHE_TAGS_HEADERundefined1445414565(0,cache_control.getCacheControlHeader)undefined1462614719(0,send_response/* sendResponse */.I)undefined1521115289constants.BaseServerSpanundefined1538815454trace_tracer.SpanKindundefined1571015804no_fallback_error_external_.NoFallbackErrorundefined1602516131(0,utils/* getRevalidateReason */.c)undefined1647316566(0,send_response/* sendResponse */.I)undefined, /***/ 29294: Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870: Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 55511: #module.exports = require("crypto");, /***/ 63033: \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 75617: S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; L, /***/ 78335: /***/ (() => { , /***/ 86439: Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");, /***/ 95736: S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; R"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map012undefined1852falseundefined55141{}undefined158194falseundefined197906{}undefined927964falseundefined9671261{}undefined12861306falseundefined13091431{}undefined14561539module.exports = __webpack_require__(44870)undefined, /***/ 96487: } }; ; // load runtime var __webpack_require__ = require("../../../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873], () => (__webpack_exec__(22752))); ,module.exports = __webpack_exports__; })();  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource`%webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourced(() => { var exports = {}; exports.id = 4310; exports.ids = [4310]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashv/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource$/***/ ((module) => { "use strict";  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3421:  )webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcevar __webpack_unused_export__; webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map h :NNQO"$4GMO[0R__webpack_unused_export__ = ()Object.defineProperty(exports, "I", ())__webpack_require__712375508817679 truebuffersourcesizemapshash var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map {"finalSource":true}mapbufferedMap ConcatSourceRawSourcevar __webpack_unused_export__; ReplaceSourceRawSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map>012undefined1458__webpack_unused_export__ = (undefined7878)undefined81127Object.defineProperty(exports, "I", (undefined210210))undefined230236__webpack_require__undefined23825871237undefined284290__webpack_require__undefined29230855088undefined327333__webpack_require__undefined33534717679undefined560594 trueundefined /***/ }) 1 /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map /***/ })   S/***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; ReplaceSourceRawSource "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function() { return sendResponse; } }); const _helpers = require("./base-http/helpers"); const _pipereadable = require("./pipe-readable"); const _utils = require("./web/utils"); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. process.env.NEXT_RUNTIME !== 'edge' && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map>012undefined1458__webpack_unused_export__ = (undefined7878)undefined81127Object.defineProperty(exports, "I", (undefined210210))undefined230236__webpack_require__undefined23825871237undefined284290__webpack_require__undefined29230855088undefined327333__webpack_require__undefined33534717679undefined560594 trueundefined, /***/ 10461:  jwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource kwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceG // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } }  e$&JyK% __webpack_require__4997075617 true0"https://balavpn.abdallabala.com"0buffersourcesizemapshash= const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } 3036__webpack_require__undefined387449970undefined121127__webpack_require__undefined12915375617undefined451479 trueundefined4964970undefined543549undefined22542284"https://balavpn.abdallabala.com"undefined228923110undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  Iwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource=import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map c;^`_%'np "_abdt_~% / t  % ( h ! />`h r_s%4%%% ''''((+(+--//1133N5Rh55555;7O7779999:;;;M=X=__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._".next"0 false: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__.___WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._false{}__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__.___WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__.___WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__.___WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._~A // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new __WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._({ definition: { kind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._ }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return __WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = __WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = __WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: __WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._(req); const nodeNextRes = new __WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._(res); const nextReq = __WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._.fromNodeNextRequest(nodeNextReq, __WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== __WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = __WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(response.headers); if (cacheTags) { headers[__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= __WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._ ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: __WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== __WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = __WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._(cacheEntry.value.headers); if (!(__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._(req, 'minimalMode') && isIsr)) { headers.delete(__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', __WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._(cacheEntry.cacheControl)); } await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._.handleRequest, { spanName: `${method} ${req.url}`, kind: __WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof __WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: __WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await __WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map  =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map z094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741501undefined16521670__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17061714__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19181953".next"undefined195819590undefined19862024 falseundefined22922291: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25972607__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26762765undefined27672773undefined30893109falseundefined31123176{}undefined33223361falseundefined38873902__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43604374__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52165224__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56415654__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62586272__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63086323__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined63516368__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64036424__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70607073__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined80518064__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95009524__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96229643__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined999510008__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1019810211__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1045110465__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1103711048__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1171711735__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1217212180__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1273012744__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1321013223__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1364613672__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1371913732__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1379813819__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1413914159__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1422014231__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1472314736__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1483514842__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1509815112__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1533315351__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1569315704__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sx/\ 2)Bf<_Kkg""@##_ %h%&&&r'')\*,c-/\/11345'6V666d789P99;;J<<==C>1?@@module_compiled.AppRouteRouteModuleroute_kind.RouteKindroute_namespaceObject(0,patch_fetch.patchFetch)(0,app_paths_.normalizeAppPath)no_fallback_error_external_.NoFallbackError(0,trace_tracer.getTracer)(0,request_meta.getRequestMeta)node.NodeNextRequestnode.NodeNextResponsenext_request.NextRequestAdapter(0,next_request.signalFromNodeResponse)constants.BaseServerSpan(0,web_utils.toNodeOutgoingHttpHeaders)lib_constants.NEXT_CACHE_TAGS_HEADERlib_constants.INFINITE_CACHEresponse_cache.CachedRouteKind(0,send_response/* sendResponse */.I)(0,utils/* getRevalidateReason */.c)(0,web_utils.fromNodeOutgoingHttpHeaders)(0,cache_control.getCacheControlHeader)trace_tracer.SpanKindbuffersourcesizemapshashjQ// ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map {"finalSource":true}mapbufferedMap ` ConcatSourceRawSourceG // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js  ReplaceSourceReplaceSourceRawSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } 3036__webpack_require__undefined387449970undefined121127__webpack_require__undefined12915375617undefined451479 trueundefined4964970undefined543549undefined22542284"https://balavpn.abdallabala.com"undefined228923110undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map z094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741501undefined16521670__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17061714__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19181953".next"undefined195819590undefined19862024 falseundefined22922291: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25972607__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26762765undefined27672773undefined30893109falseundefined31123176{}undefined33223361falseundefined38873902__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43604374__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52165224__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56415654__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62586272__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63086323__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined63516368__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64036424__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70607073__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined80518064__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95009524__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96229643__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined999510008__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1019810211__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1045110465__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1103711048__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1171711735__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1217212180__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1273012744__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1321013223__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1364613672__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1371913732__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1379813819__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1413914159__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1422014231__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1472314736__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1483514842__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1509815112__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1533315351__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1569315704__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined888933route_namespaceObjectundefined12391327(0,patch_fetch.patchFetch)undefined23962496(0,app_paths_.normalizeAppPath)undefined29543048no_fallback_error_external_.NoFallbackErrorundefined38903976(0,trace_tracer.getTracer)undefined43934489(0,request_meta.getRequestMeta)undefined50935186node.NodeNextRequestundefined52225317node.NodeNextResponseundefined53455436next_request.NextRequestAdapterundefined54715583(0,next_request.signalFromNodeResponse)undefined62196297constants.BaseServerSpanundefined72757371(0,request_meta.getRequestMeta)undefined88078926(0,web_utils.toNodeOutgoingHttpHeaders)undefined90249132lib_constants.NEXT_CACHE_TAGS_HEADERundefined94849576lib_constants.INFINITE_CACHEundefined97669858lib_constants.INFINITE_CACHEundefined1009810179response_cache.CachedRouteKindundefined1075110844(0,send_response/* sendResponse */.I)undefined1151311619(0,utils/* getRevalidateReason */.c)undefined1205612124route_kind.RouteKindundefined1267412755response_cache.CachedRouteKindundefined1322113317(0,request_meta.getRequestMeta)undefined1374013863(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1391014006(0,request_meta.getRequestMeta)undefined1407214180lib_constants.NEXT_CACHE_TAGS_HEADERundefined1450014611(0,cache_control.getCacheControlHeader)undefined1467214765(0,send_response/* sendResponse */.I)undefined1525715335constants.BaseServerSpanundefined1543415500trace_tracer.SpanKindundefined1575615850no_fallback_error_external_.NoFallbackErrorundefined1607116177(0,utils/* getRevalidateReason */.c)undefined1651916612(0,send_response/* sendResponse */.I)undefined /***/ }) Q/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ })  `_/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; G // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js  ReplaceSource const { handleSsoCallback } = require("../../../../../services/sso-service"); const { getOidcConfig, stateCookieName } = require("../../../../../lib/oidc"); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${"production" === "production" ? "Secure; " : ""}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } export async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090"; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } 3036__webpack_require__undefined387449970undefined121127__webpack_require__undefined12915375617undefined451479 trueundefined4964970undefined543549undefined22542284"https://balavpn.abdallabala.com"undefined228923110undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! =import { AppRouteRouteModule } from "next/dist/server/route-modules/app-route/module.compiled"; import { RouteKind } from "next/dist/server/route-kind"; import { patchFetch as _patchFetch } from "next/dist/server/lib/patch-fetch"; import { getRequestMeta } from "next/dist/server/request-meta"; import { getTracer, SpanKind } from "next/dist/server/lib/trace/tracer"; import { normalizeAppPath } from "next/dist/shared/lib/router/utils/app-paths"; import { NodeNextRequest, NodeNextResponse } from "next/dist/server/base-http/node"; import { NextRequestAdapter, signalFromNodeResponse } from "next/dist/server/web/spec-extension/adapters/next-request"; import { BaseServerSpan } from "next/dist/server/lib/trace/constants"; import { getRevalidateReason } from "next/dist/server/instrumentation/utils"; import { sendResponse } from "next/dist/server/send-response"; import { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from "next/dist/server/web/utils"; import { getCacheControlHeader } from "next/dist/server/lib/cache-control"; import { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from "next/dist/lib/constants"; import { NoFallbackError } from "next/dist/shared/lib/no-fallback-error.external"; import { CachedRouteKind } from "next/dist/server/response-cache"; import * as userland from "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js"; // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new AppRouteRouteModule({ definition: { kind: RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '', relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return _patchFetch({ workAsyncStorage, workUnitAsyncStorage }); } export { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, }; export async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (process.env.TURBOPACK) { srcPage = srcPage.replace(/\/index$/, '') || '/'; } else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = normalizeAppPath(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = getTracer(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: getRequestMeta(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new NodeNextRequest(req); const nodeNextRes = new NodeNextResponse(res); const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!getRequestMeta(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = toNodeOutgoingHttpHeaders(response.headers); if (cacheTags) { headers[NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!getRequestMeta(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers); if (!(getRequestMeta(req, 'minimalMode') && isIsr)) { headers.delete(NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl)); } await sendResponse(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: getRevalidateReason({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await sendResponse(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map z094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741501undefined16521670__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17061714__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19181953".next"undefined195819590undefined19862024 falseundefined22922291: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined25972607__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined26762765undefined27672773undefined30893109falseundefined31123176{}undefined33223361falseundefined38873902__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined43604374__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52165224__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56415654__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined62586272__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63086323__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined63516368__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64036424__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined70607073__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined80518064__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95009524__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96229643__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined999510008__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1019810211__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1045110465__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1103711048__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1171711735__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1217212180__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1273012744__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1321013223__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1364613672__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1371913732__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1379813819__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1413914159__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1422014231__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1472314736__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1483514842__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1509815112__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1533315351__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1569315704__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined888933route_namespaceObjectundefined12391327(0,patch_fetch.patchFetch)undefined23962496(0,app_paths_.normalizeAppPath)undefined29543048no_fallback_error_external_.NoFallbackErrorundefined38903976(0,trace_tracer.getTracer)undefined43934489(0,request_meta.getRequestMeta)undefined50935186node.NodeNextRequestundefined52225317node.NodeNextResponseundefined53455436next_request.NextRequestAdapterundefined54715583(0,next_request.signalFromNodeResponse)undefined62196297constants.BaseServerSpanundefined72757371(0,request_meta.getRequestMeta)undefined88078926(0,web_utils.toNodeOutgoingHttpHeaders)undefined90249132lib_constants.NEXT_CACHE_TAGS_HEADERundefined94849576lib_constants.INFINITE_CACHEundefined97669858lib_constants.INFINITE_CACHEundefined1009810179response_cache.CachedRouteKindundefined1075110844(0,send_response/* sendResponse */.I)undefined1151311619(0,utils/* getRevalidateReason */.c)undefined1205612124route_kind.RouteKindundefined1267412755response_cache.CachedRouteKindundefined1322113317(0,request_meta.getRequestMeta)undefined1374013863(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1391014006(0,request_meta.getRequestMeta)undefined1407214180lib_constants.NEXT_CACHE_TAGS_HEADERundefined1450014611(0,cache_control.getCacheControlHeader)undefined1467214765(0,send_response/* sendResponse */.I)undefined1525715335constants.BaseServerSpanundefined1543415500trace_tracer.SpanKindundefined1575615850no_fallback_error_external_.NoFallbackErrorundefined1607116177(0,utils/* getRevalidateReason */.c)undefined1651916612(0,send_response/* sendResponse */.I)undefined, /***/ 10846:  3webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ })  Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 17964:  0webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource "use strict"; const { PrismaClient } = require("@prisma/client"); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if ("production" !== "production") { globalForPrisma.__cosmicPrisma = prisma; } module.exports = { prisma }; d '-/>C__webpack_require__96330false{}buffersourcesizemapshash const { PrismaClient } = __webpack_require__(96330); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if (false) {} module.exports = { prisma }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource "use strict"; const { PrismaClient } = require("@prisma/client"); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if ("production" !== "production") { globalForPrisma.__cosmicPrisma = prisma; } module.exports = { prisma }; c012undefined3945__webpack_require__undefined476296330undefined175203falseundefined206253{}undefined /***/ }) +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { PrismaClient } = __webpack_require__(96330); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if (false) {} module.exports = { prisma }; /***/ })  S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict";  "use strict"; const { PrismaClient } = require("@prisma/client"); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if ("production" !== "production") { globalForPrisma.__cosmicPrisma = prisma; } module.exports = { prisma }; c012undefined3945__webpack_require__undefined476296330undefined175203falseundefined206253{}undefined, /***/ 29294:  6webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ })  Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 44870:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ })  Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 49970:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource `webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceu"use strict"; const { prisma } = require("../lib/prisma"); const { createSession } = require("./auth-service"); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = require("../lib/oidc"); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; h !')7U[]lC__webpack_require__179646855975617buffersourcesizemapshasho const { prisma } = __webpack_require__(17964); const { createSession } = __webpack_require__(68559); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = __webpack_require__(75617); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSourceu"use strict"; const { prisma } = require("../lib/prisma"); const { createSession } = require("./auth-service"); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = require("../lib/oidc"); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; 012undefined3339__webpack_require__undefined415517964undefined8591__webpack_require__undefined9310868559undefined189195__webpack_require__undefined19720975617undefined /***/ }) /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { prisma } = __webpack_require__(17964); const { createSession } = __webpack_require__(68559); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = __webpack_require__(75617); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; /***/ })  S/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; u"use strict"; const { prisma } = require("../lib/prisma"); const { createSession } = require("./auth-service"); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = require("../lib/oidc"); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; 012undefined3339__webpack_require__undefined415517964undefined8591__webpack_require__undefined9310868559undefined189195__webpack_require__undefined19720975617undefined, /***/ 55511:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; #module.exports = require("crypto");  /***/ }) Q/***/ ((module) => { "use strict"; module.exports = require("crypto"); /***/ })  #module.exports = require("crypto");, /***/ 63033:  ;webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ })  \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");, /***/ 68559:  Hwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource&"use strict"; const { prisma } = require("../lib/prisma"); const { randomBytes } = require("crypto"); const bcrypt = require("bcryptjs"); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; k !')7SY[bu{}@__webpack_require__179645551187082buffersourcesizemapshash+ const { prisma } = __webpack_require__(17964); const { randomBytes } = __webpack_require__(55511); const bcrypt = __webpack_require__(87082); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource&"use strict"; const { prisma } = require("../lib/prisma"); const { randomBytes } = require("crypto"); const bcrypt = require("bcryptjs"); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; 012undefined3339__webpack_require__undefined415517964undefined8389__webpack_require__undefined919855511undefined117123__webpack_require__undefined12513487082undefined /***/ }) /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { prisma } = __webpack_require__(17964); const { randomBytes } = __webpack_require__(55511); const bcrypt = __webpack_require__(87082); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; /***/ })  &"use strict"; const { prisma } = require("../lib/prisma"); const { randomBytes } = require("crypto"); const bcrypt = require("bcryptjs"); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; 012undefined3339__webpack_require__undefined415517964undefined8389__webpack_require__undefined919855511undefined117123__webpack_require__undefined12513487082undefined, /***/ 75617:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; d &,.5C__webpack_require__55511"https://balavpn.abdallabala.com"0buffersourcesizemapshash const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; ~012undefined3844__webpack_require__undefined465355511undefined444474"https://balavpn.abdallabala.com"undefined4795010undefined /***/ }) ]/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; /***/ })  "use strict"; const { randomBytes } = require("crypto"); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || (process.env.NEXT_PUBLIC_APP_URL || "http://localhost:8090") + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; ~012undefined3844__webpack_require__undefined465355511undefined444474"https://balavpn.abdallabala.com"undefined4795010undefined, /***/ 78335:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) y/***/ (() => { /***/ }) z} ~/***/ (() => { ~, /***/ 86439:  +webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) oz/***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }) ps tuvLmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");uw, /***/ 95736:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource ~webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceR"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map  c 47Nfalse{}module.exports = __webpack_require__(44870)buffersourcesizemapshash if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map {"finalSource":true}mapbufferedMap ReplaceSourceRawSourceR"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map012undefined1852falseundefined55141{}undefined158194falseundefined197906{}undefined927964falseundefined9671261{}undefined12861306falseundefined13091431{}undefined14561539module.exports = __webpack_require__(44870)undefined /***/ }) fS/***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map /***/ }) gj kzR"use strict"; if (process.env.NEXT_RUNTIME === 'edge') { module.exports = require('next/dist/server/route-modules/app-route/module.js'); } else { if (process.env.__NEXT_EXPERIMENTAL_REACT) { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo-experimental.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route-experimental.runtime.prod.js'); } } } else { if (process.env.NODE_ENV === 'development') { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.dev.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.dev.js'); } } else { if (process.env.TURBOPACK) { module.exports = require('next/dist/compiled/next-server/app-route-turbo.runtime.prod.js'); } else { module.exports = require('next/dist/compiled/next-server/app-route.runtime.prod.js'); } } } } //# sourceMappingURL=module.compiled.js.map012undefined1852falseundefined55141{}undefined158194falseundefined197906{}undefined927964falseundefined9671261{}undefined12861306falseundefined13091431{}undefined14561539module.exports = __webpack_require__(44870)undefinedkm, /***/ 96330:   webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource$/***/ ((module) => { "use strict"; +module.exports = require("@prisma/client");  /***/ }) \Y/***/ ((module) => { "use strict"; module.exports = require("@prisma/client"); /***/ }) ]` abc+module.exports = require("@prisma/client");bd, /***/ 96487:  4webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ (() => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource buffersourcesizemapshash {"finalSource":true}mapbufferedMap ReplaceSourceRawSource /***/ }) S UX Yh[] }; ; // load runtime var __webpack_require__ = require("../../../../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873,7082], () => (__webpack_exec__(10461))); ,module.exports = __webpack_exports__; })(); q(() => { var exports = {}; exports.id = 4310; exports.ids = [4310]; exports.modules = { /***/ 261: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 3421: /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var __webpack_unused_export__; __webpack_unused_export__ = ({ value: true }); Object.defineProperty(exports, "I", ({ enumerable: true, get: function() { return sendResponse; } })); const _helpers = __webpack_require__(71237); const _pipereadable = __webpack_require__(55088); const _utils = __webpack_require__(17679); async function sendResponse(req, res, response, waitUntil) { if (// The type check here ensures that `req` is correctly typed, and the // environment variable check provides dead code elimination. true && (0, _helpers.isNodeNextResponse)(res)) { var // Copy over the response headers. _response_headers; // Copy over the response status. res.statusCode = response.status; res.statusMessage = response.statusText; // TODO: this is not spec-compliant behavior and we should not restrict // headers that are allowed to appear many times. // // See: // https://github.com/vercel/next.js/pull/70127 const headersWithMultipleValuesAllowed = [ // can add more headers to this list if needed 'set-cookie', 'www-authenticate', 'proxy-authenticate', 'vary' ]; (_response_headers = response.headers) == null ? void 0 : _response_headers.forEach((value, name)=>{ // `x-middleware-set-cookie` is an internal header not needed for the response if (name.toLowerCase() === 'x-middleware-set-cookie') { return; } // The append handling is special cased for `set-cookie`. if (name.toLowerCase() === 'set-cookie') { // TODO: (wyattjoh) replace with native response iteration when we can upgrade undici for (const cookie of (0, _utils.splitCookiesString)(value)){ res.appendHeader(name, cookie); } } else { // only append the header if it is either not present in the outbound response // or if the header supports multiple values const isHeaderPresent = typeof res.getHeader(name) !== 'undefined'; if (headersWithMultipleValuesAllowed.includes(name.toLowerCase()) || !isHeaderPresent) { res.appendHeader(name, value); } } }); /** * The response can't be directly piped to the underlying response. The * following is duplicated from the edge runtime handler. * * See packages/next/server/next-server.ts */ const { originalResponse } = res; // A response body must not be sent for HEAD requests. See https://httpwg.org/specs/rfc9110.html#HEAD if (response.body && req.method !== 'HEAD') { await (0, _pipereadable.pipeToNodeResponse)(response.body, originalResponse, waitUntil); } else { originalResponse.end(); } } } //# sourceMappingURL=send-response.js.map /***/ }), /***/ 10461: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { handler: () => (/* binding */ handler), patchFetch: () => (/* binding */ patchFetch), routeModule: () => (/* binding */ routeModule), serverHooks: () => (/* binding */ serverHooks), workAsyncStorage: () => (/* binding */ workAsyncStorage), workUnitAsyncStorage: () => (/* binding */ workUnitAsyncStorage) }); // NAMESPACE OBJECT: ./src/app/api/auth/sso/callback/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET) }); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-modules/app-route/module.compiled.js var module_compiled = __webpack_require__(95736); // EXTERNAL MODULE: ./node_modules/next/dist/server/route-kind.js var route_kind = __webpack_require__(9117); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/patch-fetch.js var patch_fetch = __webpack_require__(4044); // EXTERNAL MODULE: ./node_modules/next/dist/server/request-meta.js var request_meta = __webpack_require__(39326); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/tracer.js var trace_tracer = __webpack_require__(32324); // EXTERNAL MODULE: external "next/dist/shared/lib/router/utils/app-paths" var app_paths_ = __webpack_require__(261); // EXTERNAL MODULE: ./node_modules/next/dist/server/base-http/node.js var node = __webpack_require__(54290); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/spec-extension/adapters/next-request.js var next_request = __webpack_require__(85328); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/trace/constants.js var constants = __webpack_require__(38928); // EXTERNAL MODULE: ./node_modules/next/dist/server/instrumentation/utils.js var utils = __webpack_require__(46595); // EXTERNAL MODULE: ./node_modules/next/dist/server/send-response.js var send_response = __webpack_require__(3421); // EXTERNAL MODULE: ./node_modules/next/dist/server/web/utils.js var web_utils = __webpack_require__(17679); // EXTERNAL MODULE: ./node_modules/next/dist/server/lib/cache-control.js var cache_control = __webpack_require__(41681); // EXTERNAL MODULE: ./node_modules/next/dist/lib/constants.js var lib_constants = __webpack_require__(63446); // EXTERNAL MODULE: external "next/dist/shared/lib/no-fallback-error.external" var no_fallback_error_external_ = __webpack_require__(86439); // EXTERNAL MODULE: ./node_modules/next/dist/server/response-cache/index.js var response_cache = __webpack_require__(51356); ;// ./src/app/api/auth/sso/callback/route.js const { handleSsoCallback } = __webpack_require__(49970); const { getOidcConfig, stateCookieName } = __webpack_require__(75617); const SESSION_MAX_AGE = 60 * 60 * 24 * 7; function getCookie(name, header) { const match = header?.match(new RegExp(`(?:^|;)\\s*${name}=([^;]+)`)); return match ? decodeURIComponent(match[1]) : null; } function setCookie(name, value, maxAge) { return `${name}=${value}; HttpOnly; ${ true ? "Secure; " : 0}SameSite=Lax; Path=/; Max-Age=${maxAge}`; } async function GET(request) { try { const { searchParams } = new URL(request.url); const code = searchParams.get("code"); const returnedState = searchParams.get("state"); const error = searchParams.get("error"); if (error) { return new Response(JSON.stringify({ error: `SSO provider returned: ${error}` }), { status: 400, headers: { "Content-Type": "application/json" } }); } if (!code) { return new Response(JSON.stringify({ error: "Missing authorization code" }), { status: 400, headers: { "Content-Type": "application/json" } }); } const cookieHeader = request.headers.get("cookie") || ""; const storedState = getCookie(stateCookieName(), cookieHeader); if (returnedState && storedState && returnedState !== storedState) { return new Response(JSON.stringify({ error: "State mismatch — possible CSRF" }), { status: 403, headers: { "Content-Type": "application/json" } }); } const { session } = await handleSsoCallback(code); const stateClear = `${stateCookieName()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`; const sessionCookie = setCookie("cosmic_session", session.token, SESSION_MAX_AGE); const config = getOidcConfig(); const baseUrl = config?.redirectUrl ? new URL(config.redirectUrl).origin : "https://balavpn.abdallabala.com" || 0; return new Response(null, { status: 302, headers: { Location: `${baseUrl}/dashboard`, "Set-Cookie": `${sessionCookie}, ${stateClear}`, "Cache-Control": "no-store" } }); } catch (error) { const msg = error.message || "SSO callback failed"; const status = error.status || 500; return new Response(`

SSO Error

${msg}

Back to login`, { status, headers: { "Content-Type": "text/html" } }); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&name=app%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pagePath=private-next-app-dir%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute.js&appDir=C%3A%5CUsers%5Cabd_b%5COneDrive%5CDesktop%5CCOSMIC%20AI-Risk%20Dashboard%5CStep%2012%20is%20complete%20Final%20QA%2C%20Demo%20Readiness%2C%20and%20Submission%20Freeze%5Capplication%5Csaas-app%5Csrc%5Capp&appPaths=%2Fapi%2Fauth%2Fsso%2Fcallback%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! // We inject the nextConfigOutput here so that we can use them in the route // module. const nextConfigOutput = "standalone" const routeModule = new module_compiled.AppRouteRouteModule({ definition: { kind: route_kind.RouteKind.APP_ROUTE, page: "/api/auth/sso/callback/route", pathname: "/api/auth/sso/callback", filename: "route", bundlePath: "app/api/auth/sso/callback/route" }, distDir: ".next" || 0, relativeProjectDir: false || '', resolvedPagePath: "C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js", nextConfigOutput, userland: route_namespaceObject }); // Pull out the exports that we need to expose from the module. This should // be eliminated when we've moved the other routes to the new format. These // are used to hook into the route. const { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule; function patchFetch() { return (0,patch_fetch.patchFetch)({ workAsyncStorage, workUnitAsyncStorage }); } async function handler(req, res, ctx) { var _nextConfig_experimental; let srcPage = "/api/auth/sso/callback/route"; // turbopack doesn't normalize `/index` in the page name // so we need to to process dynamic routes properly // TODO: fix turbopack providing differing value from webpack if (false) {} else if (srcPage === '/index') { // we always normalize /index specifically srcPage = '/'; } const multiZoneDraftMode = false; const prepareResult = await routeModule.prepare(req, res, { srcPage, multiZoneDraftMode }); if (!prepareResult) { res.statusCode = 400; res.end('Bad Request'); ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve()); return null; } const { buildId, params, nextConfig, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname } = prepareResult; const normalizedSrcPage = (0,app_paths_.normalizeAppPath)(srcPage); let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]); if (isIsr && !isDraftMode) { const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]); const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]; if (prerenderInfo) { if (prerenderInfo.fallback === false && !isPrerendered) { throw new no_fallback_error_external_.NoFallbackError(); } } } let cacheKey = null; if (isIsr && !routeModule.isDev && !isDraftMode) { cacheKey = resolvedPathname; // ensure /index and / is normalized to one key cacheKey = cacheKey === '/index' ? '/' : cacheKey; } const supportsDynamicResponse = // If we're in development, we always support dynamic HTML routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports // dynamic HTML. !isIsr; // This is a revalidation request if the request is for a static // page and it is not being resumed from a postponed render and // it is not a dynamic RSC request then it is a revalidation // request. const isRevalidate = isIsr && !supportsDynamicResponse; const method = req.method || 'GET'; const tracer = (0,trace_tracer.getTracer)(); const activeSpan = tracer.getActiveScopeSpan(); const context = { params, prerenderManifest, renderOpts: { experimental: { cacheComponents: Boolean(nextConfig.experimental.cacheComponents), authInterrupts: Boolean(nextConfig.experimental.authInterrupts) }, supportsDynamicResponse, incrementalCache: (0,request_meta.getRequestMeta)(req, 'incrementalCache'), cacheLifeProfiles: (_nextConfig_experimental = nextConfig.experimental) == null ? void 0 : _nextConfig_experimental.cacheLife, isRevalidate, waitUntil: ctx.waitUntil, onClose: (cb)=>{ res.on('close', cb); }, onAfterTaskError: undefined, onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext) }, sharedContext: { buildId } }; const nodeNextReq = new node.NodeNextRequest(req); const nodeNextRes = new node.NodeNextResponse(res); const nextReq = next_request.NextRequestAdapter.fromNodeNextRequest(nodeNextReq, (0,next_request.signalFromNodeResponse)(res)); try { const invokeRouteModule = async (span)=>{ return routeModule.handle(nextReq, context).finally(()=>{ if (!span) return; span.setAttributes({ 'http.status_code': res.statusCode, 'next.rsc': false }); const rootSpanAttributes = tracer.getRootSpanAttributes(); // We were unable to get attributes, probably OTEL is not enabled if (!rootSpanAttributes) { return; } if (rootSpanAttributes.get('next.span_type') !== constants.BaseServerSpan.handleRequest) { console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`); return; } const route = rootSpanAttributes.get('next.route'); if (route) { const name = `${method} ${route}`; span.setAttributes({ 'next.route': route, 'http.route': route, 'next.span_name': name }); span.updateName(name); } else { span.updateName(`${method} ${req.url}`); } }); }; const handleResponse = async (currentSpan)=>{ var _cacheEntry_value; const responseGenerator = async ({ previousCacheEntry })=>{ try { if (!(0,request_meta.getRequestMeta)(req, 'minimalMode') && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) { res.statusCode = 404; // on-demand revalidate always sets this header res.setHeader('x-nextjs-cache', 'REVALIDATED'); res.end('This page could not be found'); return null; } const response = await invokeRouteModule(currentSpan); req.fetchMetrics = context.renderOpts.fetchMetrics; let pendingWaitUntil = context.renderOpts.pendingWaitUntil; // Attempt using provided waitUntil if available // if it's not we fallback to sendResponse's handling if (pendingWaitUntil) { if (ctx.waitUntil) { ctx.waitUntil(pendingWaitUntil); pendingWaitUntil = undefined; } } const cacheTags = context.renderOpts.collectedTags; // If the request is for a static response, we can cache it so long // as it's not edge. if (isIsr) { const blob = await response.blob(); // Copy the headers from the response. const headers = (0,web_utils.toNodeOutgoingHttpHeaders)(response.headers); if (cacheTags) { headers[lib_constants.NEXT_CACHE_TAGS_HEADER] = cacheTags; } if (!headers['content-type'] && blob.type) { headers['content-type'] = blob.type; } const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= lib_constants.INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate; const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= lib_constants.INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire; // Create the cache entry for the response. const cacheEntry = { value: { kind: response_cache.CachedRouteKind.APP_ROUTE, status: response.status, body: Buffer.from(await blob.arrayBuffer()), headers }, cacheControl: { revalidate, expire } }; return cacheEntry; } else { // send response without caching if not ISR await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil); return null; } } catch (err) { // if this is a background revalidate we need to report // the request error here as it won't be bubbled if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: srcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }, routerServerContext); } throw err; } }; const cacheEntry = await routeModule.handleResponse({ req, nextConfig, cacheKey, routeKind: route_kind.RouteKind.APP_ROUTE, isFallback: false, prerenderManifest, isRoutePPREnabled: false, isOnDemandRevalidate, revalidateOnlyGenerated, responseGenerator, waitUntil: ctx.waitUntil }); // we don't create a cacheEntry for ISR if (!isIsr) { return null; } if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== response_cache.CachedRouteKind.APP_ROUTE) { var _cacheEntry_value1; throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), "__NEXT_ERROR_CODE", { value: "E701", enumerable: false, configurable: true }); } if (!(0,request_meta.getRequestMeta)(req, 'minimalMode')) { res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT'); } // Draft mode should never be cached if (isDraftMode) { res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate'); } const headers = (0,web_utils.fromNodeOutgoingHttpHeaders)(cacheEntry.value.headers); if (!((0,request_meta.getRequestMeta)(req, 'minimalMode') && isIsr)) { headers.delete(lib_constants.NEXT_CACHE_TAGS_HEADER); } // If cache control is already set on the response we don't // override it to allow users to customize it via next.config if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) { headers.set('Cache-Control', (0,cache_control.getCacheControlHeader)(cacheEntry.cacheControl)); } await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(cacheEntry.value.body, { headers, status: cacheEntry.value.status || 200 })); return null; }; // TODO: activeSpan code path is for when wrapped by // next-server can be removed when this is no longer used if (activeSpan) { await handleResponse(activeSpan); } else { await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(constants.BaseServerSpan.handleRequest, { spanName: `${method} ${req.url}`, kind: trace_tracer.SpanKind.SERVER, attributes: { 'http.method': method, 'http.target': req.url } }, handleResponse)); } } catch (err) { if (!(err instanceof no_fallback_error_external_.NoFallbackError)) { await routeModule.onRequestError(req, err, { routerKind: 'App Router', routePath: normalizedSrcPage, routeType: 'route', revalidateReason: (0,utils/* getRevalidateReason */.c)({ isRevalidate, isOnDemandRevalidate }) }); } // rethrow so that we can handle serving error page // If this is during static generation, throw the error again. if (isIsr) throw err; // Otherwise, send a 500 response. await (0,send_response/* sendResponse */.I)(nodeNextReq, nodeNextRes, new Response(null, { status: 500 })); return null; } } //# sourceMappingURL=app-route.js.map /***/ }), /***/ 10846: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 17964: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { PrismaClient } = __webpack_require__(96330); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if (false) {} module.exports = { prisma }; /***/ }), /***/ 29294: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 44870: /***/ ((module) => { "use strict"; module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 49970: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { prisma } = __webpack_require__(17964); const { createSession } = __webpack_require__(68559); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = __webpack_require__(75617); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; /***/ }), /***/ 55511: /***/ ((module) => { "use strict"; module.exports = require("crypto"); /***/ }), /***/ 63033: /***/ ((module) => { "use strict"; module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 68559: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { prisma } = __webpack_require__(17964); const { randomBytes } = __webpack_require__(55511); const bcrypt = __webpack_require__(87082); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; /***/ }), /***/ 75617: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; const { randomBytes } = __webpack_require__(55511); function getOidcConfig() { if (process.env.COSMIC_SSO_ENABLED !== "true") return null; const issuer = process.env.COSMIC_OIDC_ISSUER; const clientId = process.env.COSMIC_OIDC_CLIENT_ID; const clientSecret = process.env.COSMIC_OIDC_CLIENT_SECRET; if (!issuer || !clientId || !clientSecret) return null; const redirectUrl = process.env.COSMIC_OIDC_REDIRECT_URL || ("https://balavpn.abdallabala.com" || 0) + "/api/auth/sso/callback"; return { issuer, clientId, clientSecret, redirectUrl }; } async function discoverProvider(issuer) { const discoUrl = process.env.COSMIC_OIDC_DISCOVERY_URL || issuer.replace(/\/+$/, "") + "/.well-known/openid-configuration"; const res = await fetch(discoUrl); if (!res.ok) throw new Error(`OIDC discovery failed (${res.status}) for ${discoUrl}`); return res.json(); } function base64UrlEncode(buf) { return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function generateNonce() { return base64UrlEncode(randomBytes(32)); } function generateState() { return base64UrlEncode(randomBytes(32)); } function decodeJwtPayload(jwt) { const parts = jwt.split("."); if (parts.length !== 3) throw new Error("Invalid JWT format"); const payload = Buffer.from(parts[1], "base64url").toString("utf8"); return JSON.parse(payload); } function getCookieExpires() { return new Date(Date.now() + 10 * 60 * 1000).toUTCString(); } function stateCookieName() { return "cosmic_sso_state"; } module.exports = { getOidcConfig, discoverProvider, generateState, generateNonce, decodeJwtPayload, base64UrlEncode, stateCookieName, getCookieExpires }; /***/ }), /***/ 78335: /***/ (() => { /***/ }), /***/ 86439: /***/ ((module) => { "use strict"; module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 95736: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { if (false) {} else { if (false) {} else { if (false) {} else { module.exports = __webpack_require__(44870); } } } } //# sourceMappingURL=module.compiled.js.map /***/ }), /***/ 96330: /***/ ((module) => { "use strict"; module.exports = require("@prisma/client"); /***/ }), /***/ 96487: /***/ (() => { /***/ }) }; ; // load runtime var __webpack_require__ = require("../../../../../webpack-runtime.js"); __webpack_require__.C(exports); var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873,7082], () => (__webpack_exec__(10461))); module.exports = __webpack_exports__; })(); u  @d(() => { var exports = {}; exports.id = 4310; exports.ids = [4310]; exports.modules = { /***/ 261: u, /***/ 10461: tt, /***/ 17964: s "use strict"; const { PrismaClient } = require("@prisma/client"); const globalForPrisma = globalThis; const prisma = globalForPrisma.__cosmicPrisma || new PrismaClient(); if ("production" !== "production") { globalForPrisma.__cosmicPrisma = prisma; } module.exports = { prisma }; c012undefined3945__webpack_require__undefined476296330undefined175203falseundefined206253{}undefined~~, /***/ 49970: }pu"use strict"; const { prisma } = require("../lib/prisma"); const { createSession } = require("./auth-service"); const { getOidcConfig, discoverProvider, generateNonce, decodeJwtPayload } = require("../lib/oidc"); async function exchangeCode(code, redirectUrl, clientId, clientSecret, tokenEndpoint) { const body = new URLSearchParams({ grant_type: "authorization_code", code, redirect_uri: redirectUrl, client_id: clientId, client_secret: clientSecret }); const res = await fetch(tokenEndpoint, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: body.toString() }); if (!res.ok) { const text = await res.text(); throw new Error(`Token exchange failed (${res.status}): ${text}`); } return res.json(); } async function handleSsoCallback(code) { const config = getOidcConfig(); if (!config) throw Object.assign(new Error("SSO not configured"), { status: 501 }); const disco = await discoverProvider(config.issuer); const tokens = await exchangeCode(code, config.redirectUrl, config.clientId, config.clientSecret, disco.token_endpoint); const idToken = tokens.id_token; if (!idToken) throw Object.assign(new Error("No id_token returned from provider"), { status: 400 }); const claims = decodeJwtPayload(idToken); const email = claims.email; if (!email) throw Object.assign(new Error("Email not provided by SSO provider"), { status: 400 }); const displayName = claims.name || claims.preferred_username || email.split("@")[0]; let user = await prisma.user.findUnique({ where: { email } }); if (!user) { user = await prisma.user.create({ data: { email, displayName, emailVerifiedAt: new Date() } }); const slug = displayName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: `${displayName}'s Organization`, slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3 } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50 } }); } else { await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date(), displayName } }); } const session = await createSession(user.id); return { user, session }; } module.exports = { handleSsoCallback }; 012undefined3339__webpack_require__undefined415517964undefined8591__webpack_require__undefined9310868559undefined189195__webpack_require__undefined19720975617undefined{{, /***/ 68559: zm&"use strict"; const { prisma } = require("../lib/prisma"); const { randomBytes } = require("crypto"); const bcrypt = require("bcryptjs"); const SESSION_DURATION_MS = 1000 * 60 * 60 * 24 * 7; function generateSessionToken() { return randomBytes(48).toString("hex"); } async function hashPassword(password) { return bcrypt.hash(password, 12); } async function verifyPassword(password, hash) { if (!hash) return false; return bcrypt.compare(password, hash); } async function createSession(userId) { const token = generateSessionToken(); const session = await prisma.session.create({ data: { userId, token, expiresAt: new Date(Date.now() + SESSION_DURATION_MS) } }); return session; } async function getSession(token) { if (!token) return null; const session = await prisma.session.findUnique({ where: { token }, include: { user: { include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } } } }); if (!session || session.expiresAt < new Date()) { if (session) { await prisma.session.delete({ where: { id: session.id } }).catch(()=>{}); } return null; } return session; } async function signup({ email, displayName, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const existing = await prisma.user.findUnique({ where: { email } }); if (existing) { const error = new Error("Email already registered"); error.status = 409; throw error; } const passwordHash = await hashPassword(password); const user = await prisma.user.create({ data: { email, displayName: displayName || email.split("@")[0], passwordHash, emailVerifiedAt: new Date() } }); const slug = (displayName || email.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") + "-" + Date.now().toString(36); const role = await prisma.role.upsert({ where: { code: "owner" }, update: {}, create: { code: "owner", name: "Owner", permissions: [ "*" ], system: true } }); const org = await prisma.organization.create({ data: { name: (displayName || email.split("@")[0]) + "'s Organization", slug, status: "TRIAL", planCode: "pilot", manualBilling: true } }); await prisma.membership.create({ data: { organizationId: org.id, userId: user.id, roleId: role.id, status: "ACTIVE" } }); await prisma.subscription.create({ data: { organizationId: org.id, source: "MANUAL", status: "TRIALING", planCode: "pilot", userLimit: 5, projectLimit: 3, reportLimitMonthly: 25, integrationLimit: 2, adminOverride: false } }).catch(()=>{}); const workspace = await prisma.workspace.create({ data: { organizationId: org.id, name: "Default Workspace", slug: "default-workspace", type: "B2B_TEAM", status: "TRIAL" } }); await prisma.project.create({ data: { workspaceId: workspace.id, name: "My Project", projectType: "AI-Enabler", status: "Active", riskAppetite: 50, description: "Project created during signup" } }); const session = await createSession(user.id); return { user, session }; } async function login({ email, password }) { if (!email || !password) { const error = new Error("Email and password are required"); error.status = 400; throw error; } const user = await prisma.user.findUnique({ where: { email }, include: { memberships: { where: { status: "ACTIVE" }, include: { organization: true, role: true } } } }); if (!user) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } const valid = await verifyPassword(password, user.passwordHash); if (!valid) { const error = new Error("Invalid email or password"); error.status = 401; throw error; } await prisma.user.update({ where: { id: user.id }, data: { lastLoginAt: new Date() } }); const session = await createSession(user.id); return { user, session }; } async function logout(token) { if (!token) return; await prisma.session.deleteMany({ where: { token } }).catch(()=>{}); } async function getActorFromSession(token) { const session = await getSession(token); if (!session) return null; return session.user; } module.exports = { signup, login, logout, getSession, getActorFromSession, createSession, SESSION_DURATION_MS }; 012undefined3339__webpack_require__undefined415517964undefined8389__webpack_require__undefined919855511undefined117123__webpack_require__undefined12513487082undefined||xk.l||xk||x|||xk||, /***/ 96330: w{+module.exports = require("@prisma/client");zzvizz }; ; // load runtime var __webpack_require__ = require("../../../../../webpack-runtime.js"); __webpack_require__.C(exports); yvar __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873,7082], () => (__webpack_exec__(10461))); xY#(()=>{var a={};a.id=6696,a.ids=[6696],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},22752:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>z});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356);let{getOidcConfig:u,discoverProvider:v,generateState:w,stateCookieName:x,getCookieExpires:y}=c(75617);async function z(){try{let a=u();if(!a)return new Response(JSON.stringify({error:"SSO not enabled"}),{status:501,headers:{"Content-Type":"application/json"}});let b=await v(a.issuer),c=w(),d=new URLSearchParams({response_type:"code",client_id:a.clientId,redirect_uri:a.redirectUrl,scope:"openid email profile",state:c}),e=`${b.authorization_endpoint}?${d.toString()}`;return new Response(null,{status:302,headers:{Location:e,"Set-Cookie":`${x()}=${c}; HttpOnly; SameSite=Lax; Path=/; Expires=${y()}`}})}catch(a){return new Response(JSON.stringify({error:a.message}),{status:500,headers:{"Content-Type":"application/json"}})}}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/auth/sso/route",pathname:"/api/auth/sso",filename:"route",bundlePath:"app/api/auth/sso/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\route.js",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){var d;let e="/api/auth/sso/route";"/index"===e&&(e="/");let g=await A.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(y.dynamicRoutes[E]||y.routes[D]);if(F&&!x){let a=!!y.routes[D],b=y.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||A.isDev||x||(G="/index"===(G=D)?"/":G);let H=!0===A.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>A.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>A.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await A.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},z),b}},l=await A.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},75617:(a,b,c)=>{"use strict";let{randomBytes:d}=c(55511);function e(a){return a.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}a.exports={getOidcConfig:function(){if("true"!==process.env.COSMIC_SSO_ENABLED)return null;let a=process.env.COSMIC_OIDC_ISSUER,b=process.env.COSMIC_OIDC_CLIENT_ID,c=process.env.COSMIC_OIDC_CLIENT_SECRET;return a&&b&&c?{issuer:a,clientId:b,clientSecret:c,redirectUrl:process.env.COSMIC_OIDC_REDIRECT_URL||"https://balavpn.abdallabala.com/api/auth/sso/callback"}:null},discoverProvider:async function a(a){let b=process.env.COSMIC_OIDC_DISCOVERY_URL||a.replace(/\/+$/,"")+"/.well-known/openid-configuration",c=await fetch(b);if(!c.ok)throw Error(`OIDC discovery failed (${c.status}) for ${b}`);return c.json()},generateState:function(){return e(d(32))},generateNonce:function(){return e(d(32))},decodeJwtPayload:function(a){let b=a.split(".");if(3!==b.length)throw Error("Invalid JWT format");return JSON.parse(Buffer.from(b[1],"base64url").toString("utf8"))},base64UrlEncode:e,stateCookieName:function(){return"cosmic_sso_state"},getCookieExpires:function(){return new Date(Date.now()+6e5).toUTCString()}}},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873],()=>b(b.s=22752));module.exports=c})(); V:(()=>{var a={};a.id=4310,a.ids=[4310],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10461:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>D,patchFetch:()=>C,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var d={};c.r(d),c.d(d,{GET:()=>x});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356);let{handleSsoCallback:u}=c(49970),{getOidcConfig:v,stateCookieName:w}=c(75617);async function x(a){try{var b;let{searchParams:c}=new URL(a.url),d=c.get("code"),e=c.get("state"),f=c.get("error");if(f)return new Response(JSON.stringify({error:`SSO provider returned: ${f}`}),{status:400,headers:{"Content-Type":"application/json"}});if(!d)return new Response(JSON.stringify({error:"Missing authorization code"}),{status:400,headers:{"Content-Type":"application/json"}});let g=a.headers.get("cookie")||"",h=function(a,b){let c=b?.match(RegExp(`(?:^|;)\\s*${a}=([^;]+)`));return c?decodeURIComponent(c[1]):null}(w(),g);if(e&&h&&e!==h)return new Response(JSON.stringify({error:"State mismatch — possible CSRF"}),{status:403,headers:{"Content-Type":"application/json"}});let{session:i}=await u(d),j=`${w()}=; HttpOnly; SameSite=Lax; Path=/; Max-Age=0`,k=(b=i.token,`cosmic_session=${b}; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=604800`),l=v(),m=l?.redirectUrl?new URL(l.redirectUrl).origin:"https://balavpn.abdallabala.com";return new Response(null,{status:302,headers:{Location:`${m}/dashboard`,"Set-Cookie":`${k}, ${j}`,"Cache-Control":"no-store"}})}catch(b){let a=b.message||"SSO callback failed";return new Response(`

SSO Error

${a}

Back to login`,{status:b.status||500,headers:{"Content-Type":"text/html"}})}}let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/auth/sso/callback/route",pathname:"/api/auth/sso/callback",filename:"route",bundlePath:"app/api/auth/sso/callback/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\abd_b\\OneDrive\\Desktop\\COSMIC AI-Risk Dashboard\\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\\application\\saas-app\\src\\app\\api\\auth\\sso\\callback\\route.js",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function C(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function D(a,b,c){var d;let e="/api/auth/sso/callback/route";"/index"===e&&(e="/");let g=await y.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(z.dynamicRoutes[E]||z.routes[D]);if(F&&!x){let a=!!z.routes[D],b=z.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||y.isDev||x||(G="/index"===(G=D)?"/":G);let H=!0===y.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:z,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>y.onRequestError(a,b,d,A)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>y.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await y.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},A),b}},l=await y.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await y.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17964:(a,b,c)=>{"use strict";let{PrismaClient:d}=c(96330);a.exports={prisma:globalThis.__cosmicPrisma||new d}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},49970:(a,b,c)=>{"use strict";let{prisma:d}=c(17964),{createSession:e}=c(68559),{getOidcConfig:f,discoverProvider:g,generateNonce:h,decodeJwtPayload:i}=c(75617);async function j(a,b,c,d,e){let f=new URLSearchParams({grant_type:"authorization_code",code:a,redirect_uri:b,client_id:c,client_secret:d}),g=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:f.toString()});if(!g.ok){let a=await g.text();throw Error(`Token exchange failed (${g.status}): ${a}`)}return g.json()}a.exports={handleSsoCallback:async function(a){let b=f();if(!b)throw Object.assign(Error("SSO not configured"),{status:501});let c=await g(b.issuer),h=(await j(a,b.redirectUrl,b.clientId,b.clientSecret,c.token_endpoint)).id_token;if(!h)throw Object.assign(Error("No id_token returned from provider"),{status:400});let k=i(h),l=k.email;if(!l)throw Object.assign(Error("Email not provided by SSO provider"),{status:400});let m=k.name||k.preferred_username||l.split("@")[0],n=await d.user.findUnique({where:{email:l}});if(n)await d.user.update({where:{id:n.id},data:{lastLoginAt:new Date,displayName:m}});else{n=await d.user.create({data:{email:l,displayName:m,emailVerifiedAt:new Date}});let a=m.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")+"-"+Date.now().toString(36),b=await d.role.upsert({where:{code:"owner"},update:{},create:{code:"owner",name:"Owner",permissions:["*"],system:!0}}),c=await d.organization.create({data:{name:`${m}'s Organization`,slug:a,status:"TRIAL",planCode:"pilot",manualBilling:!0}});await d.membership.create({data:{organizationId:c.id,userId:n.id,roleId:b.id,status:"ACTIVE"}}),await d.subscription.create({data:{organizationId:c.id,source:"MANUAL",status:"TRIALING",planCode:"pilot",userLimit:5,projectLimit:3}}).catch(()=>{});let e=await d.workspace.create({data:{organizationId:c.id,name:"Default Workspace",slug:"default-workspace",type:"B2B_TEAM",status:"TRIAL"}});await d.project.create({data:{workspaceId:e.id,name:"My Project",projectType:"AI-Enabler",status:"Active",riskAppetite:50}})}let o=await e(n.id);return{user:n,session:o}}}},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},68559:(a,b,c)=>{"use strict";let{prisma:d}=c(17964),{randomBytes:e}=c(55511),f=c(87082);async function g(a){return f.hash(a,12)}async function h(a,b){return!!b&&f.compare(a,b)}async function i(a){let b=e(48).toString("hex");return await d.session.create({data:{userId:a,token:b,expiresAt:new Date(Date.now()+6048e5)}})}async function j(a){if(!a)return null;let b=await d.session.findUnique({where:{token:a},include:{user:{include:{memberships:{where:{status:"ACTIVE"},include:{organization:!0,role:!0}}}}}});return!b||b.expiresAt{}),null):b}async function k(a){let b=await j(a);return b?b.user:null}a.exports={signup:async function({email:a,displayName:b,password:c}){if(!a||!c){let a=Error("Email and password are required");throw a.status=400,a}if(await d.user.findUnique({where:{email:a}})){let a=Error("Email already registered");throw a.status=409,a}let e=await g(c),f=await d.user.create({data:{email:a,displayName:b||a.split("@")[0],passwordHash:e,emailVerifiedAt:new Date}}),h=(b||a.split("@")[0]).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")+"-"+Date.now().toString(36),j=await d.role.upsert({where:{code:"owner"},update:{},create:{code:"owner",name:"Owner",permissions:["*"],system:!0}}),k=await d.organization.create({data:{name:(b||a.split("@")[0])+"'s Organization",slug:h,status:"TRIAL",planCode:"pilot",manualBilling:!0}});await d.membership.create({data:{organizationId:k.id,userId:f.id,roleId:j.id,status:"ACTIVE"}}),await d.subscription.create({data:{organizationId:k.id,source:"MANUAL",status:"TRIALING",planCode:"pilot",userLimit:5,projectLimit:3,reportLimitMonthly:25,integrationLimit:2,adminOverride:!1}}).catch(()=>{});let l=await d.workspace.create({data:{organizationId:k.id,name:"Default Workspace",slug:"default-workspace",type:"B2B_TEAM",status:"TRIAL"}});await d.project.create({data:{workspaceId:l.id,name:"My Project",projectType:"AI-Enabler",status:"Active",riskAppetite:50,description:"Project created during signup"}});let m=await i(f.id);return{user:f,session:m}},login:async function({email:a,password:b}){if(!a||!b){let a=Error("Email and password are required");throw a.status=400,a}let c=await d.user.findUnique({where:{email:a},include:{memberships:{where:{status:"ACTIVE"},include:{organization:!0,role:!0}}}});if(!c||!await h(b,c.passwordHash)){let a=Error("Invalid email or password");throw a.status=401,a}await d.user.update({where:{id:c.id},data:{lastLoginAt:new Date}});let e=await i(c.id);return{user:c,session:e}},logout:async function(a){a&&await d.session.deleteMany({where:{token:a}}).catch(()=>{})},getSession:j,getActorFromSession:k,createSession:i,SESSION_DURATION_MS:6048e5}},75617:(a,b,c)=>{"use strict";let{randomBytes:d}=c(55511);function e(a){return a.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}a.exports={getOidcConfig:function(){if("true"!==process.env.COSMIC_SSO_ENABLED)return null;let a=process.env.COSMIC_OIDC_ISSUER,b=process.env.COSMIC_OIDC_CLIENT_ID,c=process.env.COSMIC_OIDC_CLIENT_SECRET;return a&&b&&c?{issuer:a,clientId:b,clientSecret:c,redirectUrl:process.env.COSMIC_OIDC_REDIRECT_URL||"https://balavpn.abdallabala.com/api/auth/sso/callback"}:null},discoverProvider:async function a(a){let b=process.env.COSMIC_OIDC_DISCOVERY_URL||a.replace(/\/+$/,"")+"/.well-known/openid-configuration",c=await fetch(b);if(!c.ok)throw Error(`OIDC discovery failed (${c.status}) for ${b}`);return c.json()},generateState:function(){return e(d(32))},generateNonce:function(){return e(d(32))},decodeJwtPayload:function(a){let b=a.split(".");if(3!==b.length)throw Error("Invalid JWT format");return JSON.parse(Buffer.from(b[1],"base64url").toString("utf8"))},base64UrlEncode:e,stateCookieName:function(){return"cosmic_sso_state"},getCookieExpires:function(){return new Date(Date.now()+6e5).toUTCString()}}},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96330:a=>{"use strict";a.exports=require("@prisma/client")},96487:()=>{}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,7082],()=>b(b.s=10461));module.exports=c})();