/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/4.pack (883103B)
wpcy webpack/lib/cache/PackFileCacheStrategyPackContentItems `ResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|require|]|fullySpecified=|false|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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\risks\[riskId]\mitigations|request=|../../../../../lib/idempotencyResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|require|]|fullySpecified=|false|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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\projects\[projectId]\risks|request=|../../../../../lib/idempotencyResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|fullySpecified=|false|dependencyType=|commonjs|path=|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\risks\[riskId]\mitigations|request=|../../../../../lib/idempotencyResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|fullySpecified=|false|dependencyType=|commonjs|path=|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\projects\[projectId]\risks|request=|../../../../../lib/idempotencyCompilation/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\idempotency.js|rscResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|require|]|fullySpecified=|false|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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|request=|./redisResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|fullySpecified=|false|dependencyType=|commonjs|path=|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|request=|./redisCompilation/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\redis.js|rscResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|main|]|conditionNames=[|0=|node|1=|require|]|fullySpecified=|false|dependencyType=|commonjs|modules=[|0=|node_modules|]|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|descriptionFiles=[|0=|package.json|]|extensions=[|0=|.js|1=|.json|2=|.node|]|enforceExtensions=|false|symlinks=|true|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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|request=|ioredisResolverCachePlugin|normal|default|alias=[|server-only$=|next/dist/compiled/server-only/empty|client-only$=|next/dist/compiled/client-only/error|next/dist/compiled/server-only$=|next/dist/compiled/server-only/empty|next/dist/compiled/client-only$=|next/dist/compiled/client-only/error|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.js=|next/dist/client/components/noop-head|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\image.js=|next/dist/api/image|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\constants.js=|next/dist/api/constants|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\router.js=|next/dist/api/router|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\dynamic.js=|next/dist/api/app-dynamic|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\script.js=|next/dist/api/script|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\link.js=|next/dist/client/app-dir/link|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\form.js=|next/dist/client/app-dir/form|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\navigation.js=|next/dist/api/navigation.react-server|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\headers.js=|next/dist/api/headers|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\og.js=|next/dist/api/og|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\server.js=|next/dist/api/server|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\document.js=|next/dist/api/document|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\app.js=|next/dist/api/app|react$=|next/dist/server/route-modules/app-page/vendored/rsc/react|react/compiler-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime|react/jsx-dev-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime|react/jsx-runtime$=|next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime|react-dom$=|next/dist/server/route-modules/app-page/vendored/rsc/react-dom|react-dom/client$=|next/dist/compiled/react-dom/client|react-dom/server$=|next/dist/compiled/react-dom/server.node|react-dom/server.browser$=|next/dist/compiled/react-dom/server.browser|react-dom/server.edge$=|next/dist/build/webpack/alias/react-dom-server.js|react-dom/static$=|next/dist/compiled/react-dom/static.node|react-dom/static.browser$=|next/dist/compiled/react-dom/static.browser|react-dom/static.edge$=|next/dist/compiled/react-dom/static.edge|react-server-dom-webpack/client$=|next/dist/compiled/react-server-dom-webpack/client.node|react-server-dom-webpack/server$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/server.node$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server|react-server-dom-webpack/static$=|next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static|@vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts=|next/dist/client/dev/noop-turbopack-hmr|next=|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|]|mainFields=[|0=|module|1=|main|]|conditionNames=[|0=|react-server|1=|...|]|fullySpecified=|false|dependencyType=|commonjs|path=|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|request=|ioredis[ResolverCachePlugin|normal|default|dependencyType=|esm|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|alias=|false|path=|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\risks\[riskId]\mitigations|request=|../../../../../lib/idempotency[ResolverCachePlugin|normal|default|dependencyType=|esm|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|import|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|alias=|false|path=|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\projects\[projectId]\risks|request=|../../../../../lib/idempotencyResolverCachePlugin|normal|default|dependencyType=|commonjs|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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|request=|./redis+ResolverCachePlugin|normal|default|dependencyType=|commonjs|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|alias=|false|path=|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|request=|./redisResolverCachePlugin|normal|default|dependencyType=|commonjs|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|path=|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|request=|ioredis+ResolverCachePlugin|normal|default|dependencyType=|commonjs|fallback=|false|exportsFields=[|0=|exports|]|importsFields=[|0=|imports|]|conditionNames=[|0=|node|1=|require|]|descriptionFiles=[|0=|package.json|]|enforceExtensions=|false|symlinks=|true|mainFields=[|0=|main|]|mainFiles=[|0=|index|]|roots=[|]|preferRelative=|false|preferAbsolute=|false|restrictions=[|]|alias=|false|path=|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|request=|ioredisCompilation/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\idempotency.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-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\redis.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%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|7313582ce33c68ae|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%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!|rsc|c209123f2730a43f|webpack-runtimeCompilation/assets|chunk1754Compilation/assets|chunk1506Compilation/assets|chunk546MinifierWebpackPlugin|../app/api/risks/[riskId]/mitigations/route.jsMinifierWebpackPlugin|../app/api/projects/[projectId]/risks/route.jsMinifierWebpackPlugin|546.jswebpack/lib/cache/ResolverCachePlugin`_ResolverCachePluginCacheMisscontextpathrequestqueryfragmentmoduledirectoryfileinternalfullySpecifieddescriptionFilePathdescriptionFileDatadescriptionFileRootrelativePath  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\idempotency.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\package.jsonnameversionprivatedescriptionscriptsdependenciesdevDependenciesenginescosmic-ai-risk-saas0.1.0 Commercial SaaS rebuild of the COSMIC AI-Risk Dashboard with multi-tenant workspaces, PostgreSQL, Prisma, invite-only auth, billing entitlements, and enterprise-ready boundaries.`devbuildstartlinttestprisma:generatedb:migratedb:pushdb:seedcheck:configtest:locallocal:fallbackmock-oidcdev:ssosso:setupnext dev -p 8091next buildnext start -p 8091next lintnode tests/saas-domain.test.js && node tests/tenant-security.test.js && node tests/idempotency.test.js && node tests/metrics.test.js && node tests/oidc.test.js && node tests/rate-limit.test.js && node tests/integration-service.test.jsprisma generateprisma migrate deployprisma db pushnode prisma/seed.jsnode scripts/check-config.jsnode tests/local-server.test.jsnode local-server.jsnode mock-oidc-provider.jsnode mock-oidc-provider.js & npm run dev@prisma/clientbcryptjsioredisnextreactreact-domstripezod^5.22.0^2.4.3^5.11.1^15.0.3^19.0.0^17.3.1^3.23.8eslinteslint-config-nextprisma^9.14.0node>=20.11.0C:\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/idempotency.jswebpack/lib/FileSystemInfoSnapshot@ RyB@  RyBsafeTimetimestamphash!yByB2566e98bf775f96d@  RyBC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\libC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src RyB C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\applicationC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission FreezeC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk DashboardC:\Users\abd_b\OneDrive\DesktopC:\Users\abd_b\OneDriveC:\Users\abd_bC:\UsersC:\!yB`yB13b98c72f42c0046@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\risks\[riskId]\mitigations\package.jsonC:\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\risks\[riskId]\package.jsonC:\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\risks\package.jsonC:\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\package.jsonC:\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\package.jsonC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\package.jsonC:\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\package.jsonC:\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\idempotency   @ RyB` utsrqponmlk@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\projects\[projectId]\risks\package.jsonC:\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\projects\[projectId]\package.jsonC:\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\projects\package.jsonh issuerissuerLayercompilerC:\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\risks\[riskId]\mitigations\route.jsrscserverb c@ @TyB\ 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\projects\[projectId]\risks\route.js\ ]@ @TyBwebpack/lib/NormalModulewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceX"use strict"; const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey };  javascript/autoaliasmainFieldsconditionNamesI`$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.ts\next/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\nextmainreact-server... `cacheableparsedfileDependenciescontextDependenciesmissingDependenciesbuildDependenciesvalueDependenciesKassetsassetsInfostricttopLevelDeclarationssnapshot 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.js webpack/DefinePlugin_hashb5546ded71759c918b4ce3c8typeactionIdsclientRefsclientEntryTypeisClientRef  withIdempotencygetIdempotencyKeyredisGetredisSetTTL_MS )yB 3webpack/lib/dependencies/ConstDependency`  ` webpack/lib/dependencies/RequireHeaderDependencya-4 b1webpack/lib/dependencies/CommonJsRequireDependency./redis a5> b1webpack/lib/dependencies/CommonJsSelfReferenceDependency A%module.exports c      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\redis.js ./src/lib/redis.js @ WyB  !`yBPyBf78260240c29d254 6 @ ?>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\redis    Z\]  @  WyB -"use strict"; const Redis = require('ioredis'); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; `   cR    833765b4214a39a9 P   `createClientensureConnectedfallbackGetfallbackSetfallbackDelɈredisDelredisIncrredisTtlredisFlushRedisREDIS_URLENABLEDredisfallbackStorefallbackTimers )yB   `  `  a# b   a$- b  A-; @@`      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\ioredis\built\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\ioredis\package.json  `typesfilesrepositorykeywordstsdauthorlicensefundingnycmocha5.11.1A robust, performance-focused and full-featured Redis client for Node.js../built/index.js./built/index.d.ts built/  `docker:setupdocker:teardowntest:tsdtest:jstest:covtest:clusterdocsformatformat-checkprepublishOnlysemantic-releasedocker compose -f test/docker-compose.yml up -d --waitdocker compose -f test/docker-compose.yml down --volumes --remove-orphansnpm run build && tsdTS_NODE_TRANSPILE_ONLY=true NODE_ENV=test mocha --no-experimental-strip-types "test/helpers/*.ts" "test/unit/**/*.ts" "test/functional/**/*.ts"nyc npm run test:jsTS_NODE_TRANSPILE_ONLY=true NODE_ENV=test mocha --no-experimental-strip-types "test/cluster/**/*.ts"npm run test:js && npm run test:tsdeslint --ext .js,.ts ./libnpx typedoc --logLevel Error --excludeExternals --excludeProtected --excludePrivate --readme none lib/index.tsprettier --write "{,!(node_modules)/**/}*.{js,ts}"prettier --check "{,!(node_modules)/**/}*.{js,ts}"rm -rf built && tscnpm run build  uurlgitgit://github.com/luin/ioredis.git clustersentinelpipelining Qtest/typingZihua Li (http://zihua.li)MIT opencollectivehttps://opencollective.com/ioredis  @ioredis/commandscluster-key-slotdebugdenqueredis-errorsredis-parserstandard-as-callback1.10.01.1.14.4.32.1.01.2.03.0.0  `@ioredis/interface-generator@semantic-release/changelog@semantic-release/commit-analyzer@semantic-release/git@types/chai@types/chai-as-promised@types/debug@types/mocha@types/node@types/redis-errors@types/sinon@typescript-eslint/eslint-plugin@typescript-eslint/parserchaichai-as-promisedteslint-config-prettierprettierserver-destroysinonts-nodetypedoctypescriptuuid^1.3.0^6.0.1^9.0.2^10.0.1^4.3.0^7.1.5^4.1.5^9.1.0^14.18.12^1.2.1^10.0.11^5.48.1^4.3.6^7.1.1^8.31.0^8.6.0^11.7.6^15.1.0^2.6.1^19.0.2^1.0.1^13.0.1^10.4.0^0.19.1^0.22.18^4.6.3^9.0.0 reporter lcov Q>=12.22.0  exittimeoutrecursiverequire @@ ts-node/registerC:\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\ioredis @ XyB 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 P  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\ioredis.node*missinge @ poC:\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\node_modulesC:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\node_modules @ 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\package.jsonC:\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\ioredis.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\ioredis.jsonioredis@5.11.1 @^]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\ioredis\built @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\ioredis\built\package.json    ~S Tb @  `ZyB  M @ 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\ioredis.mjsC:\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\ioredis.tsxC:\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\ioredis.tsC:\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\ioredis.jsxC:\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\ioredis.wasm @       @  {yB &'$SV>L       @  0{yB  !MP8]       @  {yB GJ2        @  {yB AD,     * +9 @  |yB &     $ %3 @  ЃyB    sourcesruntimeRequirementsdata javascriptwebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceX"use strict"; const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; d -35=__webpack_require__23249  buffersourcesizemapsS const { redisGet, redisSet } = __webpack_require__(23249); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; {"finalSource":true}  mapbufferedMap  ReplaceSourceRawSourceF>012undefined4551__webpack_require__undefined536123249undefined __webpack_require__B  [webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const Redis = require('ioredis'); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; d "$,__webpack_require__50453  const Redis = __webpack_require__(50453); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush };    >012undefined2834__webpack_require__undefined364450453undefined    'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource[ // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource Jwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } g5Y_aVV\^v__webpack_require__17964127731540069698224882877954775buffersourcesizemapshashconst { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } 1925__webpack_require__undefined275317964undefined8995__webpack_require__undefined9713212773undefined169175__webpack_require__undefined17720915400undefined242248__webpack_require__undefined25028769698undefined342348__webpack_require__undefined35037422488undefined425431__webpack_require__undefined43346428779undefined493499__webpack_require__undefined50152854775undefined532538undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  GIwebpack/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 "_abd}_ ! R \  G [ ^ 0 W et>L?L_9NR%j%%%A'N' (( ))S+^+- .//11335R555616q777799):0:0;>;<-<==__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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sS  _Voix" #m##_9%%S&&'',**&--E//123245T666%778@9}99;<w<<=>C>^?@Amodule_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.SpanKind %M// 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js const { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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    ` ConcatSourceRawSource[ // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js  ReplaceSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } 1925__webpack_require__undefined275317964undefined8995__webpack_require__undefined9713212773undefined169175__webpack_require__undefined17720915400undefined242248__webpack_require__undefined25028769698undefined342348__webpack_require__undefined35037422488undefined425431__webpack_require__undefined43346428779undefined493499__webpack_require__undefined50152854775undefined532538undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined924969route_namespaceObjectundefined12751363(0,patch_fetch.patchFetch)undefined24412541(0,app_paths_.normalizeAppPath)undefined29993093no_fallback_error_external_.NoFallbackErrorundefined39354021(0,trace_tracer.getTracer)undefined44384534(0,request_meta.getRequestMeta)undefined51385231node.NodeNextRequestundefined52675362node.NodeNextResponseundefined53905481next_request.NextRequestAdapterundefined55165628(0,next_request.signalFromNodeResponse)undefined62646342constants.BaseServerSpanundefined73207416(0,request_meta.getRequestMeta)undefined88528971(0,web_utils.toNodeOutgoingHttpHeaders)undefined90699177lib_constants.NEXT_CACHE_TAGS_HEADERundefined95299621lib_constants.INFINITE_CACHEundefined98119903lib_constants.INFINITE_CACHEundefined1014310224response_cache.CachedRouteKindundefined1079610889(0,send_response/* sendResponse */.I)undefined1155811664(0,utils/* getRevalidateReason */.c)undefined1210112169route_kind.RouteKindundefined1271912800response_cache.CachedRouteKindundefined1326613362(0,request_meta.getRequestMeta)undefined1378513908(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1395514051(0,request_meta.getRequestMeta)undefined1411714225lib_constants.NEXT_CACHE_TAGS_HEADERundefined1454514656(0,cache_control.getCacheControlHeader)undefined1471714810(0,send_response/* sendResponse */.I)undefined1530215380constants.BaseServerSpanundefined1547915545trace_tracer.SpanKindundefined1580115895no_fallback_error_external_.NoFallbackErrorundefined1611616222(0,utils/* getRevalidateReason */.c)undefined1656416657(0,send_response/* sendResponse */.I)undefined `@module_compiledmodule_compiled_namespaceObjectmodule_compiled_defaultroute_kindroute_kind_namespaceObjectpatch_fetchpatch_fetch_namespaceObjectpatch_fetch_defaultrequest_metarequest_meta_namespaceObjectrequest_meta_defaulttrace_tracertracer_namespaceObjecttracer_defaultapp_paths_app_paths_namespaceObjectapp_paths_defaultnode_namespaceObjectnode_defaultnext_requestnext_request_namespaceObjectnext_request_defaultconstantsconstants_namespaceObjectconstants_defaultutilsutils_namespaceObjectsend_responsesend_response_namespaceObjectweb_utilsweb_utils_namespaceObjectutils_defaultcache_controlcache_control_namespaceObjectlib_constantslib_constants_namespaceObjectlib_constants_defaultno_fallback_error_external_no_fallback_error_external_namespaceObjectno_fallback_error_external_defaultresponse_cacheresponse_cache_namespaceObjectresponse_cache_defaultgetActorFromRequestrequireProjectAccesscreateMitigationjsonResponseerrorResponseparseJsonbctrackRequestPOSTroute_namespaceObjectnextConfigOutputrouteModuleworkAsyncStorageworkUnitAsyncStorageserverHookspatchFetchhandlernext_app_loaderpage_2Fapi_2Frisks_2F_5BriskId_5D_2Fmitigations_2Froute_name_app_2Fapi_2Frisks_2F_5BriskId_5D_2Fmitigations_2Froute_pagePath_private_next_app_dir_2Fapi_2Frisks_2F_5BriskId_5D_2Fmitigations_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_2Frisks_2F_5BriskId_5D_2Fmitigations_2Froute_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_standalone_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_namespaceObject __webpack_exports____webpack_require__.d__webpack_require__.r  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceo // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } g &(KpvxT"(*Bu{}?E__webpack_require__127731540069698224882877954775buffersourcesizemapshashgconst { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } `3238__webpack_require__undefined407512773undefined112118__webpack_require__undefined12015215400undefined190196__webpack_require__undefined19823569698undefined290296__webpack_require__undefined29832222488undefined373379__webpack_require__undefined38141228779undefined441447__webpack_require__undefined44947654775undefined480486undefined10871093undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  GIwebpack/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 "_abd}_ ! R \  G [ ^ 0 W et>L?L_9NR%j%%%A'N' (( ))S+^+- .//11335R555616q777799):0:0;>;<-<==__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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sS  _Voix" #m##_9%%S&&'',**&--E//123245T666%778@9}99;<w<<=>C>^?@Amodule_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.SpanKind N// 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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    ` o // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } `3238__webpack_require__undefined407512773undefined112118__webpack_require__undefined12015215400undefined190196__webpack_require__undefined19823569698undefined290296__webpack_require__undefined29832222488undefined373379__webpack_require__undefined38141228779undefined441447__webpack_require__undefined44947654775undefined480486undefined10871093undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 2 `Ao݉listRiskscreateRiskBCGETnext_app_loaderpage_2Fapi_2Fprojects_2F_5BprojectId_5D_2Frisks_2Froute_name_app_2Fapi_2Fprojects_2F_5BprojectId_5D_2Frisks_2Froute_pagePath_private_next_app_dir_2Fapi_2Fprojects_2F_5BprojectId_5D_2Frisks_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_2Fprojects_2F_5BprojectId_5D_2Frisks_2Froute_pageExtensions_tsx_pageExtensions_ts_pageExtensions_jsx_pageExtensions_js_basePath_assetPrefix_nextConfigOutput_standalone_preferredRegion_middlewareConfig_e30_3D_isGlobalNotFoundEnabled_namespaceObject  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource`1webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcer"use strict"; (() => { var exports = {}; exports.id = 1754; exports.ids = [1754]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashh/***/ ((module) => { module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource/***/ ((module) => {  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 10846:  %webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) t/***/ ((module) => { 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");, /***/ 12412:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("assert");  /***/ }) C/***/ ((module) => { module.exports = require("assert"); /***/ })  #module.exports = require("assert");, /***/ 14985:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("dns");  /***/ }) @/***/ ((module) => { module.exports = require("dns"); /***/ })   module.exports = require("dns");, /***/ 21820:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { module.exports = require("os");  /***/ }) ?/***/ ((module) => { module.exports = require("os"); /***/ })  module.exports = require("os");, /***/ 27910:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("stream");  /***/ }) C/***/ ((module) => { module.exports = require("stream"); /***/ })  #module.exports = require("stream");, /***/ 28354:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { !module.exports = require("util");  /***/ }) A/***/ ((module) => { module.exports = require("util"); /***/ })  !module.exports = require("util");, /***/ 29021:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { module.exports = require("fs");  /***/ }) ?/***/ ((module) => { module.exports = require("fs"); /***/ })  module.exports = require("fs");, /***/ 29294:  (webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) w/***/ ((module) => { 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");, /***/ 33873:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { !module.exports = require("path");  /***/ }) A/***/ ((module) => { module.exports = require("path"); /***/ })  !module.exports = require("path");, /***/ 34631:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("tls");  /***/ }) @/***/ ((module) => { module.exports = require("tls"); /***/ })   module.exports = require("tls");, /***/ 41204:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { +module.exports = require("string_decoder");  /***/ }) K/***/ ((module) => { module.exports = require("string_decoder"); /***/ })  +module.exports = require("string_decoder");, /***/ 44870:  &webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) u/***/ ((module) => { 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");, /***/ 47272:  Vwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceQ/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 'webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource[ // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource Jwebpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } g5Y_aVV\^v__webpack_require__17964127731540069698224882877954775buffersourcesizemapshashconst { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } 1925__webpack_require__undefined275317964undefined8995__webpack_require__undefined9713212773undefined169175__webpack_require__undefined17720915400undefined242248__webpack_require__undefined25028769698undefined342348__webpack_require__undefined35037422488undefined425431__webpack_require__undefined43346428779undefined493499__webpack_require__undefined50152854775undefined532538undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  GIwebpack/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 "_abd}_ ! R \  G [ ^ 0 W et>L?L_9NR%j%%%A'N' (( ))S+^+- .//11335R555616q777799):0:0;>;<-<==__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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sS  _Voix" #m##_9%%S&&'',**&--E//123245T666%778@9}99;<w<<=>C>^?@Amodule_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.SpanKindbuffersourcesizemapshash%M// 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js const { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 ` ConcatSourceRawSource[ // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js  ReplaceSourceReplaceSourceRawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } 1925__webpack_require__undefined275317964undefined8995__webpack_require__undefined9713212773undefined169175__webpack_require__undefined17720915400undefined242248__webpack_require__undefined25028769698undefined342348__webpack_require__undefined35037422488undefined425431__webpack_require__undefined43346428779undefined493499__webpack_require__undefined50152854775undefined532538undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined924969route_namespaceObjectundefined12751363(0,patch_fetch.patchFetch)undefined24412541(0,app_paths_.normalizeAppPath)undefined29993093no_fallback_error_external_.NoFallbackErrorundefined39354021(0,trace_tracer.getTracer)undefined44384534(0,request_meta.getRequestMeta)undefined51385231node.NodeNextRequestundefined52675362node.NodeNextResponseundefined53905481next_request.NextRequestAdapterundefined55165628(0,next_request.signalFromNodeResponse)undefined62646342constants.BaseServerSpanundefined73207416(0,request_meta.getRequestMeta)undefined88528971(0,web_utils.toNodeOutgoingHttpHeaders)undefined90699177lib_constants.NEXT_CACHE_TAGS_HEADERundefined95299621lib_constants.INFINITE_CACHEundefined98119903lib_constants.INFINITE_CACHEundefined1014310224response_cache.CachedRouteKindundefined1079610889(0,send_response/* sendResponse */.I)undefined1155811664(0,utils/* getRevalidateReason */.c)undefined1210112169route_kind.RouteKindundefined1271912800response_cache.CachedRouteKindundefined1326613362(0,request_meta.getRequestMeta)undefined1378513908(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1395514051(0,request_meta.getRequestMeta)undefined1411714225lib_constants.NEXT_CACHE_TAGS_HEADERundefined1454514656(0,cache_control.getCacheControlHeader)undefined1471714810(0,send_response/* sendResponse */.I)undefined1530215380constants.BaseServerSpanundefined1547915545trace_tracer.SpanKindundefined1580115895no_fallback_error_external_.NoFallbackErrorundefined1611616222(0,utils/* getRevalidateReason */.c)undefined1656416657(0,send_response/* sendResponse */.I)undefined /***/ }) M/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js const { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 /***/ })  `Q/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { [ // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js  ReplaceSourceReplaceSourceRawSourceconst { prisma } = require("../../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { createMitigation } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } 1925__webpack_require__undefined275317964undefined8995__webpack_require__undefined9713212773undefined169175__webpack_require__undefined17720915400undefined242248__webpack_require__undefined25028769698undefined342348__webpack_require__undefined35037422488undefined425431__webpack_require__undefined43346428779undefined493499__webpack_require__undefined50152854775undefined532538undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined924969route_namespaceObjectundefined12751363(0,patch_fetch.patchFetch)undefined24412541(0,app_paths_.normalizeAppPath)undefined29993093no_fallback_error_external_.NoFallbackErrorundefined39354021(0,trace_tracer.getTracer)undefined44384534(0,request_meta.getRequestMeta)undefined51385231node.NodeNextRequestundefined52675362node.NodeNextResponseundefined53905481next_request.NextRequestAdapterundefined55165628(0,next_request.signalFromNodeResponse)undefined62646342constants.BaseServerSpanundefined73207416(0,request_meta.getRequestMeta)undefined88528971(0,web_utils.toNodeOutgoingHttpHeaders)undefined90699177lib_constants.NEXT_CACHE_TAGS_HEADERundefined95299621lib_constants.INFINITE_CACHEundefined98119903lib_constants.INFINITE_CACHEundefined1014310224response_cache.CachedRouteKindundefined1079610889(0,send_response/* sendResponse */.I)undefined1155811664(0,utils/* getRevalidateReason */.c)undefined1210112169route_kind.RouteKindundefined1271912800response_cache.CachedRouteKindundefined1326613362(0,request_meta.getRequestMeta)undefined1378513908(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1395514051(0,request_meta.getRequestMeta)undefined1411714225lib_constants.NEXT_CACHE_TAGS_HEADERundefined1454514656(0,cache_control.getCacheControlHeader)undefined1471714810(0,send_response/* sendResponse */.I)undefined1530215380constants.BaseServerSpanundefined1547915545trace_tracer.SpanKindundefined1580115895no_fallback_error_external_.NoFallbackErrorundefined1611616222(0,utils/* getRevalidateReason */.c)undefined1656416657(0,send_response/* sendResponse */.I)undefined, /***/ 53053:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { 5module.exports = require("node:diagnostics_channel");  /***/ }) pU/***/ ((module) => { module.exports = require("node:diagnostics_channel"); /***/ }) qt uvw5module.exports = require("node:diagnostics_channel");vx, /***/ 55511:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("crypto");  /***/ }) gC/***/ ((module) => { module.exports = require("crypto"); /***/ }) hk lmn#module.exports = require("crypto");mo, /***/ 63033:  -webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) ^|/***/ ((module) => { module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }) _b cde\module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");df, /***/ 79428:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("buffer");  /***/ }) UC/***/ ((module) => { module.exports = require("buffer"); /***/ }) VY Z[\#module.exports = require("buffer");[], /***/ 83997:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("tty");  /***/ }) L@/***/ ((module) => { module.exports = require("tty"); /***/ }) MP QRS module.exports = require("tty");RT, /***/ 86439:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) Cl/***/ ((module) => { module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }) DG HIJLmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");IK, /***/ 91645:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("net");  /***/ }) :@/***/ ((module) => { module.exports = require("net"); /***/ }) ;> ?@A module.exports = require("net");@B, /***/ 94735:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("events");  /***/ }) 1C/***/ ((module) => { module.exports = require("events"); /***/ }) 25 678#module.exports = require("events");79, /***/ 96330:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { +module.exports = require("@prisma/client");  /***/ }) (K/***/ ((module) => { module.exports = require("@prisma/client"); /***/ }) ), -./+module.exports = require("@prisma/client");.0 }; ; // 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,6720,6325,546], () => (__webpack_exec__(47272))); ,module.exports = __webpack_exports__; })();  |W"use strict"; (() => { var exports = {}; exports.id = 1754; exports.ids = [1754]; exports.modules = { /***/ 261: /***/ ((module) => { module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 10846: /***/ ((module) => { module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 12412: /***/ ((module) => { module.exports = require("assert"); /***/ }), /***/ 14985: /***/ ((module) => { module.exports = require("dns"); /***/ }), /***/ 21820: /***/ ((module) => { module.exports = require("os"); /***/ }), /***/ 27910: /***/ ((module) => { module.exports = require("stream"); /***/ }), /***/ 28354: /***/ ((module) => { module.exports = require("util"); /***/ }), /***/ 29021: /***/ ((module) => { module.exports = require("fs"); /***/ }), /***/ 29294: /***/ ((module) => { module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 33873: /***/ ((module) => { module.exports = require("path"); /***/ }), /***/ 34631: /***/ ((module) => { module.exports = require("tls"); /***/ }), /***/ 41204: /***/ ((module) => { module.exports = require("string_decoder"); /***/ }), /***/ 44870: /***/ ((module) => { module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 47272: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // 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/risks/[riskId]/mitigations/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { POST: () => (POST) }); // 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/risks/[riskId]/mitigations/route.js const { prisma } = __webpack_require__(17964); const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { createMitigation } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function POST(request, { params }) { const start = Date.now(); try { const { riskId } = await params; const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, risk.projectId, "mitigation:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const mitigation = await withIdempotency(idempotencyKey, ()=>createMitigation({ projectScope, riskId, actor, payload, request })); trackRequest("POST", "/api/risks/[riskId]/mitigations", 201, Date.now() - start); return jsonResponse({ mitigation }, 201); } catch (error) { trackRequest("POST", "/api/risks/[riskId]/mitigations", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&name=app%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%2Froute&pagePath=private-next-app-dir%2Fapi%2Frisks%2F%5BriskId%5D%2Fmitigations%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%2Frisks%2F%5BriskId%5D%2Fmitigations%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/risks/[riskId]/mitigations/route", pathname: "/api/risks/[riskId]/mitigations", filename: "route", bundlePath: "app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\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/risks/[riskId]/mitigations/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 /***/ }), /***/ 53053: /***/ ((module) => { module.exports = require("node:diagnostics_channel"); /***/ }), /***/ 55511: /***/ ((module) => { module.exports = require("crypto"); /***/ }), /***/ 63033: /***/ ((module) => { module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 79428: /***/ ((module) => { module.exports = require("buffer"); /***/ }), /***/ 83997: /***/ ((module) => { module.exports = require("tty"); /***/ }), /***/ 86439: /***/ ((module) => { module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 91645: /***/ ((module) => { module.exports = require("net"); /***/ }), /***/ 94735: /***/ ((module) => { module.exports = require("events"); /***/ }), /***/ 96330: /***/ ((module) => { module.exports = require("@prisma/client"); /***/ }) }; ; // 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,6720,6325,546], () => (__webpack_exec__(47272))); module.exports = __webpack_exports__; })(); {}   @r"use strict"; (() => { var exports = {}; exports.id = 1754; exports.ids = [1754]; exports.modules = { /***/ 261: /***/ ((module) => { Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 10846: Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");, /***/ 12412: #module.exports = require("assert");, /***/ 14985:  module.exports = require("dns");, /***/ 21820: module.exports = require("os");, /***/ 27910: #module.exports = require("stream");, /***/ 28354: !module.exports = require("util");, /***/ 29021: module.exports = require("fs");, /***/ 29294: Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");, /***/ 33873: !module.exports = require("path");, /***/ 34631:  module.exports = require("tls");, /***/ 41204: ~+module.exports = require("string_decoder");, /***/ 44870: |Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 47272: zQ/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { yz{b|}~{b~~, /***/ 53053: x}5module.exports = require("node:diagnostics_channel");||, /***/ 55511: v{#module.exports = require("crypto");zz, /***/ 63033: ty\module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");xx, /***/ 79428: rw#module.exports = require("buffer");vv, /***/ 83997: pu module.exports = require("tty");tt, /***/ 86439: nsLmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");rr, /***/ 91645: lq module.exports = require("net");pp, /***/ 94735: jo#module.exports = require("events");nn, /***/ 96330: hm+module.exports = require("@prisma/client");ll }; ; // load runtime var __webpack_require__ = require("../../../../../webpack-runtime.js"); __webpack_require__.C(exports); kvar __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873,6720,6325,546], () => (__webpack_exec__(47272))); j,module.exports = __webpack_exports__; })(); 0webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource`1webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourcer"use strict"; (() => { var exports = {}; exports.id = 1506; exports.ids = [1506]; exports.modules = { /***/ 261: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Hmodule.exports = require("next/dist/shared/lib/router/utils/app-paths");  /***/ }) buffersourcesizemapshashh/***/ ((module) => { module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSource/***/ ((module) => {  RawSourceHmodule.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 7834:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceQ/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceo // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource  webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } g &(KpvxT"(*Bu{}?E__webpack_require__127731540069698224882877954775buffersourcesizemapshashgconst { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } {"finalSource":false}mapbufferedMap ReplaceSourceRawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } `3238__webpack_require__undefined407512773undefined112118__webpack_require__undefined12015215400undefined190196__webpack_require__undefined19823569698undefined290296__webpack_require__undefined29832222488undefined373379__webpack_require__undefined38141228779undefined441447__webpack_require__undefined44947654775undefined480486undefined10871093undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&basePath=&assetPrefix=&nextConfigOutput=standalone&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!  GIwebpack/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 "_abd}_ ! R \  G [ ^ 0 W et>L?L_9NR%j%%%A'N' (( ))S+^+- .//11335R555616q777799):0:0;>;<-<==__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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined`"_ /sS  _Voix" #m##_9%%S&&'',**&--E//123245T666%778@9}99;<w<<=>C>^?@Amodule_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.SpanKindbuffersourcesizemapshashN// 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 ` ConcatSourceRawSourceo // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js  ReplaceSourceReplaceSourceRawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } `3238__webpack_require__undefined407512773undefined112118__webpack_require__undefined12015215400undefined190196__webpack_require__undefined19823569698undefined290296__webpack_require__undefined29832222488undefined373379__webpack_require__undefined38141228779undefined441447__webpack_require__undefined44947654775undefined480486undefined10871093undefined RawSource ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined924969route_namespaceObjectundefined12751363(0,patch_fetch.patchFetch)undefined24412541(0,app_paths_.normalizeAppPath)undefined29993093no_fallback_error_external_.NoFallbackErrorundefined39354021(0,trace_tracer.getTracer)undefined44384534(0,request_meta.getRequestMeta)undefined51385231node.NodeNextRequestundefined52675362node.NodeNextResponseundefined53905481next_request.NextRequestAdapterundefined55165628(0,next_request.signalFromNodeResponse)undefined62646342constants.BaseServerSpanundefined73207416(0,request_meta.getRequestMeta)undefined88528971(0,web_utils.toNodeOutgoingHttpHeaders)undefined90699177lib_constants.NEXT_CACHE_TAGS_HEADERundefined95299621lib_constants.INFINITE_CACHEundefined98119903lib_constants.INFINITE_CACHEundefined1014310224response_cache.CachedRouteKindundefined1079610889(0,send_response/* sendResponse */.I)undefined1155811664(0,utils/* getRevalidateReason */.c)undefined1210112169route_kind.RouteKindundefined1271912800response_cache.CachedRouteKindundefined1326613362(0,request_meta.getRequestMeta)undefined1378513908(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1395514051(0,request_meta.getRequestMeta)undefined1411714225lib_constants.NEXT_CACHE_TAGS_HEADERundefined1454514656(0,cache_control.getCacheControlHeader)undefined1471714810(0,send_response/* sendResponse */.I)undefined1530215380constants.BaseServerSpanundefined1547915545trace_tracer.SpanKindundefined1580115895no_fallback_error_external_.NoFallbackErrorundefined1611616222(0,utils/* getRevalidateReason */.c)undefined1656416657(0,send_response/* sendResponse */.I)undefined /***/ }) xN/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 /***/ })  `Q/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { o // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js  ReplaceSourceReplaceSourceRawSourceconst { getActorFromRequest } = require("../../../../../lib/request-context"); const { requireProjectAccess } = require("../../../../../lib/tenant-guard"); const { listRisks, createRisk } = require("../../../../../services/risk-service"); const { jsonResponse, errorResponse, parseJson } = require("../../../../../lib/http"); const { withIdempotency, getIdempotencyKey } = require("../../../../../lib/idempotency"); const { trackRequest } = require("../../../../../lib/metrics"); export async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } export async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } `3238__webpack_require__undefined407512773undefined112118__webpack_require__undefined12015215400undefined190196__webpack_require__undefined19823569698undefined290296__webpack_require__undefined29832222488undefined373379__webpack_require__undefined38141228779undefined441447__webpack_require__undefined44947654775undefined480486undefined10871093undefined ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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 {094undefined96151undefined153229undefined231293undefined295366undefined368446undefined448531undefined533651undefined653722undefined724800undefined802863undefined865964undefined9661040undefined10421122undefined11241205undefined12071272undefined12741510undefined16611679__WEBPACK_MODULE_REFERENCE__0_5b22417070526f757465526f7574654d6f64756c65225d_directImport_asiSafe1__._undefined17151723__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined19541989".next"undefined199419950undefined20222060 falseundefined23372336: __WEBPACK_MODULE_REFERENCE__16_ns_asiSafe1__._undefined26422652__WEBPACK_MODULE_REFERENCE__2_5b2270617463684665746368225d_call_directImport_asiSafe1__._undefined27212810undefined28122818undefined31433163falseundefined31663230{}undefined33763415falseundefined39413956__WEBPACK_MODULE_REFERENCE__5_5b226e6f726d616c697a6541707050617468225d_call_directImport_asiSafe1__._undefined44144428__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined52705278__WEBPACK_MODULE_REFERENCE__4_5b22676574547261636572225d_call_directImport_asiSafe1__._undefined56955708__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined63126326__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e65787452657175657374225d_directImport_asiSafe1__._undefined63626377__WEBPACK_MODULE_REFERENCE__6_5b224e6f64654e657874526573706f6e7365225d_directImport_asiSafe1__._undefined64056422__WEBPACK_MODULE_REFERENCE__7_5b224e6578745265717565737441646170746572225d_call_asiSafe1__._undefined64576478__WEBPACK_MODULE_REFERENCE__7_5b227369676e616c46726f6d4e6f6465526573706f6e7365225d_call_directImport_asiSafe1__._undefined71147127__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined81058118__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined95549578__WEBPACK_MODULE_REFERENCE__11_5b22746f4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined96769697__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1004910062__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1025210265__WEBPACK_MODULE_REFERENCE__13_5b22494e46494e4954455f4341434845225d_directImport_asiSafe1__._undefined1050510519__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1109111102__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1177111789__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1222612234__WEBPACK_MODULE_REFERENCE__1_5b22526f7574654b696e64225d_asiSafe1__._undefined1278412798__WEBPACK_MODULE_REFERENCE__15_5b22436163686564526f7574654b696e64225d_asiSafe1__._undefined1326413277__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1370013726__WEBPACK_MODULE_REFERENCE__11_5b2266726f6d4e6f64654f7574676f696e674874747048656164657273225d_call_directImport_asiSafe1__._undefined1377313786__WEBPACK_MODULE_REFERENCE__3_5b22676574526571756573744d657461225d_call_directImport_asiSafe1__._undefined1385213873__WEBPACK_MODULE_REFERENCE__13_5b224e4558545f43414348455f544147535f484541444552225d_directImport_asiSafe1__._undefined1419314213__WEBPACK_MODULE_REFERENCE__12_5b226765744361636865436f6e74726f6c486561646572225d_call_directImport_asiSafe1__._undefined1427414285__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined1477714790__WEBPACK_MODULE_REFERENCE__8_5b22426173655365727665725370616e225d_asiSafe1__._undefined1488914896__WEBPACK_MODULE_REFERENCE__4_5b225370616e4b696e64225d_asiSafe1__._undefined1515215166__WEBPACK_MODULE_REFERENCE__14_5b224e6f46616c6c6261636b4572726f72225d_directImport_asiSafe1__._undefined1538715405__WEBPACK_MODULE_REFERENCE__9_5b22676574526576616c6964617465526561736f6e225d_call_directImport_asiSafe1__._undefined1574715758__WEBPACK_MODULE_REFERENCE__10_5b2273656e64526573706f6e7365225d_call_directImport_asiSafe1__._undefined166267module_compiled.AppRouteRouteModuleundefined303371route_kind.RouteKindundefined924969route_namespaceObjectundefined12751363(0,patch_fetch.patchFetch)undefined24412541(0,app_paths_.normalizeAppPath)undefined29993093no_fallback_error_external_.NoFallbackErrorundefined39354021(0,trace_tracer.getTracer)undefined44384534(0,request_meta.getRequestMeta)undefined51385231node.NodeNextRequestundefined52675362node.NodeNextResponseundefined53905481next_request.NextRequestAdapterundefined55165628(0,next_request.signalFromNodeResponse)undefined62646342constants.BaseServerSpanundefined73207416(0,request_meta.getRequestMeta)undefined88528971(0,web_utils.toNodeOutgoingHttpHeaders)undefined90699177lib_constants.NEXT_CACHE_TAGS_HEADERundefined95299621lib_constants.INFINITE_CACHEundefined98119903lib_constants.INFINITE_CACHEundefined1014310224response_cache.CachedRouteKindundefined1079610889(0,send_response/* sendResponse */.I)undefined1155811664(0,utils/* getRevalidateReason */.c)undefined1210112169route_kind.RouteKindundefined1271912800response_cache.CachedRouteKindundefined1326613362(0,request_meta.getRequestMeta)undefined1378513908(0,web_utils.fromNodeOutgoingHttpHeaders)undefined1395514051(0,request_meta.getRequestMeta)undefined1411714225lib_constants.NEXT_CACHE_TAGS_HEADERundefined1454514656(0,cache_control.getCacheControlHeader)undefined1471714810(0,send_response/* sendResponse */.I)undefined1530215380constants.BaseServerSpanundefined1547915545trace_tracer.SpanKindundefined1580115895no_fallback_error_external_.NoFallbackErrorundefined1611616222(0,utils/* getRevalidateReason */.c)undefined1656416657(0,send_response/* sendResponse */.I)undefined, /***/ 10846:  %webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Tmodule.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js");  /***/ }) t/***/ ((module) => { 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");, /***/ 12412:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("assert");  /***/ }) C/***/ ((module) => { module.exports = require("assert"); /***/ })  #module.exports = require("assert");, /***/ 14985:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("dns");  /***/ }) @/***/ ((module) => { module.exports = require("dns"); /***/ })   module.exports = require("dns");, /***/ 21820:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { module.exports = require("os");  /***/ }) ?/***/ ((module) => { module.exports = require("os"); /***/ })  module.exports = require("os");, /***/ 27910:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("stream");  /***/ }) C/***/ ((module) => { module.exports = require("stream"); /***/ })  #module.exports = require("stream");, /***/ 28354:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { !module.exports = require("util");  /***/ }) A/***/ ((module) => { module.exports = require("util"); /***/ })  !module.exports = require("util");, /***/ 29021:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { module.exports = require("fs");  /***/ }) ?/***/ ((module) => { module.exports = require("fs"); /***/ })  module.exports = require("fs");, /***/ 29294:  (webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Wmodule.exports = require("next/dist/server/app-render/work-async-storage.external.js");  /***/ }) w/***/ ((module) => { 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");, /***/ 33873:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { !module.exports = require("path");  /***/ }) A/***/ ((module) => { module.exports = require("path"); /***/ })  !module.exports = require("path");, /***/ 34631:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("tls");  /***/ }) @/***/ ((module) => { module.exports = require("tls"); /***/ })   module.exports = require("tls");, /***/ 41204:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { +module.exports = require("string_decoder");  /***/ }) K/***/ ((module) => { module.exports = require("string_decoder"); /***/ })  +module.exports = require("string_decoder");, /***/ 44870:  &webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");  /***/ }) yu/***/ ((module) => { module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }) z} ~Umodule.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js");, /***/ 53053:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { 5module.exports = require("node:diagnostics_channel");  /***/ }) pU/***/ ((module) => { module.exports = require("node:diagnostics_channel"); /***/ }) qt uvw5module.exports = require("node:diagnostics_channel");vx, /***/ 55511:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("crypto");  /***/ }) gC/***/ ((module) => { module.exports = require("crypto"); /***/ }) hk lmn#module.exports = require("crypto");mo, /***/ 63033:  -webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { \module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");  /***/ }) ^|/***/ ((module) => { module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }) _b cde\module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");df, /***/ 79428:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("buffer");  /***/ }) UC/***/ ((module) => { module.exports = require("buffer"); /***/ }) VY Z[\#module.exports = require("buffer");[], /***/ 83997:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("tty");  /***/ }) L@/***/ ((module) => { module.exports = require("tty"); /***/ }) MP QRS module.exports = require("tty");RT, /***/ 86439:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { Lmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");  /***/ }) Cl/***/ ((module) => { module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }) DG HIJLmodule.exports = require("next/dist/shared/lib/no-fallback-error.external");IK, /***/ 91645:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => {  module.exports = require("net");  /***/ }) :@/***/ ((module) => { module.exports = require("net"); /***/ }) ;> ?@A module.exports = require("net");@B, /***/ 94735:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { #module.exports = require("events");  /***/ }) 1C/***/ ((module) => { module.exports = require("events"); /***/ }) 25 678#module.exports = require("events");79, /***/ 96330:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { +module.exports = require("@prisma/client");  /***/ }) (K/***/ ((module) => { module.exports = require("@prisma/client"); /***/ }) ), -./+module.exports = require("@prisma/client");.0 }; ; // 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,6720,6325,546], () => (__webpack_exec__(7834))); ,module.exports = __webpack_exports__; })();  BX"use strict"; (() => { var exports = {}; exports.id = 1506; exports.ids = [1506]; exports.modules = { /***/ 261: /***/ ((module) => { module.exports = require("next/dist/shared/lib/router/utils/app-paths"); /***/ }), /***/ 7834: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { // 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/projects/[projectId]/risks/route.js var route_namespaceObject = {}; __webpack_require__.r(route_namespaceObject); __webpack_require__.d(route_namespaceObject, { GET: () => (GET), POST: () => (POST) }); // 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/projects/[projectId]/risks/route.js const { getActorFromRequest } = __webpack_require__(12773); const { requireProjectAccess } = __webpack_require__(15400); const { listRisks, createRisk } = __webpack_require__(69698); const { jsonResponse, errorResponse, parseJson } = __webpack_require__(22488); const { withIdempotency, getIdempotencyKey } = __webpack_require__(28779); const { trackRequest } = __webpack_require__(54775); async function GET(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); await requireProjectAccess(actor, projectId, "risk:read"); trackRequest("GET", "/api/projects/[projectId]/risks", 200, Date.now() - start); return jsonResponse({ risks: await listRisks(projectId) }); } catch (error) { trackRequest("GET", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } async function POST(request, { params }) { const start = Date.now(); try { const { projectId } = await params; const actor = await getActorFromRequest(request); const projectScope = await requireProjectAccess(actor, projectId, "risk:write"); const payload = await parseJson(request); const idempotencyKey = getIdempotencyKey(request); const risk = await withIdempotency(idempotencyKey, ()=>createRisk({ projectScope, actor, payload, request })); trackRequest("POST", "/api/projects/[projectId]/risks", 201, Date.now() - start); return jsonResponse({ risk }, 201); } catch (error) { trackRequest("POST", "/api/projects/[projectId]/risks", error.status || 500, Date.now() - start); return errorResponse(error); } } ;// ./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?page=%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&name=app%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%2Froute&pagePath=private-next-app-dir%2Fapi%2Fprojects%2F%5BprojectId%5D%2Frisks%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%2Fprojects%2F%5BprojectId%5D%2Frisks%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/projects/[projectId]/risks/route", pathname: "/api/projects/[projectId]/risks", filename: "route", bundlePath: "app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\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/projects/[projectId]/risks/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) => { module.exports = require("next/dist/compiled/next-server/app-page.runtime.prod.js"); /***/ }), /***/ 12412: /***/ ((module) => { module.exports = require("assert"); /***/ }), /***/ 14985: /***/ ((module) => { module.exports = require("dns"); /***/ }), /***/ 21820: /***/ ((module) => { module.exports = require("os"); /***/ }), /***/ 27910: /***/ ((module) => { module.exports = require("stream"); /***/ }), /***/ 28354: /***/ ((module) => { module.exports = require("util"); /***/ }), /***/ 29021: /***/ ((module) => { module.exports = require("fs"); /***/ }), /***/ 29294: /***/ ((module) => { module.exports = require("next/dist/server/app-render/work-async-storage.external.js"); /***/ }), /***/ 33873: /***/ ((module) => { module.exports = require("path"); /***/ }), /***/ 34631: /***/ ((module) => { module.exports = require("tls"); /***/ }), /***/ 41204: /***/ ((module) => { module.exports = require("string_decoder"); /***/ }), /***/ 44870: /***/ ((module) => { module.exports = require("next/dist/compiled/next-server/app-route.runtime.prod.js"); /***/ }), /***/ 53053: /***/ ((module) => { module.exports = require("node:diagnostics_channel"); /***/ }), /***/ 55511: /***/ ((module) => { module.exports = require("crypto"); /***/ }), /***/ 63033: /***/ ((module) => { module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js"); /***/ }), /***/ 79428: /***/ ((module) => { module.exports = require("buffer"); /***/ }), /***/ 83997: /***/ ((module) => { module.exports = require("tty"); /***/ }), /***/ 86439: /***/ ((module) => { module.exports = require("next/dist/shared/lib/no-fallback-error.external"); /***/ }), /***/ 91645: /***/ ((module) => { module.exports = require("net"); /***/ }), /***/ 94735: /***/ ((module) => { module.exports = require("events"); /***/ }), /***/ 96330: /***/ ((module) => { module.exports = require("@prisma/client"); /***/ }) }; ; // 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,6720,6325,546], () => (__webpack_exec__(7834))); module.exports = __webpack_exports__; })();  F  @^r"use strict"; (() => { var exports = {}; exports.id = 1506; exports.ids = [1506]; exports.modules = { /***/ 261: ]bbb, /***/ 7834: \\^Ea^Edeaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaa\aaaavar __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) var __webpack_exports__ = __webpack_require__.X(0, [5873,6720,6325,546], () => (__webpack_exec__(7834))); ` Jwebpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSource` webpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceW"use strict"; exports.id = 546; exports.ids = [546]; exports.modules = { /***/ 23249: webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 1webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource [webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const Redis = require('ioredis'); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; d "$,__webpack_require__50453buffersourcesizemapshash const Redis = __webpack_require__(50453); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; const Redis = require('ioredis'); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; >012undefined2834__webpack_require__undefined364450453undefined /***/ }) buffersourcesizemapshash/***/ ((module, __unused_webpack_exports, __webpack_require__) => { const Redis = __webpack_require__(50453); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; /***/ }) {"finalSource":true}mapbufferedMap ConcatSourceRawSourceE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { ReplaceSourceRawSource"use strict"; const Redis = require('ioredis'); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; >012undefined2834__webpack_require__undefined364450453undefined RawSource /***/ }), /***/ 23518:   webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const { prisma } = require("../lib/prisma"); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; d !')7__webpack_require__17964buffersourcesizemapshash const { prisma } = __webpack_require__(17964); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; const { prisma } = require("../lib/prisma"); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; >012undefined3339__webpack_require__undefined415517964undefined /***/ }) 5/***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { prisma } = __webpack_require__(17964); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; /***/ })  "use strict"; const { prisma } = require("../lib/prisma"); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; >012undefined3339__webpack_require__undefined415517964undefined, /***/ 28779:   webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceX"use strict"; const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; d -35=__webpack_require__23249buffersourcesizemapshashS const { redisGet, redisSet } = __webpack_require__(23249); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSourceX"use strict"; const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; >012undefined4551__webpack_require__undefined536123249undefined /***/ }) /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { redisGet, redisSet } = __webpack_require__(23249); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; /***/ })  X"use strict"; const { redisGet, redisSet } = require('./redis'); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; >012undefined4551__webpack_require__undefined536123249undefined, /***/ 54775:  webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource/***/ ((module) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource <webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource"use strict"; const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics }; ` buffersourcesizemapshash const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSource"use strict"; const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics };  012undefined /***/ }) /***/ ((module) => { const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics }; /***/ })  /***/ ((module) => { "use strict"; const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics };  012undefined, /***/ 69698:  5webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { webpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource 6:webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceK9"use strict"; const { prisma } = require("../lib/prisma"); const { scoreRisk } = require("../domain/risk-engine"); const { writeAuditEvent } = require("./audit-service"); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; h !')7QWYoC__webpack_require__179645556723518buffersourcesizemapshash:9 const { prisma } = __webpack_require__(17964); const { scoreRisk } = __webpack_require__(55567); const { writeAuditEvent } = __webpack_require__(23518); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; {"finalSource":true}mapbufferedMap ReplaceSourceRawSourceK9"use strict"; const { prisma } = require("../lib/prisma"); const { scoreRisk } = require("../domain/risk-engine"); const { writeAuditEvent } = require("./audit-service"); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; 012undefined3339__webpack_require__undefined415517964undefined8187__webpack_require__undefined8911155567undefined143149__webpack_require__undefined15116723518undefined /***/ }) 9/***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { prisma } = __webpack_require__(17964); const { scoreRisk } = __webpack_require__(55567); const { writeAuditEvent } = __webpack_require__(23518); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; /***/ })  K9"use strict"; const { prisma } = require("../lib/prisma"); const { scoreRisk } = require("../domain/risk-engine"); const { writeAuditEvent } = require("./audit-service"); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; 012undefined3339__webpack_require__undefined415517964undefined8187__webpack_require__undefined8911155567undefined143149__webpack_require__undefined15116723518undefined }; ;  9T"use strict"; exports.id = 546; exports.ids = [546]; exports.modules = { /***/ 23249: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const Redis = __webpack_require__(50453); const REDIS_URL = process.env.REDIS_URL || 'redis://localhost:6379'; const ENABLED = process.env.COSMIC_REDIS_ENABLED !== 'false'; let redis = null; const fallbackStore = new Map(); const fallbackTimers = new Map(); function createClient() { if (!ENABLED) return null; try { const client = new Redis(REDIS_URL, { maxRetriesPerRequest: 1, retryStrategy (times) { if (times > 3) return null; return Math.min(times * 200, 2000); }, lazyConnect: true, enableOfflineQueue: false }); client.on('error', ()=>{}); client.on('close', ()=>{}); return client; } catch { return null; } } async function ensureConnected() { if (redis === null) redis = createClient(); if (!redis || redis.status === 'ready') return redis; if (redis.status === 'connecting' || redis.status === 'connect') return redis; try { await redis.connect(); return redis; } catch { return null; } } function fallbackGet(key) { const entry = fallbackStore.get(key); if (!entry) return null; if (entry.expiry && Date.now() > entry.expiry) { fallbackStore.delete(key); return null; } return entry.value; } function fallbackSet(key, value, ttlMs) { fallbackStore.set(key, { value, expiry: ttlMs ? Date.now() + ttlMs : null }); if (fallbackTimers.has(key)) clearTimeout(fallbackTimers.get(key)); if (ttlMs) { const timer = setTimeout(()=>{ fallbackStore.delete(key); fallbackTimers.delete(key); }, ttlMs); timer.unref(); fallbackTimers.set(key, timer); } } function fallbackDel(key) { fallbackStore.delete(key); if (fallbackTimers.has(key)) { clearTimeout(fallbackTimers.get(key)); fallbackTimers.delete(key); } } async function redisGet(key) { const client = await ensureConnected(); if (client) { try { return await client.get(key); } catch { return null; } } return fallbackGet(key); } async function redisSet(key, value, ttlMs) { const client = await ensureConnected(); if (client) { try { if (ttlMs) await client.set(key, value, 'PX', ttlMs); else await client.set(key, value); return; } catch {} } fallbackSet(key, value, ttlMs); } async function redisDel(key) { const client = await ensureConnected(); if (client) { try { await client.del(key); return; } catch {} } fallbackDel(key); } async function redisIncr(key, ttlMs) { const client = await ensureConnected(); if (client) { try { const val = await client.incr(key); if (ttlMs && val === 1) await client.pexpire(key, ttlMs); return val; } catch {} } const val = (parseInt(fallbackGet(key), 10) || 0) + 1; fallbackSet(key, String(val), ttlMs); return val; } async function redisTtl(key) { const client = await ensureConnected(); if (client) { try { return await client.ttl(key); } catch { return -2; } } const entry = fallbackStore.get(key); if (!entry || !entry.expiry) return -1; const remaining = Math.max(0, Math.floor((entry.expiry - Date.now()) / 1000)); return remaining > 0 ? remaining : -2; } async function redisFlush() { const client = await ensureConnected(); if (client) { try { await client.flushdb(); return; } catch {} } fallbackStore.clear(); for (const timer of fallbackTimers.values())clearTimeout(timer); fallbackTimers.clear(); } module.exports = { redisGet, redisSet, redisDel, redisIncr, redisTtl, redisFlush }; /***/ }), /***/ 23518: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { prisma } = __webpack_require__(17964); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; /***/ }), /***/ 28779: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { redisGet, redisSet } = __webpack_require__(23249); const TTL_MS = 86400000; async function withIdempotency(key, handler) { if (!key) return handler(); const existing = await redisGet(`idemp:${key}`); if (existing) return JSON.parse(existing); const result = await handler(); await redisSet(`idemp:${key}`, JSON.stringify(result), TTL_MS); return result; } function getIdempotencyKey(request) { return request.headers.get("Idempotency-Key") || request.headers.get("idempotency-key") || null; } module.exports = { withIdempotency, getIdempotencyKey }; /***/ }), /***/ 54775: /***/ ((module) => { const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics }; /***/ }), /***/ 69698: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { const { prisma } = __webpack_require__(17964); const { scoreRisk } = __webpack_require__(55567); const { writeAuditEvent } = __webpack_require__(23518); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; /***/ }) }; ;  =  `/UW"use strict"; exports.id = 546; exports.ids = [546]; exports.modules = { /***/ 23249: TE/***/ ((module, __unused_webpack_exports, __webpack_require__) => { < HXX, /***/ 23518: R;"use strict"; const { prisma } = require("../lib/prisma"); async function writeAuditEvent({ organizationId, workspaceId = null, projectId = null, actorUserId = null, entityType, entityId, action, beforeJson = null, afterJson = null, request = null }) { return prisma.auditEvent.create({ data: { organizationId, workspaceId, projectId, actorUserId, entityType, entityId, action, beforeJson, afterJson, ipAddress: request ? request.headers.get("x-forwarded-for") || null : null, userAgent: request ? request.headers.get("user-agent") || null : null } }); } module.exports = { writeAuditEvent }; >012undefined3339__webpack_require__undefined415517964undefinedUU, /***/ 28779: O89TT, /***/ 54775: N7"use strict"; const counters = { requests: 0, errors: 0, methods: {}, routes: {} }; const timings = []; function trackRequest(method, pathname, statusCode, durationMs) { counters.requests++; counters.methods[method] = (counters.methods[method] || 0) + 1; const route = pathname.replace(/\/[a-z0-9]{20,}/gi, "/:id").replace(/\/[a-z0-9-]{20,}/gi, "/:id"); counters.routes[route] = (counters.routes[route] || 0) + 1; if (statusCode >= 400) counters.errors++; timings.push({ method, pathname, statusCode, durationMs, timestamp: Date.now() }); if (timings.length > 1000) timings.splice(0, timings.length - 1000); } function getMetrics() { const avgDuration = timings.length ? Math.round(timings.reduce((s, t)=>s + t.durationMs, 0) / timings.length) : 0; return { uptime: process.uptime(), totalRequests: counters.requests, totalErrors: counters.errors, avgDurationMs: avgDuration, methods: counters.methods, routes: counters.routes, recentTimings: timings.slice(-20) }; } module.exports = { trackRequest, getMetrics };  012undefinedQQ, /***/ 69698: K4K9"use strict"; const { prisma } = require("../lib/prisma"); const { scoreRisk } = require("../domain/risk-engine"); const { writeAuditEvent } = require("./audit-service"); function normalizeRiskStatus(value) { if (value === "In mitigation" || value === "IN_MITIGATION") return "IN_MITIGATION"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; if (value === "Closed" || value === "CLOSED") return "CLOSED"; return "OPEN"; } function normalizeApprovalStatus(value) { if (value === "Approved" || value === "APPROVED") return "APPROVED"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; if (value === "Accepted" || value === "ACCEPTED") return "ACCEPTED"; return "PENDING"; } function normalizeMitigationStatus(value) { if (value === "In progress" || value === "IN_PROGRESS") return "IN_PROGRESS"; if (value === "Done" || value === "DONE") return "DONE"; if (value === "Rejected" || value === "REJECTED") return "REJECTED"; return "NOT_STARTED"; } async function listRisks(projectId) { const risks = await prisma.risk.findMany({ where: { projectId }, include: { mitigations: true, evidence: true }, orderBy: { createdAt: "asc" } }); return risks.map((risk)=>scoreRisk(Object.assign({}, risk, { mitigationProgress: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.progressPercent, 0) / risk.mitigations.length) : 0, mitigationEffectiveness: risk.mitigations.length ? Math.round(risk.mitigations.reduce((sum, item)=>sum + item.effectivenessPercent, 0) / risk.mitigations.length) : 0 }))); } async function createRisk({ projectScope, actor, payload, request }) { if (!payload.title) throw new Error("title is required"); const risk = await prisma.risk.create({ data: { projectId: projectScope.project.id, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", dimension: payload.dimension || "Technical", domain: payload.domain || "Technical risks", lifecyclePhase: payload.lifecyclePhase || projectScope.project.currentLifecyclePhase || "Needs identification", probability: Number(payload.probability || 3), impact: Number(payload.impact || 3), detectability: Number(payload.detectability || 3), status: normalizeRiskStatus(payload.status), approvalStatus: normalizeApprovalStatus(payload.approvalStatus), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, evidenceSummary: payload.evidenceSummary || payload.evidence || "" } }); if (payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: risk.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceSummary || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "create", afterJson: risk, request }); return scoreRisk(risk); } async function updateRisk({ projectScope, riskId, actor, payload, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const risk = await prisma.risk.update({ where: { id: riskId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, dimension: payload.dimension ?? before.dimension, domain: payload.domain ?? before.domain, lifecyclePhase: payload.lifecyclePhase ?? before.lifecyclePhase, probability: payload.probability !== undefined ? Number(payload.probability) : before.probability, impact: payload.impact !== undefined ? Number(payload.impact) : before.impact, detectability: payload.detectability !== undefined ? Number(payload.detectability) : before.detectability, status: payload.status !== undefined ? normalizeRiskStatus(payload.status) : before.status, approvalStatus: payload.approvalStatus !== undefined ? normalizeApprovalStatus(payload.approvalStatus) : before.approvalStatus, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, evidenceSummary: payload.evidenceSummary ?? before.evidenceSummary } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: risk.id, action: "update", beforeJson: before, afterJson: risk, request }); return scoreRisk(risk); } async function deleteRisk({ projectScope, riskId, actor, request }) { const before = await prisma.risk.findUnique({ where: { id: riskId } }); if (!before || before.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } await prisma.risk.delete({ where: { id: riskId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Risk", entityId: riskId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function createMitigation({ projectScope, riskId, actor, payload, request }) { const risk = await prisma.risk.findUnique({ where: { id: riskId } }); if (!risk || risk.projectId !== projectScope.project.id) { const error = new Error(`Risk not found: ${riskId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.create({ data: { riskId, ownerDisplayName: payload.ownerDisplayName || payload.owner || actor.displayName, title: payload.title, description: payload.description || "", status: normalizeMitigationStatus(payload.status), progressPercent: Number(payload.progressPercent ?? payload.progress_percent ?? 0), effectivenessPercent: Number(payload.effectivenessPercent ?? payload.effectiveness_percent ?? 0), dueDate: payload.dueDate ? new Date(payload.dueDate) : null, sequence: Number(payload.sequence || 1) } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "create", afterJson: mitigation, request }); return mitigation; } async function getMitigation(mitigationId) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true, projectId: true } } } }); if (!mitigation) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } return mitigation; } async function listProjectMitigations(projectId) { return prisma.mitigation.findMany({ where: { risk: { projectId } }, include: { evidence: true, risk: { select: { id: true, title: true, dimension: true } } }, orderBy: { createdAt: "desc" } }); } async function updateMitigation({ projectScope, mitigationId, actor, payload, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const mitigation = await prisma.mitigation.update({ where: { id: mitigationId }, data: { title: payload.title ?? before.title, description: payload.description ?? before.description, ownerDisplayName: payload.ownerDisplayName ?? payload.owner ?? before.ownerDisplayName, status: payload.status !== undefined ? normalizeMitigationStatus(payload.status) : before.status, progressPercent: payload.progressPercent !== undefined ? Number(payload.progressPercent) : before.progressPercent, effectivenessPercent: payload.effectivenessPercent !== undefined ? Number(payload.effectivenessPercent) : before.effectivenessPercent, dueDate: payload.dueDate !== undefined ? payload.dueDate ? new Date(payload.dueDate) : null : before.dueDate, sequence: payload.sequence !== undefined ? Number(payload.sequence) : before.sequence } }); if (payload.evidenceTitle || payload.evidenceUri) { await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: before.riskId, mitigationId: mitigation.id, type: payload.evidenceType || "Review", title: payload.evidenceTitle || payload.evidenceUri, uri: payload.evidenceUri || null, createdById: actor.id } }); } await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigation.id, action: "update", beforeJson: before, afterJson: mitigation, request }); return mitigation; } async function deleteMitigation({ projectScope, mitigationId, actor, request }) { const before = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!before || before.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } await prisma.mitigation.delete({ where: { id: mitigationId } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Mitigation", entityId: mitigationId, action: "delete", beforeJson: before, request }); return { deleted: true }; } async function addEvidenceToMitigation({ projectScope, mitigationId, actor, payload, request }) { const mitigation = await prisma.mitigation.findUnique({ where: { id: mitigationId }, include: { risk: { select: { projectId: true } } } }); if (!mitigation || mitigation.risk.projectId !== projectScope.project.id) { const error = new Error(`Mitigation not found: ${mitigationId}`); error.status = 404; throw error; } const evidence = await prisma.evidence.create({ data: { projectId: projectScope.project.id, riskId: mitigation.riskId, mitigationId: mitigation.id, type: payload.type || "Review", title: payload.title, uri: payload.uri || null, createdById: actor.id } }); await writeAuditEvent({ organizationId: projectScope.organization.id, workspaceId: projectScope.project.workspaceId, projectId: projectScope.project.id, actorUserId: actor.id, entityType: "Evidence", entityId: evidence.id, action: "create", afterJson: evidence, request }); return evidence; } module.exports = { listRisks, createRisk, updateRisk, deleteRisk, createMitigation, getMitigation, listProjectMitigations, updateMitigation, deleteMitigation, addEvidenceToMitigation, normalizeRiskStatus, normalizeApprovalStatus }; 012undefined3339__webpack_require__undefined415517964undefined8187__webpack_require__undefined8911155567undefined143149__webpack_require__undefined15116723518undefinedNN }; ; #"use strict";(()=>{var a={};a.id=1754,a.ids=[1754],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},14985:a=>{a.exports=require("dns")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},41204:a=>{a.exports=require("string_decoder")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},47272:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>K,patchFetch:()=>J,routeModule:()=>F,serverHooks:()=>I,workAsyncStorage:()=>G,workUnitAsyncStorage:()=>H});var d={};c.r(d),c.d(d,{POST:()=>E});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{prisma:u}=c(17964),{getActorFromRequest:v}=c(12773),{requireProjectAccess:w}=c(15400),{createMitigation:x}=c(69698),{jsonResponse:y,errorResponse:z,parseJson:A}=c(22488),{withIdempotency:B,getIdempotencyKey:C}=c(28779),{trackRequest:D}=c(54775);async function E(a,{params:b}){let c=Date.now();try{let{riskId:d}=await b,e=await u.risk.findUnique({where:{id:d}});if(!e){let a=Error(`Risk not found: ${d}`);throw a.status=404,a}let f=await v(a),g=await w(f,e.projectId,"mitigation:write"),h=await A(a),i=C(a),j=await B(i,()=>x({projectScope:g,riskId:d,actor:f,payload:h,request:a}));return D("POST","/api/risks/[riskId]/mitigations",201,Date.now()-c),y({mitigation:j},201)}catch(a){return D("POST","/api/risks/[riskId]/mitigations",a.status||500,Date.now()-c),z(a)}}let F=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/risks/[riskId]/mitigations/route",pathname:"/api/risks/[riskId]/mitigations",filename:"route",bundlePath:"app/api/risks/[riskId]/mitigations/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\\risks\\[riskId]\\mitigations\\route.js",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:G,workUnitAsyncStorage:H,serverHooks:I}=F;function J(){return(0,g.patchFetch)({workAsyncStorage:G,workUnitAsyncStorage:H})}async function K(a,b,c){var d;let e="/api/risks/[riskId]/mitigations/route";"/index"===e&&(e="/");let g=await F.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:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!E||F.isDev||x||(G="/index"===(G=C)?"/":G);let H=!0===F.isDev||!E,I=E&&!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)=>F.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=>F.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")&&A&&B&&!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(!E)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 F.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})},z),b}},l=await F.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)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",A?"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")&&E||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 F.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},79428:a=>{a.exports=require("buffer")},83997:a=>{a.exports=require("tty")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},96330:a=>{a.exports=require("@prisma/client")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,6720,6325,546],()=>b(b.s=47272));module.exports=c})();   j"use strict";(()=>{var a={};a.id=1506,a.ids=[1506],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},7834:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>L,patchFetch:()=>K,routeModule:()=>G,serverHooks:()=>J,workAsyncStorage:()=>H,workUnitAsyncStorage:()=>I});var d={};c.r(d),c.d(d,{GET:()=>E,POST:()=>F});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{getActorFromRequest:u}=c(12773),{requireProjectAccess:v}=c(15400),{listRisks:w,createRisk:x}=c(69698),{jsonResponse:y,errorResponse:z,parseJson:A}=c(22488),{withIdempotency:B,getIdempotencyKey:C}=c(28779),{trackRequest:D}=c(54775);async function E(a,{params:b}){let c=Date.now();try{let{projectId:d}=await b,e=await u(a);return await v(e,d,"risk:read"),D("GET","/api/projects/[projectId]/risks",200,Date.now()-c),y({risks:await w(d)})}catch(a){return D("GET","/api/projects/[projectId]/risks",a.status||500,Date.now()-c),z(a)}}async function F(a,{params:b}){let c=Date.now();try{let{projectId:d}=await b,e=await u(a),f=await v(e,d,"risk:write"),g=await A(a),h=C(a),i=await B(h,()=>x({projectScope:f,actor:e,payload:g,request:a}));return D("POST","/api/projects/[projectId]/risks",201,Date.now()-c),y({risk:i},201)}catch(a){return D("POST","/api/projects/[projectId]/risks",a.status||500,Date.now()-c),z(a)}}let G=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/projects/[projectId]/risks/route",pathname:"/api/projects/[projectId]/risks",filename:"route",bundlePath:"app/api/projects/[projectId]/risks/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\\projects\\[projectId]\\risks\\route.js",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:H,workUnitAsyncStorage:I,serverHooks:J}=G;function K(){return(0,g.patchFetch)({workAsyncStorage:H,workUnitAsyncStorage:I})}async function L(a,b,c){var d;let e="/api/projects/[projectId]/risks/route";"/index"===e&&(e="/");let g=await G.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:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let F=null;!E||G.isDev||x||(F="/index"===(F=C)?"/":F);let H=!0===G.isDev||!E,I=E&&!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)=>G.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=>G.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")&&A&&B&&!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(!E)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 G.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})},z),b}},l=await G.handleResponse({req:a,nextConfig:w,cacheKey:F,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)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",A?"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")&&E||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 G.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},12412:a=>{a.exports=require("assert")},14985:a=>{a.exports=require("dns")},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},41204:a=>{a.exports=require("string_decoder")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},53053:a=>{a.exports=require("node:diagnostics_channel")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},79428:a=>{a.exports=require("buffer")},83997:a=>{a.exports=require("tty")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},96330:a=>{a.exports=require("@prisma/client")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,6720,6325,546],()=>b(b.s=7834));module.exports=c})();  +"use strict";exports.id=546,exports.ids=[546],exports.modules={23249:(a,b,c)=>{let d=c(50453),e=process.env.REDIS_URL||"redis://localhost:6379",f="false"!==process.env.COSMIC_REDIS_ENABLED,g=null,h=new Map,i=new Map;async function j(){if(null===g&&(g=function(){if(!f)return null;try{let a=new d(e,{maxRetriesPerRequest:1,retryStrategy:a=>a>3?null:Math.min(200*a,2e3),lazyConnect:!0,enableOfflineQueue:!1});return a.on("error",()=>{}),a.on("close",()=>{}),a}catch{return null}}()),!g||"ready"===g.status||"connecting"===g.status||"connect"===g.status)return g;try{return await g.connect(),g}catch{return null}}function k(a){let b=h.get(a);return b?b.expiry&&Date.now()>b.expiry?(h.delete(a),null):b.value:null}function l(a,b,c){if(h.set(a,{value:b,expiry:c?Date.now()+c:null}),i.has(a)&&clearTimeout(i.get(a)),c){let b=setTimeout(()=>{h.delete(a),i.delete(a)},c);b.unref(),i.set(a,b)}}a.exports={redisGet:async function(a){let b=await j();if(b)try{return await b.get(a)}catch{return null}return k(a)},redisSet:async function(a,b,c){let d=await j();if(d)try{c?await d.set(a,b,"PX",c):await d.set(a,b);return}catch{}l(a,b,c)},redisDel:async function(a){let b=await j();if(b)try{await b.del(a);return}catch{}h.delete(a),i.has(a)&&(clearTimeout(i.get(a)),i.delete(a))},redisIncr:async function(a,b){let c=await j();if(c)try{let d=await c.incr(a);return b&&1===d&&await c.pexpire(a,b),d}catch{}let d=(parseInt(k(a),10)||0)+1;return l(a,String(d),b),d},redisTtl:async function(a){let b=await j();if(b)try{return await b.ttl(a)}catch{return -2}let c=h.get(a);if(!c||!c.expiry)return -1;let d=Math.max(0,Math.floor((c.expiry-Date.now())/1e3));return d>0?d:-2},redisFlush:async function(){let a=await j();if(a)try{await a.flushdb();return}catch{}for(let a of(h.clear(),i.values()))clearTimeout(a);i.clear()}}},23518:(a,b,c)=>{let{prisma:d}=c(17964);a.exports={writeAuditEvent:async function({organizationId:a,workspaceId:b=null,projectId:c=null,actorUserId:e=null,entityType:f,entityId:g,action:h,beforeJson:i=null,afterJson:j=null,request:k=null}){return d.auditEvent.create({data:{organizationId:a,workspaceId:b,projectId:c,actorUserId:e,entityType:f,entityId:g,action:h,beforeJson:i,afterJson:j,ipAddress:k&&k.headers.get("x-forwarded-for")||null,userAgent:k&&k.headers.get("user-agent")||null}})}}},28779:(a,b,c)=>{let{redisGet:d,redisSet:e}=c(23249);a.exports={withIdempotency:async function a(a,b){if(!a)return b();let c=await d(`idemp:${a}`);if(c)return JSON.parse(c);let f=await b();return await e(`idemp:${a}`,JSON.stringify(f),864e5),f},getIdempotencyKey:function(a){return a.headers.get("Idempotency-Key")||a.headers.get("idempotency-key")||null}}},54775:a=>{let b={requests:0,errors:0,methods:{},routes:{}},c=[];a.exports={trackRequest:function(a,d,e,f){b.requests++,b.methods[a]=(b.methods[a]||0)+1;let g=d.replace(/\/[a-z0-9]{20,}/gi,"/:id").replace(/\/[a-z0-9-]{20,}/gi,"/:id");b.routes[g]=(b.routes[g]||0)+1,e>=400&&b.errors++,c.push({method:a,pathname:d,statusCode:e,durationMs:f,timestamp:Date.now()}),c.length>1e3&&c.splice(0,c.length-1e3)},getMetrics:function(){let a=c.length?Math.round(c.reduce((a,b)=>a+b.durationMs,0)/c.length):0;return{uptime:process.uptime(),totalRequests:b.requests,totalErrors:b.errors,avgDurationMs:a,methods:b.methods,routes:b.routes,recentTimings:c.slice(-20)}}}},69698:(a,b,c)=>{let{prisma:d}=c(17964),{scoreRisk:e}=c(55567),{writeAuditEvent:f}=c(23518);function g(a){return"In mitigation"===a||"IN_MITIGATION"===a?"IN_MITIGATION":"Accepted"===a||"ACCEPTED"===a?"ACCEPTED":"Closed"===a||"CLOSED"===a?"CLOSED":"OPEN"}function h(a){return"Approved"===a||"APPROVED"===a?"APPROVED":"Rejected"===a||"REJECTED"===a?"REJECTED":"Accepted"===a||"ACCEPTED"===a?"ACCEPTED":"PENDING"}function i(a){return"In progress"===a||"IN_PROGRESS"===a?"IN_PROGRESS":"Done"===a||"DONE"===a?"DONE":"Rejected"===a||"REJECTED"===a?"REJECTED":"NOT_STARTED"}a.exports={listRisks:async function(a){return(await d.risk.findMany({where:{projectId:a},include:{mitigations:!0,evidence:!0},orderBy:{createdAt:"asc"}})).map(a=>e(Object.assign({},a,{mitigationProgress:a.mitigations.length?Math.round(a.mitigations.reduce((a,b)=>a+b.progressPercent,0)/a.mitigations.length):0,mitigationEffectiveness:a.mitigations.length?Math.round(a.mitigations.reduce((a,b)=>a+b.effectivenessPercent,0)/a.mitigations.length):0})))},createRisk:async function({projectScope:a,actor:b,payload:c,request:i}){if(!c.title)throw Error("title is required");let j=await d.risk.create({data:{projectId:a.project.id,ownerDisplayName:c.ownerDisplayName||c.owner||b.displayName,title:c.title,description:c.description||"",dimension:c.dimension||"Technical",domain:c.domain||"Technical risks",lifecyclePhase:c.lifecyclePhase||a.project.currentLifecyclePhase||"Needs identification",probability:Number(c.probability||3),impact:Number(c.impact||3),detectability:Number(c.detectability||3),status:g(c.status),approvalStatus:h(c.approvalStatus),dueDate:c.dueDate?new Date(c.dueDate):null,evidenceSummary:c.evidenceSummary||c.evidence||""}});return(c.evidenceTitle||c.evidenceSummary||c.evidenceUri)&&await d.evidence.create({data:{projectId:a.project.id,riskId:j.id,type:c.evidenceType||"Review",title:c.evidenceTitle||c.evidenceSummary||c.evidenceUri,uri:c.evidenceUri||null,createdById:b.id}}),await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:b.id,entityType:"Risk",entityId:j.id,action:"create",afterJson:j,request:i}),e(j)},updateRisk:async function({projectScope:a,riskId:b,actor:c,payload:i,request:j}){let k=await d.risk.findUnique({where:{id:b}});if(!k||k.projectId!==a.project.id){let a=Error(`Risk not found: ${b}`);throw a.status=404,a}let l=await d.risk.update({where:{id:b},data:{title:i.title??k.title,description:i.description??k.description,dimension:i.dimension??k.dimension,domain:i.domain??k.domain,lifecyclePhase:i.lifecyclePhase??k.lifecyclePhase,probability:void 0!==i.probability?Number(i.probability):k.probability,impact:void 0!==i.impact?Number(i.impact):k.impact,detectability:void 0!==i.detectability?Number(i.detectability):k.detectability,status:void 0!==i.status?g(i.status):k.status,approvalStatus:void 0!==i.approvalStatus?h(i.approvalStatus):k.approvalStatus,dueDate:void 0!==i.dueDate?i.dueDate?new Date(i.dueDate):null:k.dueDate,evidenceSummary:i.evidenceSummary??k.evidenceSummary}});return await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Risk",entityId:l.id,action:"update",beforeJson:k,afterJson:l,request:j}),e(l)},deleteRisk:async function({projectScope:a,riskId:b,actor:c,request:e}){let g=await d.risk.findUnique({where:{id:b}});if(!g||g.projectId!==a.project.id){let a=Error(`Risk not found: ${b}`);throw a.status=404,a}return await d.risk.delete({where:{id:b}}),await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Risk",entityId:b,action:"delete",beforeJson:g,request:e}),{deleted:!0}},createMitigation:async function({projectScope:a,riskId:b,actor:c,payload:e,request:g}){let h=await d.risk.findUnique({where:{id:b}});if(!h||h.projectId!==a.project.id){let a=Error(`Risk not found: ${b}`);throw a.status=404,a}let j=await d.mitigation.create({data:{riskId:b,ownerDisplayName:e.ownerDisplayName||e.owner||c.displayName,title:e.title,description:e.description||"",status:i(e.status),progressPercent:Number(e.progressPercent??e.progress_percent??0),effectivenessPercent:Number(e.effectivenessPercent??e.effectiveness_percent??0),dueDate:e.dueDate?new Date(e.dueDate):null,sequence:Number(e.sequence||1)}});return(e.evidenceTitle||e.evidenceUri)&&await d.evidence.create({data:{projectId:a.project.id,riskId:b,mitigationId:j.id,type:e.evidenceType||"Review",title:e.evidenceTitle||e.evidenceUri,uri:e.evidenceUri||null,createdById:c.id}}),await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Mitigation",entityId:j.id,action:"create",afterJson:j,request:g}),j},getMitigation:async function(a){let b=await d.mitigation.findUnique({where:{id:a},include:{evidence:!0,risk:{select:{id:!0,title:!0,dimension:!0,projectId:!0}}}});if(!b){let b=Error(`Mitigation not found: ${a}`);throw b.status=404,b}return b},listProjectMitigations:async function(a){return d.mitigation.findMany({where:{risk:{projectId:a}},include:{evidence:!0,risk:{select:{id:!0,title:!0,dimension:!0}}},orderBy:{createdAt:"desc"}})},updateMitigation:async function({projectScope:a,mitigationId:b,actor:c,payload:e,request:g}){let h=await d.mitigation.findUnique({where:{id:b},include:{risk:{select:{projectId:!0}}}});if(!h||h.risk.projectId!==a.project.id){let a=Error(`Mitigation not found: ${b}`);throw a.status=404,a}let j=await d.mitigation.update({where:{id:b},data:{title:e.title??h.title,description:e.description??h.description,ownerDisplayName:e.ownerDisplayName??e.owner??h.ownerDisplayName,status:void 0!==e.status?i(e.status):h.status,progressPercent:void 0!==e.progressPercent?Number(e.progressPercent):h.progressPercent,effectivenessPercent:void 0!==e.effectivenessPercent?Number(e.effectivenessPercent):h.effectivenessPercent,dueDate:void 0!==e.dueDate?e.dueDate?new Date(e.dueDate):null:h.dueDate,sequence:void 0!==e.sequence?Number(e.sequence):h.sequence}});return(e.evidenceTitle||e.evidenceUri)&&await d.evidence.create({data:{projectId:a.project.id,riskId:h.riskId,mitigationId:j.id,type:e.evidenceType||"Review",title:e.evidenceTitle||e.evidenceUri,uri:e.evidenceUri||null,createdById:c.id}}),await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Mitigation",entityId:j.id,action:"update",beforeJson:h,afterJson:j,request:g}),j},deleteMitigation:async function({projectScope:a,mitigationId:b,actor:c,request:e}){let g=await d.mitigation.findUnique({where:{id:b},include:{risk:{select:{projectId:!0}}}});if(!g||g.risk.projectId!==a.project.id){let a=Error(`Mitigation not found: ${b}`);throw a.status=404,a}return await d.mitigation.delete({where:{id:b}}),await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Mitigation",entityId:b,action:"delete",beforeJson:g,request:e}),{deleted:!0}},addEvidenceToMitigation:async function({projectScope:a,mitigationId:b,actor:c,payload:e,request:g}){let h=await d.mitigation.findUnique({where:{id:b},include:{risk:{select:{projectId:!0}}}});if(!h||h.risk.projectId!==a.project.id){let a=Error(`Mitigation not found: ${b}`);throw a.status=404,a}let i=await d.evidence.create({data:{projectId:a.project.id,riskId:h.riskId,mitigationId:h.id,type:e.type||"Review",title:e.title,uri:e.uri||null,createdById:c.id}});return await f({organizationId:a.organization.id,workspaceId:a.project.workspaceId,projectId:a.project.id,actorUserId:c.id,entityType:"Evidence",entityId:i.id,action:"create",afterJson:i,request:g}),i},normalizeRiskStatus:g,normalizeApprovalStatus:h}}};