omniroute 3.0.6 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page.js +2 -2
- package/app/.next/server/app/400/page.js.nft.json +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page.js +2 -2
- package/app/.next/server/app/401/page.js.nft.json +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page.js +2 -2
- package/app/.next/server/app/403/page.js.nft.json +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page.js +2 -2
- package/app/.next/server/app/408/page.js.nft.json +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page.js +2 -2
- package/app/.next/server/app/429/page.js.nft.json +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page.js +2 -2
- package/app/.next/server/app/500/page.js.nft.json +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page.js +2 -2
- package/app/.next/server/app/502/page.js.nft.json +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page.js +2 -2
- package/app/.next/server/app/503/page.js.nft.json +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +1 -1
- package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route.js +1 -1
- package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
- package/app/.next/server/app/api/openapi/spec/route.js +1 -1
- package/app/.next/server/app/api/openapi/spec/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js +7 -2
- package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +6 -5
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +2 -2
- package/app/.next/server/app/docs/page.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page.js +2 -2
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page.js +2 -2
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page.js +2 -2
- package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page.js +2 -2
- package/app/.next/server/app/offline/page.js.nft.json +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +2 -2
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page.js +2 -2
- package/app/.next/server/app/status/page.js.nft.json +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page.js +2 -2
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__fea5312b._.js → [root-of-the-server]__1a67cabb._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__228deb98._.js +6 -0
- package/app/.next/server/chunks/[root-of-the-server]__3aa1672b._.js +3 -0
- package/app/.next/server/chunks/{[root-of-the-server]__9d50d114._.js → [root-of-the-server]__3e31c0c5._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__4e5a04c2._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7d0781e8._.js +6 -0
- package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
- package/app/.next/server/chunks/{[root-of-the-server]__6ff1ab32._.js → [root-of-the-server]__ab1817d2._.js} +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__e376e668._.js → [root-of-the-server]__b2d1faff._.js} +2 -2
- package/app/.next/server/chunks/{[root-of-the-server]__192ce3e4._.js → [root-of-the-server]__b974107a._.js} +2 -2
- package/app/.next/server/chunks/[root-of-the-server]__d49fae76._.js +3 -0
- package/app/.next/server/chunks/{[root-of-the-server]__1a89bfa5._.js → [root-of-the-server]__d6de923d._.js} +3 -3
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_06515a8a._.js +1 -1
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_85c0d9b3._.js +1 -1
- package/app/.next/server/chunks/_d13cbb6d._.js +3 -0
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
- package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.js +1 -1
- package/app/.next/server/chunks/ssr/{[root-of-the-server]__d5a9e5ee._.js → [root-of-the-server]__62183d3b._.js} +2 -2
- package/app/.next/server/chunks/ssr/{[root-of-the-server]__e4499d60._.js → [root-of-the-server]__7a1929fd._.js} +2 -2
- package/app/.next/server/chunks/ssr/{[root-of-the-server]__18da985c._.js → [root-of-the-server]__9c6249ab._.js} +2 -2
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/_19b3d5b1._.js +1 -1
- package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
- package/app/.next/server/chunks/ssr/src_608e5edc._.js +1 -1
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_936a9ee0._.js +1 -1
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_playground_page_tsx_06c08266._.js +2 -2
- package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
- package/app/.next/server/middleware.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{c4538578367f8d6e.js → 29003ec8ef226c62.js} +2 -2
- package/app/.next/static/chunks/{98a065e472ead1c5.js → 58d319dd9faa8901.js} +1 -1
- package/app/.next/static/chunks/6350bc1d56a7114c.js +2 -0
- package/app/.next/static/chunks/{339b27cecfee41d1.js → 84065c05df1a3a1a.js} +1 -1
- package/app/.next/static/chunks/9330486b16098458.js +1 -0
- package/app/.next/static/chunks/a622fa7a630e2dc2.js +1 -0
- package/app/CHANGELOG.md +22 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/config/providerRegistry.ts +7 -1
- package/app/open-sse/services/signatureCache.ts +5 -0
- package/app/package-lock.json +2 -2
- package/app/package.json +1 -1
- package/app/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx +40 -0
- package/app/src/app/(dashboard)/dashboard/playground/page.tsx +39 -40
- package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +1 -2
- package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +1 -1
- package/app/src/app/api/settings/proxy/test/route.ts +21 -1
- package/app/src/app/api/usage/[connectionId]/route.ts +83 -35
- package/package.json +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__5dcab57b._.js +0 -6
- package/app/.next/server/chunks/[root-of-the-server]__643f87ad._.js +0 -3
- package/app/.next/server/chunks/[root-of-the-server]__765c4417._.js +0 -3
- package/app/.next/server/chunks/[root-of-the-server]__7afe1e49._.js +0 -3
- package/app/.next/static/chunks/0e39e279bf7e4cd9.js +0 -2
- package/app/.next/static/chunks/3f18998354dd49b9.js +0 -1
- package/app/.next/static/chunks/f62c550263d8bca8.js +0 -1
- /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_buildManifest.js +0 -0
- /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_clientMiddlewareManifest.json +0 -0
- /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_ssgManifest.js +0 -0
|
@@ -33,6 +33,7 @@ export default function CLIToolsPageClient({ machineId }) {
|
|
|
33
33
|
const [apiKeys, setApiKeys] = useState([]);
|
|
34
34
|
const [toolStatuses, setToolStatuses] = useState({});
|
|
35
35
|
const [statusesLoaded, setStatusesLoaded] = useState(false);
|
|
36
|
+
const [dynamicModels, setDynamicModels] = useState([]);
|
|
36
37
|
const translateOrFallback = useCallback(
|
|
37
38
|
(key, fallback, values = undefined) => {
|
|
38
39
|
try {
|
|
@@ -49,6 +50,7 @@ export default function CLIToolsPageClient({ machineId }) {
|
|
|
49
50
|
loadCloudSettings();
|
|
50
51
|
fetchApiKeys();
|
|
51
52
|
fetchToolStatuses();
|
|
53
|
+
fetchDynamicModels();
|
|
52
54
|
}, []);
|
|
53
55
|
|
|
54
56
|
const loadCloudSettings = async () => {
|
|
@@ -107,6 +109,18 @@ export default function CLIToolsPageClient({ machineId }) {
|
|
|
107
109
|
}
|
|
108
110
|
};
|
|
109
111
|
|
|
112
|
+
const fetchDynamicModels = async () => {
|
|
113
|
+
try {
|
|
114
|
+
const res = await fetch("/v1/models");
|
|
115
|
+
if (res.ok) {
|
|
116
|
+
const data = await res.json();
|
|
117
|
+
setDynamicModels(data?.data || []);
|
|
118
|
+
}
|
|
119
|
+
} catch (error) {
|
|
120
|
+
console.log("Error fetching dynamic models:", error);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
110
124
|
const getActiveProviders = () => {
|
|
111
125
|
return connections.filter((c) => c.isActive !== false);
|
|
112
126
|
};
|
|
@@ -116,6 +130,7 @@ export default function CLIToolsPageClient({ machineId }) {
|
|
|
116
130
|
const models = [];
|
|
117
131
|
const seenModels = new Set();
|
|
118
132
|
|
|
133
|
+
// First: add static models from the constants
|
|
119
134
|
activeProviders.forEach((conn) => {
|
|
120
135
|
const alias = PROVIDER_ID_TO_ALIAS[conn.provider] || conn.provider;
|
|
121
136
|
const providerModels = getModelsByProviderId(conn.provider);
|
|
@@ -135,6 +150,31 @@ export default function CLIToolsPageClient({ machineId }) {
|
|
|
135
150
|
});
|
|
136
151
|
});
|
|
137
152
|
|
|
153
|
+
// Second: add dynamic models from /v1/models (fills gaps for Kiro, OpenCode, custom providers)
|
|
154
|
+
const activeProviderIds = new Set(activeProviders.map((c) => c.provider));
|
|
155
|
+
const activeAliases = new Set(
|
|
156
|
+
activeProviders.map((c) => PROVIDER_ID_TO_ALIAS[c.provider] || c.provider)
|
|
157
|
+
);
|
|
158
|
+
dynamicModels.forEach((dm) => {
|
|
159
|
+
const modelId = dm.id || dm;
|
|
160
|
+
if (seenModels.has(modelId)) return;
|
|
161
|
+
// Parse alias/model format
|
|
162
|
+
const slashIdx = modelId.indexOf("/");
|
|
163
|
+
if (slashIdx === -1) return;
|
|
164
|
+
const alias = modelId.substring(0, slashIdx);
|
|
165
|
+
const bareModel = modelId.substring(slashIdx + 1);
|
|
166
|
+
if (!activeAliases.has(alias) && !activeProviderIds.has(alias)) return;
|
|
167
|
+
seenModels.add(modelId);
|
|
168
|
+
models.push({
|
|
169
|
+
value: modelId,
|
|
170
|
+
label: modelId,
|
|
171
|
+
provider: alias,
|
|
172
|
+
alias: alias,
|
|
173
|
+
connectionName: "",
|
|
174
|
+
modelId: bareModel,
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
|
|
138
178
|
return models;
|
|
139
179
|
};
|
|
140
180
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect, useCallback, useRef } from "react";
|
|
4
4
|
import { Card, Button, Select, Badge } from "@/shared/components";
|
|
5
|
+
import { ALIAS_TO_ID } from "@/shared/constants/providers";
|
|
5
6
|
import dynamic from "next/dynamic";
|
|
6
7
|
|
|
7
8
|
const Editor = dynamic(() => import("@monaco-editor/react"), { ssr: false });
|
|
@@ -189,7 +190,7 @@ function ImageResultsInline({ data }: { data: any }) {
|
|
|
189
190
|
export default function PlaygroundPage() {
|
|
190
191
|
const [models, setModels] = useState<ModelInfo[]>([]);
|
|
191
192
|
const [providers, setProviders] = useState<ProviderOption[]>([]);
|
|
192
|
-
const [
|
|
193
|
+
const [allConnections, setAllConnections] = useState<ConnectionOption[]>([]);
|
|
193
194
|
const [selectedProvider, setSelectedProvider] = useState("");
|
|
194
195
|
const [selectedModel, setSelectedModel] = useState("");
|
|
195
196
|
const [selectedConnection, setSelectedConnection] = useState("");
|
|
@@ -214,39 +215,16 @@ export default function PlaygroundPage() {
|
|
|
214
215
|
const isImageEndpoint = selectedEndpoint === "images";
|
|
215
216
|
const supportsVision = isChatEndpoint && isVisionModel(selectedModel);
|
|
216
217
|
|
|
217
|
-
// Load connections for a given provider
|
|
218
|
-
const
|
|
219
|
-
if (!
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
fetch("/api/providers/client")
|
|
225
|
-
.then((res) => res.json())
|
|
226
|
-
.then((data) => {
|
|
227
|
-
const allConns: ConnectionOption[] = [];
|
|
228
|
-
for (const p of data?.providers || []) {
|
|
229
|
-
if (p.id !== provider) continue;
|
|
230
|
-
for (const conn of p.connections || []) {
|
|
231
|
-
allConns.push({
|
|
232
|
-
id: conn.id,
|
|
233
|
-
name: conn.name || conn.id,
|
|
234
|
-
provider: p.id,
|
|
235
|
-
authType: conn.authType || "apiKey",
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
setConnections(allConns);
|
|
240
|
-
setSelectedConnection("");
|
|
241
|
-
})
|
|
242
|
-
.catch(() => {
|
|
243
|
-
setConnections([]);
|
|
244
|
-
setSelectedConnection("");
|
|
245
|
-
});
|
|
246
|
-
}, []);
|
|
218
|
+
// Load connections for a given provider — filtered from allConnections
|
|
219
|
+
const providerConnections = allConnections.filter((c) => {
|
|
220
|
+
if (!selectedProvider) return false;
|
|
221
|
+
const resolvedProvider = ALIAS_TO_ID[selectedProvider] || selectedProvider;
|
|
222
|
+
return c.provider === resolvedProvider || c.provider === selectedProvider;
|
|
223
|
+
});
|
|
247
224
|
|
|
248
|
-
// Fetch models and
|
|
225
|
+
// Fetch models and ALL connections at startup
|
|
249
226
|
useEffect(() => {
|
|
227
|
+
// Fetch models
|
|
250
228
|
fetch("/v1/models")
|
|
251
229
|
.then((res) => res.json())
|
|
252
230
|
.then((data) => {
|
|
@@ -264,11 +242,27 @@ export default function PlaygroundPage() {
|
|
|
264
242
|
setProviders(providerOpts);
|
|
265
243
|
if (providerOpts.length > 0) {
|
|
266
244
|
setSelectedProvider(providerOpts[0].value);
|
|
267
|
-
loadConnections(providerOpts[0].value);
|
|
268
245
|
}
|
|
269
246
|
})
|
|
270
247
|
.catch(() => {});
|
|
271
|
-
|
|
248
|
+
|
|
249
|
+
// Fetch ALL connections (once)
|
|
250
|
+
fetch("/api/providers/client")
|
|
251
|
+
.then((res) => res.json())
|
|
252
|
+
.then((data) => {
|
|
253
|
+
const conns: ConnectionOption[] = [];
|
|
254
|
+
for (const conn of data?.connections || []) {
|
|
255
|
+
conns.push({
|
|
256
|
+
id: conn.id,
|
|
257
|
+
name: conn.name || conn.email || conn.id,
|
|
258
|
+
provider: conn.provider,
|
|
259
|
+
authType: conn.authType || "apiKey",
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
setAllConnections(conns);
|
|
263
|
+
})
|
|
264
|
+
.catch(() => {});
|
|
265
|
+
}, []);
|
|
272
266
|
|
|
273
267
|
const filteredModels = models
|
|
274
268
|
.filter((m) => !selectedProvider || m.id.startsWith(selectedProvider + "/"))
|
|
@@ -285,7 +279,6 @@ export default function PlaygroundPage() {
|
|
|
285
279
|
const handleProviderChange = (newProvider: string) => {
|
|
286
280
|
setSelectedProvider(newProvider);
|
|
287
281
|
setSelectedConnection("");
|
|
288
|
-
loadConnections(newProvider);
|
|
289
282
|
const providerModels = models
|
|
290
283
|
.filter((m) => !newProvider || m.id.startsWith(newProvider + "/"))
|
|
291
284
|
.map((m) => m.id);
|
|
@@ -527,18 +520,24 @@ export default function PlaygroundPage() {
|
|
|
527
520
|
</div>
|
|
528
521
|
)}
|
|
529
522
|
|
|
530
|
-
{/* Account/
|
|
531
|
-
{!isSearchEndpoint &&
|
|
523
|
+
{/* Account/Key — always shown when provider is selected */}
|
|
524
|
+
{!isSearchEndpoint && (
|
|
532
525
|
<div className="flex-1 w-full">
|
|
533
526
|
<label className="block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider">
|
|
534
|
-
Account
|
|
527
|
+
Account / Key
|
|
535
528
|
</label>
|
|
536
529
|
<Select
|
|
537
530
|
value={selectedConnection}
|
|
538
531
|
onChange={(e: any) => setSelectedConnection(e.target.value)}
|
|
539
532
|
options={[
|
|
540
|
-
{
|
|
541
|
-
|
|
533
|
+
{
|
|
534
|
+
value: "",
|
|
535
|
+
label:
|
|
536
|
+
providerConnections.length > 0
|
|
537
|
+
? `Auto (${providerConnections.length} accounts)`
|
|
538
|
+
: "No accounts",
|
|
539
|
+
},
|
|
540
|
+
...providerConnections.map((c) => ({
|
|
542
541
|
value: c.id,
|
|
543
542
|
label: c.name,
|
|
544
543
|
})),
|
|
@@ -209,12 +209,11 @@ export default function ProxyRegistryManager() {
|
|
|
209
209
|
method: "POST",
|
|
210
210
|
headers: { "Content-Type": "application/json" },
|
|
211
211
|
body: JSON.stringify({
|
|
212
|
+
proxyId: item.id,
|
|
212
213
|
proxy: {
|
|
213
214
|
type: item.type || "http",
|
|
214
215
|
host: item.host,
|
|
215
216
|
port: String(item.port || 8080),
|
|
216
|
-
username: item.username,
|
|
217
|
-
password: item.password,
|
|
218
217
|
},
|
|
219
218
|
}),
|
|
220
219
|
});
|
|
@@ -511,7 +511,7 @@ export default function ProviderLimits() {
|
|
|
511
511
|
</div>
|
|
512
512
|
|
|
513
513
|
{/* Account rows */}
|
|
514
|
-
<div className="rounded-xl border border-border overflow-hidden bg-
|
|
514
|
+
<div className="rounded-xl border border-border overflow-hidden bg-surface">
|
|
515
515
|
{/* Table header */}
|
|
516
516
|
<div
|
|
517
517
|
className="items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted"
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
import { testProxySchema } from "@/shared/validation/schemas";
|
|
9
9
|
import { isValidationFailure, validateBody } from "@/shared/validation/helpers";
|
|
10
10
|
import { createErrorResponse, createErrorResponseFromUnknown } from "@/lib/api/errorResponse";
|
|
11
|
+
import { getProxyById } from "@/lib/localDb";
|
|
11
12
|
|
|
12
13
|
const BASE_SUPPORTED_PROXY_TYPES = new Set(["http", "https"]);
|
|
13
14
|
|
|
@@ -56,7 +57,26 @@ export async function POST(request: Request) {
|
|
|
56
57
|
type: "invalid_request",
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
let { proxy } = validation.data;
|
|
61
|
+
|
|
62
|
+
// If a proxyId is provided, look up the real (non-redacted) credentials from DB.
|
|
63
|
+
// The frontend sends redacted credentials (***) from listProxies(), so we need
|
|
64
|
+
// the actual secrets for testing.
|
|
65
|
+
const body = rawBody as Record<string, unknown>;
|
|
66
|
+
const proxyId = typeof body.proxyId === "string" ? body.proxyId.trim() : null;
|
|
67
|
+
if (proxyId) {
|
|
68
|
+
const dbProxy = await getProxyById(proxyId, { includeSecrets: true });
|
|
69
|
+
if (dbProxy) {
|
|
70
|
+
proxy = {
|
|
71
|
+
...proxy,
|
|
72
|
+
host: proxy.host || dbProxy.host,
|
|
73
|
+
port: proxy.port || String(dbProxy.port),
|
|
74
|
+
type: proxy.type || dbProxy.type,
|
|
75
|
+
username: dbProxy.username,
|
|
76
|
+
password: dbProxy.password,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
60
80
|
|
|
61
81
|
const proxyType = String(proxy.type || "http").toLowerCase();
|
|
62
82
|
if (proxyType === "socks5" && !isSocks5ProxyEnabled()) {
|
|
@@ -135,50 +135,98 @@ export async function GET(
|
|
|
135
135
|
// so that both credential refresh AND usage fetch go through the proxy.
|
|
136
136
|
const proxyInfo = await resolveProxyForConnection(connectionId);
|
|
137
137
|
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
// Helper: perform credential refresh + usage fetch
|
|
139
|
+
const fetchUsageWithContext = async (proxyConfig: unknown) => {
|
|
140
|
+
return runWithProxyContext(proxyConfig, async () => {
|
|
141
|
+
let conn = connection;
|
|
142
|
+
let wasRefreshed = false;
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
// Refresh credentials if needed using executor
|
|
145
|
+
try {
|
|
146
|
+
const result = await refreshAndUpdateCredentials(conn);
|
|
147
|
+
conn = result.connection;
|
|
148
|
+
wasRefreshed = result.refreshed;
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
150
|
+
// Sync to cloud only if token was refreshed
|
|
151
|
+
if (wasRefreshed) {
|
|
152
|
+
await syncToCloudIfEnabled();
|
|
153
|
+
}
|
|
154
|
+
} catch (refreshError) {
|
|
155
|
+
console.error("[Usage API] Credential refresh failed:", refreshError);
|
|
156
|
+
throw refreshError;
|
|
153
157
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
|
|
159
|
+
// Fetch usage from provider API
|
|
160
|
+
const usageData = await getUsageForProvider(conn);
|
|
161
|
+
connection = conn; // propagate updated connection for status sync below
|
|
162
|
+
return { usage: usageData, refreshed: wasRefreshed };
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// Check if a usage result indicates a network-level error (proxy can't relay)
|
|
167
|
+
const isNetworkFailure = (usageResult: any): boolean => {
|
|
168
|
+
const msg = usageResult?.usage?.message;
|
|
169
|
+
if (typeof msg !== "string") return false;
|
|
170
|
+
return (
|
|
171
|
+
msg.includes("fetch failed") ||
|
|
172
|
+
msg.includes("ECONNREFUSED") ||
|
|
173
|
+
msg.includes("ETIMEDOUT") ||
|
|
174
|
+
msg.includes("Proxy unreachable") ||
|
|
175
|
+
msg.includes("UND_ERR_CONNECT_TIMEOUT")
|
|
176
|
+
);
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
let result: any;
|
|
180
|
+
const proxyConfig = proxyInfo?.proxy || null;
|
|
181
|
+
try {
|
|
182
|
+
result = await fetchUsageWithContext(proxyConfig);
|
|
183
|
+
} catch (proxyError: any) {
|
|
184
|
+
const isAuthError =
|
|
185
|
+
proxyError?.message?.includes?.("refresh") || proxyError?.message?.includes?.("Credential");
|
|
186
|
+
|
|
187
|
+
if (isAuthError) {
|
|
188
|
+
return Response.json(
|
|
189
|
+
{ error: `Credential refresh failed: ${proxyError.message}` },
|
|
190
|
+
{ status: 401 }
|
|
191
|
+
);
|
|
157
192
|
}
|
|
158
193
|
|
|
159
|
-
//
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
194
|
+
// If proxy was active and it's a network error (thrown), retry without proxy
|
|
195
|
+
const isThrownNetworkError =
|
|
196
|
+
proxyError?.message === "fetch failed" ||
|
|
197
|
+
proxyError?.code === "PROXY_UNREACHABLE" ||
|
|
198
|
+
proxyError?.code === "UND_ERR_CONNECT_TIMEOUT" ||
|
|
199
|
+
proxyError?.cause?.code === "ECONNREFUSED";
|
|
200
|
+
|
|
201
|
+
if (proxyConfig && isThrownNetworkError) {
|
|
202
|
+
console.warn(
|
|
203
|
+
`[Usage API] Proxy fetch threw for ${connectionId}, retrying without proxy:`,
|
|
204
|
+
proxyError?.message
|
|
205
|
+
);
|
|
206
|
+
result = await fetchUsageWithContext(null);
|
|
207
|
+
} else {
|
|
208
|
+
throw proxyError;
|
|
170
209
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
//
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
{
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// If the usage result contains a network error AND a proxy was active,
|
|
213
|
+
// retry without proxy. getCodexUsage() catches fetch errors internally
|
|
214
|
+
// and returns {message: "Failed to fetch..."} instead of throwing.
|
|
215
|
+
if (proxyConfig && isNetworkFailure(result)) {
|
|
216
|
+
console.warn(
|
|
217
|
+
`[Usage API] Proxy usage returned network error for ${connectionId}, retrying without proxy:`,
|
|
218
|
+
result.usage?.message
|
|
179
219
|
);
|
|
220
|
+
try {
|
|
221
|
+
result = await fetchUsageWithContext(null);
|
|
222
|
+
} catch (directError: any) {
|
|
223
|
+
console.error("[Usage API] Direct fetch also failed:", directError?.message);
|
|
224
|
+
throw directError;
|
|
225
|
+
}
|
|
180
226
|
}
|
|
181
227
|
|
|
228
|
+
const { usage, refreshed } = result;
|
|
229
|
+
|
|
182
230
|
// Populate quota cache for quota-aware account selection
|
|
183
231
|
if (isRecord(usage?.quotas)) {
|
|
184
232
|
setQuotaCache(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omniroute",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.7",
|
|
4
4
|
"description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a={},c={RequestCookies:()=>g,ResponseCookies:()=>y,parseCookie:()=>u,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var l in c)n(a,l,{get:c[l],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function u(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,i]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=u(e),{domain:i,expires:o,httponly:s,maxage:a,path:c,samesite:l,secure:d,partitioned:p,priority:g}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,m,x={name:t,value:decodeURIComponent(r),domain:i,...o&&{expires:new Date(o)},...s&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:c,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...d&&{secure:!0},...g&&{priority:f.includes(m=(m=g).toLowerCase())?m:void 0},...p&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))s.call(e,r)||void 0===r||n(e,r,{get:()=>t[r],enumerable:!(a=i(t,r))||a.enumerable});return e})(n({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of u(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const i=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(i)?i:function(e){if(!e)return[];var t,r,n,i,o,s=[],a=0;function c(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,o=!1;c();)if(","===(r=e.charAt(a))){for(n=a,a+=1,c(),i=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(o=!0,a=i,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!o||a>=e.length)&&s.push(e.substring(t,e.length))}return s}(i)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},785148,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},256770,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let n="omniroute";function i(){try{return r.default.homedir()}catch{return process.cwd()}}function o(e){if("string"!=typeof e)return null;let r=e.trim();return r?t.default.resolve(r):null}function s(){return t.default.join(i(),`.${n}`)}function a(){i();let e=o(process.env.XDG_CONFIG_HOME);return e?t.default.join(e,n):s()}function c({isCloud:e=!1}={}){if(e)return"/tmp";let t=o(process.env.DATA_DIR);return t||a()}function l(e,r){return!!e&&!!r&&t.default.resolve(e)===t.default.resolve(r)}e.s(["APP_NAME",0,n,"getDefaultDataDir",()=>a,"getLegacyDotDataDir",()=>s,"isSamePath",()=>l,"resolveDataDir",()=>c])},439951,e=>{"use strict";var t=e.i(157763);function r(){try{return(0,t.getDbInstance)()}catch{return null}}function n(e){let t=r();if(t)try{t.prepare(`
|
|
2
|
-
INSERT INTO audit_log (action, actor, target, details, ip_address)
|
|
3
|
-
VALUES (?, ?, ?, ?, ?)
|
|
4
|
-
`).run(e.action,e.actor||"system",e.target||null,"object"==typeof e.details?JSON.stringify(e.details):e.details||null,e.ipAddress||null)}catch{}}function i(e={}){let t=r();if(!t)return[];let n=[],o=[];e.action&&(n.push("action = ?"),o.push(e.action)),e.actor&&(n.push("actor = ?"),o.push(e.actor));let s=n.length>0?`WHERE ${n.join(" AND ")}`:"",a=e.limit||100,c=e.offset||0;return t.prepare(`SELECT * FROM audit_log ${s} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...o,a,c).map(e=>({...e,details:e.details?JSON.parse(String(e.details)):null}))}parseInt(process.env.LOG_RETENTION_DAYS||"90",10);let o=new Set,s=new Map,a=!1,c=!1;for(let e of(process.env.NO_LOG_API_KEY_IDS||"").split(",").map(e=>e.trim()).filter(Boolean))o.add(e);function l(e,t){t?o.add(e):o.delete(e),s.set(e,{value:t,timestamp:Date.now()})}function d(e){if(!e)return!1;if(o.has(e))return!0;let t=function(e){let t=r();if(!t||!e||!function(e){if(a)return c;try{c=e.prepare("PRAGMA table_info(api_keys)").all().some(e=>"no_log"===e.name)}catch{c=!1}return a=!0,c}(t))return!1;let n=s.get(e);if(n&&Date.now()-n.timestamp<3e4)return n.value;try{let r=t.prepare("SELECT no_log FROM api_keys WHERE id = ?").get(e),n=!!(r&&1===Number(r.no_log));return s.set(e,{value:n,timestamp:Date.now()}),n}catch{return!1}}(e);return t&&o.add(e),t}e.s(["getAuditLog",()=>i,"isNoLog",()=>d,"logAuditEvent",()=>n,"setNoLog",()=>l])},663370,632802,477468,e=>{"use strict";let t=new TextEncoder,r=new TextDecoder;function n(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}function i(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function o(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))}function s(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:r.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=r.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return s(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function c(e){let r=e;return("string"==typeof r&&(r=t.encode(r)),Uint8Array.prototype.toBase64)?r.toBase64({alphabet:"base64url",omitPadding:!0}):o(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}e.s(["concat",()=>n,"decoder",0,r,"encode",()=>i,"encoder",0,t],632802),e.s(["decodeBase64",()=>s,"encodeBase64",()=>o],477468),e.s(["decode",()=>a,"encode",()=>c],663370)},865466,e=>{"use strict";class t extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class r extends t{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class n extends t{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class i extends t{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class o extends t{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class s extends t{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class a extends t{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class c extends t{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}class l extends t{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}e.s(["JOSEAlgNotAllowed",()=>i,"JOSENotSupported",()=>o,"JWSInvalid",()=>s,"JWSSignatureVerificationFailed",()=>l,"JWTClaimValidationFailed",()=>r,"JWTExpired",()=>n,"JWTInvalid",()=>a])},177278,e=>{"use strict";function t(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function r(...e){let t,n=e.filter(Boolean);if(0===n.length||1===n.length)return!0;for(let e of n){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}e.s(["isDisjoint",()=>r,"isJWK",0,e=>t(e)&&"string"==typeof e.kty,"isObject",()=>t,"isPrivateJWK",0,e=>"oct"!==e.kty&&("AKP"===e.kty&&"string"==typeof e.priv||"string"==typeof e.d),"isPublicJWK",0,e=>"oct"!==e.kty&&void 0===e.d&&void 0===e.priv,"isSecretJWK",0,e=>"oct"===e.kty&&"string"==typeof e.k])},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},250875,e=>{"use strict";var t=e.i(233405),r=e.i(522734);async function n(i=null){let o=i||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let n=function(){try{let e=process.env.SystemRoot||process.env.windir||"C:\\Windows",n=`${e}\\System32\\REG.exe`;if((0,r.existsSync)(n)){let e=(0,t.execFileSync)(n,["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"],{encoding:"utf8",timeout:5e3}),r=e.split("REG_SZ")[1]?.replace(/\r+|\n+|\s+/gi,"")?.toLowerCase();if(r&&r.length>8)return r}}catch{}try{let e=(0,t.execSync)("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf8",timeout:5e3});if(e.includes("IOPlatformUUID")){let t=e.split("IOPlatformUUID")[1]?.split("\n")[0]?.replace(/=|\s+|"/gi,"")?.toLowerCase();if(t&&t.length>8)return t}}catch{}try{for(let e of["/etc/machine-id","/var/lib/dbus/machine-id"])if((0,r.existsSync)(e)){let t=(0,r.readFileSync)(e,"utf8").trim().toLowerCase();if(t.length>8)return t}}catch{}try{let e=(0,t.execSync)("hostname",{encoding:"utf8",timeout:5e3}).trim().toLowerCase();if(e)return e}catch{}try{return e.r(446786).hostname().toLowerCase()}catch{}return"unknown-machine"}();return(await e.A(485685)).createHash("sha256").update(n+o).digest("hex").substring(0,16)}catch(t){console.log("Error getting machine ID:",t);try{return(await e.A(485685)).randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}}}e.s(["getConsistentMachineId",()=>n])},639173,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(186920),n=e.i(151205),i=e.i(125852);let o=process.env.CLOUD_URL||process.env.NEXT_PUBLIC_CLOUD_URL,s=Number(process.env.CLOUD_SYNC_TIMEOUT_MS||12e3);function a(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function c(e){if("string"==typeof e||"number"==typeof e||e instanceof Date){let t=new Date(e).getTime();return Number.isFinite(t)?t:0}return 0}async function l(e,t={},r=s){let n=new AbortController,i=setTimeout(()=>n.abort(),r);try{return await fetch(e,{...t,signal:n.signal})}finally{clearTimeout(i)}}async function d(e,s=null){let a;if(!o)return{error:"NEXT_PUBLIC_CLOUD_URL is not configured"};let c=await (0,t.getProviderConnections)(),p=await (0,r.getModelAliases)(),h=await (0,n.getCombos)(),f=await (0,i.getApiKeys)();try{a=await l(`${o}/sync/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providers:c,modelAliases:p,combos:h,apiKeys:f})})}catch(e){return{error:e?.name==="AbortError"?"Cloud sync timeout":"Cloud sync request failed"}}if(!a.ok){let e=await a.text(),t=e.length>200?e.slice(0,200)+"…":e;return console.log(`Cloud sync failed (${a.status}):`,t),{error:"Cloud sync failed"}}let g=await a.json();g.data&&g.data.providers&&await u(g.data.providers);let y={success:!0,message:"Synced successfully",changes:g.changes};return s&&(y.createdKey=s),y}async function u(e){let r=a(e);for(let e of(await (0,t.getProviderConnections)())){var n;let i=a(e),o="string"==typeof(n=i.id)&&n.trim().length>0?n:null;if(!o)continue;let s=a(r[o]);if(0!==Object.keys(s).length){if(c(s.updatedAt)>c(i.updatedAt)){let e={accessToken:s.accessToken,refreshToken:s.refreshToken,expiresAt:s.expiresAt,expiresIn:s.expiresIn,providerSpecificData:s.providerSpecificData||i.providerSpecificData,testStatus:s.status||"active",lastError:s.lastError,lastErrorAt:s.lastErrorAt,errorCode:s.errorCode,rateLimitedUntil:s.rateLimitedUntil,updatedAt:s.updatedAt};await (0,t.updateProviderConnection)(o,e)}}}}e.s(["CLOUD_URL",()=>o,"fetchWithTimeout",()=>l,"syncToCloud",()=>d])},496727,e=>{"use strict";e.s(["FORMATS",0,{OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor"}])},827957,e=>{"use strict";var t=e.i(663370),r=e.i(293233),n=e.i(177278),i=e.i(865466),o=e.i(632802),s=e.i(48215),a=e.i(252665),c=e.i(18083),l=e.i(913658);class d{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return(0,l.assertNotSet)(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return(0,l.assertNotSet)(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,l){let d,u,p,h;if(!this.#t&&!this.#r)throw new i.JWSInvalid("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,n.isDisjoint)(this.#t,this.#r))throw new i.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let f={...this.#t,...this.#r},g=(0,a.validateCrit)(i.JWSInvalid,new Map([["b64",!0]]),l?.crit,this.#t,f),y=!0;if(g.has("b64")&&"boolean"!=typeof(y=this.#t.b64))throw new i.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:m}=f;if("string"!=typeof m||!m)throw new i.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,s.checkKeyType)(m,e,"sign"),y?(d=(0,t.encode)(this.#e),u=(0,o.encode)(d)):(u=this.#e,d=""),this.#t?(p=(0,t.encode)(JSON.stringify(this.#t)),h=(0,o.encode)(p)):(p="",h=new Uint8Array);let x=(0,o.concat)(h,(0,o.encode)("."),u),E=await (0,c.normalizeKey)(e,m),_=await (0,r.sign)(m,E,x),v={signature:(0,t.encode)(_),payload:d};return this.#r&&(v.header=this.#r),this.#t&&(v.protected=p),v}}class u{#n;constructor(e){this.#n=new d(e)}setProtectedHeader(e){return this.#n.setProtectedHeader(e),this}async sign(e,t){let r=await this.#n.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}var p=e.i(224472);class h{#t;#i;constructor(e={}){this.#i=new p.JWTClaimsBuilder(e)}setIssuer(e){return this.#i.iss=e,this}setSubject(e){return this.#i.sub=e,this}setAudience(e){return this.#i.aud=e,this}setJti(e){return this.#i.jti=e,this}setNotBefore(e){return this.#i.nbf=e,this}setExpirationTime(e){return this.#i.exp=e,this}setIssuedAt(e){return this.#i.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new u(this.#i.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new i.JWTInvalid("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}e.s(["SignJWT",()=>h],827957)},982406,e=>{"use strict";var t=e.i(250875);async function r(){return await (0,t.getConsistentMachineId)()}e.s(["getMachineId",()=>r])},307488,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(385498),i=e.i(548941),o=e.i(982406),s=e.i(312215),a=e.i(6751),c=e.i(639173),l=e.i(444675),d=e.i(25687),u=t([a]);async function p(){try{let e=await (0,o.getMachineId)();if(!e)return;await (0,c.syncToCloud)(e)}catch(e){console.error("[Usage API] Error syncing to cloud:",e)}}async function h(e){let t=(0,a.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let i=await t.refreshCredentials(r,console);if(!i){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let o={updatedAt:new Date().toISOString()};return i.accessToken&&(o.accessToken=i.accessToken),i.refreshToken&&(o.refreshToken=i.refreshToken),i.expiresIn?o.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString():i.expiresAt&&(o.tokenExpiresAt=i.expiresAt),(i.copilotToken||i.copilotTokenExpiresAt)&&(o.providerSpecificData={...e.providerSpecificData,copilotToken:i.copilotToken,copilotTokenExpiresAt:i.copilotTokenExpiresAt}),await (0,n.updateProviderConnection)(e.id,o),{connection:{...e,...o},refreshed:!0}}async function f(e,{params:t}){try{var r;let{connectionId:e}=await t,o=await (0,n.getProviderConnectionById)(e);if(!o)return Response.json({error:"Connection not found"},{status:404});if("oauth"!==o.authType)return Response.json({message:"Usage not available for API key connections"});let a=await (0,i.resolveProxyForConnection)(e),{usage:c,refreshed:u}=await (0,l.runWithProxyContext)(a?.proxy||null,async()=>{let e=o,t=!1;try{let r=await h(e);e=r.connection,(t=r.refreshed)&&await p()}catch(e){throw console.error("[Usage API] Credential refresh failed:",e),e}let r=await (0,s.getUsageForProvider)(e);return o=e,{usage:r,refreshed:t}}).catch(e=>{if(e?.message?.includes?.("refresh")||e?.message?.includes?.("Credential"))return{__authError:!0,message:e.message};throw e});if(c?.__authError)return Response.json({error:`Credential refresh failed: ${c.message}`},{status:401});r=c?.quotas,null===r||"object"!=typeof r||Array.isArray(r)||(0,d.setQuotaCache)(e,o.provider,c.quotas);let f="string"==typeof c?.message?c.message.toLowerCase():"";if((f.includes("token expired")||f.includes("access denied")||f.includes("re-authenticate")||f.includes("unauthorized"))&&"expired"!==o.testStatus)try{await (0,n.updateProviderConnection)(o.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[Usage API] Failed to sync expired status to DB:",e)}return Response.json(c)}catch(e){return console.error("[Usage API] Error fetching usage:",e),console.error("[Usage API] Error stack:",e.stack),Response.json({error:e.message},{status:500})}}[a]=u.then?(await u)():u,e.s(["GET",()=>f]),r()}catch(e){r(e)}},!1),589356,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),o=e.i(996250),s=e.i(759756),a=e.i(561916),c=e.i(174677),l=e.i(869741),d=e.i(316795),u=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),g=e.i(570101),y=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var E=e.i(600220),_=e.i(307488),v=t([_]);[_]=v.then?(await v)():v;let R=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/usage/[connectionId]/route",pathname:"/api/usage/[connectionId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/usage/[connectionId]/route.ts",nextConfigOutput:"standalone",userland:_}),{workAsyncStorage:S,workUnitAsyncStorage:I,serverHooks:C}=R;function A(){return(0,o.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:I})}async function w(e,t,r){R.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/usage/[connectionId]/route";n=n.replace(/\/index$/,"")||"/";let o=await R.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:_,params:v,nextConfig:A,parsedUrl:w,isDraftMode:S,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:D}=o,k=(0,l.normalizeAppPath)(n),N=!!(I.dynamicRoutes[k]||I.routes[O]),U=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,w,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!I.routes[O],t=I.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await U();throw new x.NoFallbackError}}let j=null;!N||R.isDev||S||(j=O,j="/index"===j?"/":j);let H=!0===R.isDev||!N,L=N&&!H;D&&P&&(0,c.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:D});let J=e.method||"GET",M=(0,a.getTracer)(),W=M.getActiveScopeSpan(),$={params:v,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>R.onRequestError(e,t,n,i,C)},sharedContext:{buildId:_}},q=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(q,(0,u.signalFromNodeResponse)(t));try{let o=async e=>R.handle(K,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${J} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${J} ${n}`)}),c=!!(0,s.getRequestMeta)(e,"minimalMode"),l=async s=>{var a,l;let d=async({previousCacheEntry:i})=>{try{if(!c&&T&&b&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(s);e.fetchMetrics=$.renderOpts.fetchMetrics;let a=$.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=$.renderOpts.collectedTags;if(!N)return await (0,f.sendResponse)(q,F,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),t}},u=await R.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:c});if(!N)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});c||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return c&&N||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(q,F,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};W?await l(W):await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${J} ${n}`,kind:a.SpanKind.SERVER,attributes:{"http.method":J,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),N)throw t;return await (0,f.sendResponse)(q,F,new Response(null,{status:500})),null}}e.s(["handler",()=>w,"patchFetch",()=>A,"routeModule",()=>R,"serverHooks",()=>C,"workAsyncStorage",()=>S,"workUnitAsyncStorage",()=>I]),r()}catch(e){r(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))},605589,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localDb_ts_83220848._.js"].map(t=>e.l(t))).then(()=>t(969738)))},901259,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_http2_740a89f0._.js"].map(t=>e.l(t))).then(()=>t(925328)))}];
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__5dcab57b._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,i={},l={RequestCookies:()=>m,ResponseCookies:()=>y,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>u};for(var p in l)s(i,p,{get:l[p],enumerable:!0});function u(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:o,httponly:a,maxage:i,path:l,samesite:p,secure:u,partitioned:c,priority:m}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,f,g={name:t,value:decodeURIComponent(r),domain:n,...o&&{expires:new Date(o)},...a&&{httpOnly:!0},..."string"==typeof i&&{maxAge:Number(i)},path:l,...p&&{sameSite:h.includes(y=(y=p).toLowerCase())?y:void 0},...u&&{secure:!0},...m&&{priority:x.includes(f=(f=m).toLowerCase())?f:void 0},...c&&{partitioned:!0}};let e={};for(let t in g)g[t]&&(e[t]=g[t]);return e}}t.exports=((e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))a.call(e,r)||void 0===r||s(e,r,{get:()=>t[r],enumerable:!(i=n(t,r))||i.enumerable});return e})(s({},"__esModule",{value:!0}),i);var h=["strict","lax","none"],x=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>u(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>u(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,o,a=[],i=0;function l(){for(;i<e.length&&/\s/.test(e.charAt(i));)i+=1;return i<e.length}for(;i<e.length;){for(t=i,o=!1;l();)if(","===(r=e.charAt(i))){for(s=i,i+=1,l(),n=i;i<e.length&&"="!==(r=e.charAt(i))&&";"!==r&&","!==r;)i+=1;i<e.length&&"="===e.charAt(i)?(o=!0,i=n,a.push(e.substring(t,s)),t=i):i=s+1}else i+=1;(!o||i>=e.length)&&a.push(e.substring(t,e.length))}return a}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=u(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(u).join("; ")}}},97793,e=>{"use strict";let t=new Set(["host","connection","content-length","keep-alive","proxy-connection","transfer-encoding","te","trailer","upgrade"].map(e=>e.toLowerCase()));function r(e){return t.has(String(e).trim().toLowerCase())}e.s(["isForbiddenUpstreamHeaderName",()=>r])},254799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},677850,e=>e.a(async(t,r)=>{try{let t=await e.y("zod");e.n(t),r()}catch(e){r(e)}},!0),200392,e=>e.a(async(t,r)=>{try{var s=e.i(677850),n=t([s]);function o(e,t){let r=e.safeParse(t);if(r.success)return{success:!0,data:r.data};let s=Array.isArray(r.error?.issues)?r.error.issues:[];return{success:!1,error:{message:"Invalid request",details:s.map(e=>({field:e.path.join("."),message:e.message}))}}}function a(e){return!1===e.success}[s]=n.then?(await n)():n,s.z.object({password:s.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",()=>a,"validateBody",()=>o]),r()}catch(e){r(e)}},!1),750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},478500,(e,t,r)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},57328,(e,t,r)=>{t.exports=e.x("node:assert",()=>require("node:assert"))},347299,(e,t,r)=>{t.exports=e.x("node:http",()=>require("node:http"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},483324,(e,t,r)=>{t.exports=e.x("node:querystring",()=>require("node:querystring"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},677652,(e,t,r)=>{t.exports=e.x("node:diagnostics_channel",()=>require("node:diagnostics_channel"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},685560,(e,t,r)=>{t.exports=e.x("node:tls",()=>require("node:tls"))},951615,(e,t,r)=>{t.exports=e.x("node:buffer",()=>require("node:buffer"))},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},874096,(e,t,r)=>{t.exports=e.x("node:perf_hooks",()=>require("node:perf_hooks"))},107417,(e,t,r)=>{t.exports=e.x("node:util/types",()=>require("node:util/types"))},925127,(e,t,r)=>{t.exports=e.x("node:worker_threads",()=>require("node:worker_threads"))},246479,(e,t,r)=>{t.exports=e.x("node:http2",()=>require("node:http2"))},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},241293,(e,t,r)=>{t.exports=e.x("node:console",()=>require("node:console"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},26910,(e,t,r)=>{t.exports=e.x("node:timers",()=>require("node:timers"))},495879,(e,t,r)=>{t.exports=e.x("node:dns",()=>require("node:dns"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},858235,e=>{"use strict";var t=e.i(254799);function r(e){let r=(0,t.randomUUID)(),s=e.type||(e.status>=500?"server_error":404===e.status?"not_found":409===e.status?"conflict":"invalid_request");return Response.json({error:{message:e.message,type:s,details:e.details},requestId:r},{status:e.status})}function s(e,t="Unexpected server error"){return r({status:Number(e?.status)||500,message:"string"==typeof e?.message?e.message:t,type:e?.type,details:e?.details})}e.s(["createErrorResponse",()=>r,"createErrorResponseFromUnknown",()=>s])},636686,e=>e.a(async(t,r)=>{try{var s=e.i(936689),n=e.i(273599),o=e.i(676088),a=e.i(200392),i=e.i(858235),l=t([o,a]);[o,a]=l.then?(await l)():l;let d=new Set(["http","https"]);function p(e,t){return e instanceof Error&&e.message?e.message:t}async function u(e){let t;try{t=await e.json()}catch{return(0,i.createErrorResponse)({status:400,message:"Invalid JSON body",type:"invalid_request"})}try{let e,r=(0,a.validateBody)(o.testProxySchema,t);if((0,a.isValidationFailure)(r))return(0,i.createErrorResponse)({status:400,message:r.error.message,details:r.error.details,type:"invalid_request"});let{proxy:l}=r.data,u=String(l.type||"http").toLowerCase();if("socks5"===u&&!(0,n.isSocks5ProxyEnabled)())return(0,i.createErrorResponse)({status:400,message:"SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)",type:"invalid_request"});if(u.startsWith("socks")&&"socks5"!==u||!((0,n.isSocks5ProxyEnabled)()?new Set([...d,"socks5"]):d).has(u))return(0,i.createErrorResponse)({status:400,message:`proxy.type must be ${(0,n.isSocks5ProxyEnabled)()?"http, https, or socks5":"http or https"}`,type:"invalid_request"});try{let t=(0,n.proxyConfigToUrl)({type:u,host:l.host,port:l.port,username:l.username||"",password:l.password||""},{allowSocks5:(0,n.isSocks5ProxyEnabled)()});if(!t)return(0,i.createErrorResponse)({status:400,message:"Invalid proxy configuration",type:"invalid_request"});e=t}catch(e){return(0,i.createErrorResponse)({status:400,message:p(e,"Invalid proxy configuration"),type:"invalid_request"})}let c=(0,n.proxyUrlForLogs)(e),h=Date.now(),x=new AbortController,m=setTimeout(()=>x.abort(),1e4),y=(0,n.createProxyDispatcher)(e);try{let e,t=await (0,s.request)("https://api.ipify.org?format=json",{method:"GET",dispatcher:y,signal:x.signal,headersTimeout:1e4,bodyTimeout:1e4}),r=await t.body.text();try{let t=JSON.parse(r);e=t&&"object"==typeof t?t:{ip:String(t)}}catch{e={ip:r.trim()}}return Response.json({success:!0,publicIp:e.ip||null,latencyMs:Date.now()-h,proxyUrl:c})}catch(e){return Response.json({success:!1,error:e instanceof Error&&"AbortError"===e.name?"Connection timeout (10s)":p(e,"Connection failed"),latencyMs:Date.now()-h,proxyUrl:c})}finally{clearTimeout(m)}}catch(e){return(0,i.createErrorResponseFromUnknown)(e,"Unexpected server error")}}e.s(["POST",()=>u]),r()}catch(e){r(e)}},!1),797951,e=>e.a(async(t,r)=>{try{var s=e.i(747909),n=e.i(174017),o=e.i(996250),a=e.i(759756),i=e.i(561916),l=e.i(174677),p=e.i(869741),u=e.i(316795),d=e.i(487718),c=e.i(995169),h=e.i(47587),x=e.i(666012),m=e.i(570101),y=e.i(626937),f=e.i(10372),g=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(636686),R=t([w]);[w]=R.then?(await R)():R;let _=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/settings/proxy/test/route",pathname:"/api/settings/proxy/test",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/settings/proxy/test/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:q,workUnitAsyncStorage:C,serverHooks:A}=_;function b(){return(0,o.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:C})}async function E(e,t,r){_.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/settings/proxy/test/route";s=s.replace(/\/index$/,"")||"/";let o=await _.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:b,parsedUrl:E,isDraftMode:q,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:j}=o,N=(0,p.normalizeAppPath)(s),T=!!(C.dynamicRoutes[N]||C.routes[O]),U=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(T&&!q){let e=!!C.routes[O],t=C.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!T||_.isDev||q||(D=O,D="/index"===D?"/":D);let I=!0===_.isDev||!T,$=T&&!I;j&&P&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:P,serverActionsManifest:j});let H=e.method||"GET",M=(0,i.getTracer)(),F=M.getActiveScopeSpan(),L={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:I,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>_.onRequestError(e,t,s,n,A)},sharedContext:{buildId:w}},K=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let o=async e=>_.handle(z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${s}`)}),l=!!(0,a.getRequestMeta)(e,"minimalMode"),p=async a=>{var i,p;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&k&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let p=L.renderOpts.collectedTags;if(!T)return await (0,x.sendResponse)(K,B,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(s.headers);p&&(t[f.NEXT_CACHE_TAGS_HEADER]=p),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await _.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,A),t}},d=await _.handleResponse({req:e,nextConfig:b,cacheKey:D,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(p=d.value)?void 0:p.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),q&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return l&&T||c.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,y.getCacheControlHeader)(d.cacheControl)),await (0,x.sendResponse)(K,B,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};F?await p(F):await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${s}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},p))}catch(t){if(t instanceof g.NoFallbackError||await _.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,A),T)throw t;return await (0,x.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>b,"routeModule",()=>_,"serverHooks",()=>A,"workAsyncStorage",()=>q,"workUnitAsyncStorage",()=>C]),r()}catch(e){r(e)}},!1)];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__643f87ad._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,a={},p={RequestCookies:()=>f,ResponseCookies:()=>x,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>u};for(var l in p)s(a,l,{get:p[l],enumerable:!0});function u(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:i,httponly:o,maxage:a,path:p,samesite:l,secure:u,partitioned:c,priority:f}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var x,g,y={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...o&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:p,...l&&{sameSite:h.includes(x=(x=l).toLowerCase())?x:void 0},...u&&{secure:!0},...f&&{priority:m.includes(g=(g=f).toLowerCase())?g:void 0},...c&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of i(t))o.call(e,r)||void 0===r||s(e,r,{get:()=>t[r],enumerable:!(a=n(t,r))||a.enumerable});return e})(s({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],m=["low","medium","high"],f=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>u(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>u(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},x=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,o=[],a=0;function p(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,i=!1;p();)if(","===(r=e.charAt(a))){for(s=a,a+=1,p(),n=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(i=!0,a=n,o.push(e.substring(t,s)),t=a):a=s+1}else a+=1;(!i||a>=e.length)&&o.push(e.substring(t,e.length))}return o}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=u(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(u).join("; ")}}}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__765c4417._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[677850,e=>e.a(async(t,r)=>{try{let t=await e.y("zod");e.n(t),r()}catch(e){r(e)}},!0),200392,e=>e.a(async(t,r)=>{try{var a=e.i(677850),n=t([a]);function s(e,t){let r=e.safeParse(t);if(r.success)return{success:!0,data:r.data};let a=Array.isArray(r.error?.issues)?r.error.issues:[];return{success:!1,error:{message:"Invalid request",details:a.map(e=>({field:e.path.join("."),message:e.message}))}}}function i(e){return!1===e.success}[a]=n.then?(await n)():n,a.z.object({password:a.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",()=>i,"validateBody",()=>s]),r()}catch(e){r(e)}},!1),918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>m,ResponseCookies:()=>g,parseCookie:()=>p,parseSetCookie:()=>c,stringifyCookie:()=>d};for(var u in l)a(o,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),a=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?a:`${a}; ${r.join("; ")}`}function p(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[a,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(a,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...a]=p(e),{domain:n,expires:s,httponly:i,maxage:o,path:l,samesite:u,secure:d,partitioned:c,priority:m}=Object.fromEntries(a.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,x,y={name:t,value:decodeURIComponent(r),domain:n,...s&&{expires:new Date(s)},...i&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...u&&{sameSite:h.includes(g=(g=u).toLowerCase())?g:void 0},...d&&{secure:!0},...m&&{priority:f.includes(x=(x=m).toLowerCase())?x:void 0},...c&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of s(t))i.call(e,r)||void 0===r||a(e,r,{get:()=>t[r],enumerable:!(o=n(t,r))||o.enumerable});return e})(a({},"__esModule",{value:!0}),o);var h=["strict","lax","none"],f=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of p(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let a="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===a).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,a=this._parsed;return a.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(a).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,r,a;this._parsed=new Map,this._headers=e;const n=null!=(a=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?a:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,a,n,s,i=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,s=!1;l();)if(","===(r=e.charAt(o))){for(a=o,o+=1,l(),n=o;o<e.length&&"="!==(r=e.charAt(o))&&";"!==r&&","!==r;)o+=1;o<e.length&&"="===e.charAt(o)?(s=!0,o=n,i.push(e.substring(t,a)),t=o):o=a+1}else o+=1;(!s||o>=e.length)&&i.push(e.substring(t,e.length))}return i}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let a="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===a)}has(e){return this._parsed.has(e)}set(...e){let[t,r,a]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...a})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},97793,e=>{"use strict";let t=new Set(["host","connection","content-length","keep-alive","proxy-connection","transfer-encoding","te","trailer","upgrade"].map(e=>e.toLowerCase()));function r(e){return t.has(String(e).trim().toLowerCase())}e.s(["isForbiddenUpstreamHeaderName",()=>r])},768630,e=>e.a(async(t,r)=>{try{var a=e.i(89171),n=e.i(522734),s=e.i(814747),i=e.i(676088),o=e.i(200392),l=t([i,o]);async function u(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({success:!1,error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,o.validateBody)(i.translatorSaveSchema,t);if((0,o.isValidationFailure)(e))return a.NextResponse.json({success:!1,error:e.error},{status:400});let{file:r,content:l}=e.data;if(!["1_req_client.json","2_req_source.json","3_req_openai.json","4_req_target.json","5_res_provider.txt"].includes(r))return a.NextResponse.json({success:!1,error:"Invalid file name"},{status:400});let u=s.default.join(process.cwd(),"logs","translator");n.default.existsSync(u)||n.default.mkdirSync(u,{recursive:!0});let d=s.default.join(u,r);return n.default.writeFileSync(d,l,"utf-8"),a.NextResponse.json({success:!0})}catch(e){return console.error("Error saving file:",e),a.NextResponse.json({success:!1,error:"Failed to save file"},{status:500})}}[i,o]=l.then?(await l)():l,e.s(["POST",()=>u]),r()}catch(e){r(e)}},!1),676527,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),p=e.i(487718),c=e.i(995169),h=e.i(47587),f=e.i(666012),m=e.i(570101),g=e.i(626937),x=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),R=e.i(768630),w=t([R]);[R]=w.then?(await w)():w;let A=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/translator/save/route",pathname:"/api/translator/save",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/translator/save/route.ts",nextConfigOutput:"standalone",userland:R}),{workAsyncStorage:C,workUnitAsyncStorage:E,serverHooks:S}=A;function _(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:E})}async function b(e,t,r){A.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/translator/save/route";a=a.replace(/\/index$/,"")||"/";let s=await A.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:w,nextConfig:_,parsedUrl:b,isDraftMode:C,prerenderManifest:E,routerServerContext:S,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,resolvedPathname:k,clientReferenceManifest:N,serverActionsManifest:P}=s,q=(0,u.normalizeAppPath)(a),T=!!(E.dynamicRoutes[q]||E.routes[k]),I=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(T&&!C){let e=!!E.routes[k],t=E.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(_.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let $=null;!T||A.isDev||C||($=k,$="/index"===$?"/":$);let U=!0===A.isDev||!T,D=T&&!U;P&&N&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:N,serverActionsManifest:P});let H=e.method||"GET",M=(0,o.getTracer)(),F=M.getActiveScopeSpan(),L={params:w,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:_.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,S)},sharedContext:{buildId:R}},B=new d.NodeNextRequest(e),K=new d.NodeNextResponse(t),z=p.NextRequestAdapter.fromNodeNextRequest(B,(0,p.signalFromNodeResponse)(t));try{let s=async e=>A.handle(z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,i.getRequestMeta)(e,"minimalMode"),u=async i=>{var o,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&j&&O&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(i);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let u=L.renderOpts.collectedTags;if(!T)return await (0,f.sendResponse)(B,K,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,S),t}},p=await A.handleResponse({req:e,nextConfig:_,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!T)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(u=p.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",j?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(p.value.headers);return l&&T||c.delete(x.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(B,K,new Response(p.value.body,{headers:c,status:p.value.status||200})),null};F?await u(F):await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof y.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,S),T)throw t;return await (0,f.sendResponse)(B,K,new Response(null,{status:500})),null}}e.s(["handler",()=>b,"patchFetch",()=>_,"routeModule",()=>A,"serverHooks",()=>S,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>E]),r()}catch(e){r(e)}},!1)];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__7afe1e49._.js.map
|