one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 7.8 kB
Source Map (JSON)
{"version":3,"file":"createDevHandleRequest.js","names":[],"sources":["esm/createDevHandleRequest.js"],"sourcesContent":["import { LOADER_JS_POSTFIX_UNCACHED } from \"./constants\";\nimport {\n compileManifest,\n getURLfromRequestURL,\n isPageRequestMethod,\n isStaticAssetRequestPath,\n resolveAPIRoute,\n resolveLoaderRoute,\n resolvePageRoute,\n runMiddlewares\n} from \"./createHandleRequest\";\nimport { getPathFromLoaderPath } from \"./utils/cleanUrl\";\nimport { getManifest } from \"./vite/getManifest\";\nconst debugRouter = process.env.ONE_DEBUG_ROUTER;\nfunction createHandleRequest(handlers, {\n routerRoot,\n ignoredRouteFiles,\n routePaths\n}) {\n const manifest = getManifest({ routerRoot, ignoredRouteFiles, routePaths });\n if (!manifest) {\n throw new Error(`No routes manifest`);\n }\n const compiledManifest = compileManifest(manifest);\n return {\n manifest,\n handler: async function handleRequest(request) {\n const url = getURLfromRequestURL(request);\n const { pathname } = url;\n if (pathname === \"/__vxrnhmr\" || pathname.startsWith(\"/@vite/\") || pathname.startsWith(\"/@fs/\") || pathname.startsWith(\"/@id/\") || pathname.startsWith(\"/node_modules/\") || pathname.startsWith(\"/debugger-frontend\") || pathname.startsWith(\"/inspector\")) {\n return null;\n }\n const looksLikeStaticFile = isStaticAssetRequestPath(pathname);\n if (handlers.handleAPI) {\n const apiRoute = compiledManifest.apiRoutes.find((route) => {\n return route.compiledRegex.test(pathname);\n });\n if (apiRoute) {\n if (debugRouter) {\n console.info(`[one] \\u26A1 ${pathname} \\u2192 matched API route: ${apiRoute.page}`);\n }\n return await resolveAPIRoute(handlers, request, url, apiRoute);\n }\n }\n if (!isPageRequestMethod(request.method)) {\n return null;\n }\n if (handlers.handleLoader) {\n const isClientRequestingNewRoute = pathname.endsWith(LOADER_JS_POSTFIX_UNCACHED);\n if (isClientRequestingNewRoute) {\n const platformParam = url.searchParams.get(\"platform\");\n const isNativePlatform = platformParam === \"ios\" || platformParam === \"android\" || platformParam === \"native\";\n if (isNativePlatform && handlers.handleStaticFile) {\n const nativeLoaderPath = pathname.replace(/\\.js$/, \".native.js\");\n const staticResponse = await handlers.handleStaticFile(nativeLoaderPath);\n if (staticResponse) {\n return staticResponse;\n }\n }\n const originalUrl = getPathFromLoaderPath(pathname);\n for (const route of compiledManifest.pageRoutes) {\n if (route.file === \"\") {\n continue;\n }\n const finalUrl = new URL(originalUrl, url.origin);\n finalUrl.search = url.search;\n if (!route.compiledRegex.test(finalUrl.pathname)) {\n continue;\n }\n if (route.hasLoader === false) {\n const emptyBody2 = isNativePlatform ? \"exports.loader=function(){return undefined}\" : \"export function loader() { return undefined }\";\n return new Response(emptyBody2, {\n headers: { \"Content-Type\": \"text/javascript\" }\n });\n }\n const cleanedRequest = new Request(finalUrl, request);\n return resolveLoaderRoute(handlers, cleanedRequest, finalUrl, route);\n }\n const emptyBody = isNativePlatform ? \"exports.loader=function(){return{}}\" : \"export {}\";\n return new Response(emptyBody, {\n headers: { \"Content-Type\": \"text/javascript\" }\n });\n }\n }\n if (handlers.handlePage) {\n for (const route of compiledManifest.pageRoutes) {\n if (!route.compiledRegex.test(pathname)) {\n continue;\n }\n const isDynamicRoute = Object.keys(route.routeKeys).length > 0;\n const isNotFoundRoute = route.page.endsWith(\"/+not-found\");\n if (looksLikeStaticFile && isNotFoundRoute) {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${pathname} \\u2192 bare 404 for static probe on ${route.page}`\n );\n }\n if (!route.middlewares?.length) {\n return null;\n }\n return await runMiddlewares(handlers, request, route, async () => {\n return new Response(null, {\n status: 404,\n headers: { \"Content-Type\": \"text/plain\" }\n });\n });\n }\n if (looksLikeStaticFile && isDynamicRoute) {\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${pathname} \\u2192 skipping dynamic route ${route.page} for static asset`\n );\n }\n continue;\n }\n if (debugRouter) {\n console.info(\n `[one] \\u26A1 ${pathname} \\u2192 matched page route: ${route.page} (${route.type})`\n );\n }\n return resolvePageRoute(handlers, request, url, route);\n }\n }\n return null;\n }\n };\n}\nexport {\n createHandleRequest\n};\n//# sourceMappingURL=createDevHandleRequest.js.map\n"],"mappings":"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"}