@farm.js/core 0.1.0-beta.21 → 0.1.0-beta.22
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/dist/after.d.mts +25 -0
- package/dist/after.d.ts +25 -0
- package/dist/agent-runtime.d.mts +96 -0
- package/dist/agent-runtime.d.ts +96 -0
- package/dist/api/route-manager.d.mts +68 -0
- package/dist/api/route-manager.d.ts +68 -0
- package/dist/api/runtime.d.mts +3 -0
- package/dist/api/runtime.d.ts +3 -0
- package/dist/api.cjs +22 -19
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.mts +50 -0
- package/dist/api.d.ts +50 -0
- package/dist/api.mjs +2 -1
- package/dist/app-BB8GCH1g.d.ts +306 -0
- package/dist/app-DwsTpyNZ.d.mts +306 -0
- package/dist/app-markdown.d.mts +24 -0
- package/dist/app-markdown.d.ts +24 -0
- package/dist/cache.d.mts +192 -0
- package/dist/cache.d.ts +192 -0
- package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
- package/dist/chunk-2PEJGY5V.mjs.map +1 -0
- package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
- package/dist/{chunk-I3UWA2P2.mjs → chunk-DAUR3WUZ.mjs} +2 -2
- package/dist/{chunk-I3UWA2P2.mjs.map → chunk-DAUR3WUZ.mjs.map} +1 -1
- package/dist/chunk-GIELMNBG.mjs +15 -0
- package/dist/chunk-GIELMNBG.mjs.map +1 -0
- package/dist/{chunk-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
- package/dist/chunk-ICTGDDV4.mjs.map +1 -0
- package/dist/{chunk-FKKM7HVF.mjs → chunk-XBKXKJX5.mjs} +30 -35
- package/dist/chunk-XBKXKJX5.mjs.map +1 -0
- package/dist/{chunk-VIC7NJ77.mjs → chunk-ZP73P4VR.mjs} +2 -2
- package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
- package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
- package/dist/client-BT1mFQas.d.mts +447 -0
- package/dist/client-Nn0q4eO4.d.ts +447 -0
- package/dist/client-cache-CIlyBlmx.d.ts +6 -0
- package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
- package/dist/client-plugins-CbRum1fj.d.ts +2088 -0
- package/dist/client-plugins-QQntVkrv.d.mts +2088 -0
- package/dist/client-plugins.d.mts +24 -0
- package/dist/client-plugins.d.ts +24 -0
- package/dist/client.d.mts +452 -0
- package/dist/client.d.ts +452 -0
- package/dist/config.d.mts +31 -0
- package/dist/config.d.ts +31 -0
- package/dist/cron.d.mts +78 -0
- package/dist/cron.d.ts +78 -0
- package/dist/deferred.d.mts +42 -0
- package/dist/deferred.d.ts +42 -0
- package/dist/deployment.d.mts +36 -0
- package/dist/deployment.d.ts +36 -0
- package/dist/docs.d.mts +80 -0
- package/dist/docs.d.ts +80 -0
- package/dist/env-types.d.mts +12 -0
- package/dist/env-types.d.ts +12 -0
- package/dist/env.d.mts +45 -0
- package/dist/env.d.ts +45 -0
- package/dist/environment/vite.d.mts +22 -0
- package/dist/environment/vite.d.ts +22 -0
- package/dist/environment.d.mts +18 -0
- package/dist/environment.d.ts +18 -0
- package/dist/font.d.mts +95 -0
- package/dist/font.d.ts +95 -0
- package/dist/headers.d.mts +22 -0
- package/dist/headers.d.ts +22 -0
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/index.d.mts +20 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/image/server.d.mts +37 -0
- package/dist/image/server.d.ts +37 -0
- package/dist/image/sharp.d.mts +7 -0
- package/dist/image/sharp.d.ts +7 -0
- package/dist/image-config-Duob7wER.d.mts +50 -0
- package/dist/image-config-Duob7wER.d.ts +50 -0
- package/dist/image.d.mts +39 -0
- package/dist/image.d.ts +39 -0
- package/dist/index.cjs +66 -69
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +477 -0
- package/dist/index.d.ts +477 -0
- package/dist/index.mjs +7 -6
- package/dist/index.mjs.map +1 -1
- package/dist/integration-api-CHT2OKAf.d.mts +93 -0
- package/dist/integration-api-CHT2OKAf.d.ts +93 -0
- package/dist/integrations.d.mts +24 -0
- package/dist/integrations.d.ts +24 -0
- package/dist/internal/build-runtime.cjs +50 -50
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +41 -0
- package/dist/internal/build-runtime.d.ts +41 -0
- package/dist/internal/build-runtime.mjs +5 -4
- package/dist/internal/client-runtime.d.mts +17 -0
- package/dist/internal/client-runtime.d.ts +17 -0
- package/dist/internal/config-runtime.d.mts +41 -0
- package/dist/internal/config-runtime.d.ts +41 -0
- package/dist/internal/metadata-image-runtime.d.mts +25 -0
- package/dist/internal/metadata-image-runtime.d.ts +25 -0
- package/dist/internal/production-node-env.d.mts +12 -0
- package/dist/internal/production-node-env.d.ts +12 -0
- package/dist/internal/production-runtime.d.mts +66 -0
- package/dist/internal/production-runtime.d.ts +66 -0
- package/dist/island-CfGru1MO.d.mts +9 -0
- package/dist/island-CfGru1MO.d.ts +9 -0
- package/dist/markdown.d.mts +60 -0
- package/dist/markdown.d.ts +60 -0
- package/dist/metadata-B5jBJHq1.d.ts +22 -0
- package/dist/metadata-BxOJ4FJl.d.mts +22 -0
- package/dist/middleware.cjs +17 -17
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.mts +171 -0
- package/dist/middleware.d.ts +171 -0
- package/dist/middleware.mjs +3 -2
- package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
- package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
- package/dist/navigation.d.mts +14 -0
- package/dist/navigation.d.ts +14 -0
- package/dist/observability.d.mts +335 -0
- package/dist/observability.d.ts +335 -0
- package/dist/params-BALtrRim.d.ts +15 -0
- package/dist/params-ry-lxqmy.d.mts +15 -0
- package/dist/plugin-BJDf43dc.d.mts +165 -0
- package/dist/plugin-BJDf43dc.d.ts +165 -0
- package/dist/plugin.cjs +42 -48
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +24 -0
- package/dist/plugin.d.ts +24 -0
- package/dist/plugin.mjs +4 -3
- package/dist/production-runtime-Bxua86uR.d.mts +81 -0
- package/dist/production-runtime-CZqXjRVi.d.ts +81 -0
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/parsers.d.mts +25 -0
- package/dist/query/parsers.d.ts +25 -0
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/request-7V0GaZK_.d.mts +6 -0
- package/dist/request-B5XYBv5a.d.ts +6 -0
- package/dist/request.d.mts +25 -0
- package/dist/request.d.ts +25 -0
- package/dist/resolver-DJqjLMg_.d.mts +14 -0
- package/dist/resolver-IH4RmPEl.d.ts +14 -0
- package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
- package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/routes.d.mts +226 -0
- package/dist/routes.d.ts +226 -0
- package/dist/runtime-Bpp-c28k.d.ts +231 -0
- package/dist/runtime-Cxpq6xZN.d.mts +27 -0
- package/dist/runtime-Q3u74Nbq.d.mts +231 -0
- package/dist/runtime-bv63eUiO.d.ts +27 -0
- package/dist/server-action-security.d.mts +45 -0
- package/dist/server-action-security.d.ts +45 -0
- package/dist/server-fn-client.d.mts +33 -0
- package/dist/server-fn-client.d.ts +33 -0
- package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
- package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
- package/dist/server-fn.d.mts +121 -0
- package/dist/server-fn.d.ts +121 -0
- package/dist/server-plugins.d.mts +57 -0
- package/dist/server-plugins.d.ts +57 -0
- package/dist/server-query-client.d.mts +51 -0
- package/dist/server-query-client.d.ts +51 -0
- package/dist/server-query.d.mts +37 -0
- package/dist/server-query.d.ts +37 -0
- package/dist/server.cjs +45 -67
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +51 -0
- package/dist/server.d.ts +51 -0
- package/dist/server.mjs +8 -22
- package/dist/server.mjs.map +1 -1
- package/dist/storage.d.mts +52 -0
- package/dist/storage.d.ts +52 -0
- package/dist/testing.d.mts +103 -0
- package/dist/testing.d.ts +103 -0
- package/dist/transport-BmbGTXA5.d.mts +49 -0
- package/dist/transport-BmbGTXA5.d.ts +49 -0
- package/dist/types-BMxWr97v.d.mts +81 -0
- package/dist/types-BMxWr97v.d.ts +81 -0
- package/dist/types-D1A6-XvH.d.mts +73 -0
- package/dist/types-D1A6-XvH.d.ts +73 -0
- package/dist/types-DTzm4TCl.d.mts +78 -0
- package/dist/types-DTzm4TCl.d.ts +78 -0
- package/dist/utils-s9pN0Yep.d.mts +23 -0
- package/dist/utils-xTFxzu47.d.ts +23 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +44 -50
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +24 -0
- package/dist/vite.d.ts +24 -0
- package/dist/vite.mjs +4 -3
- package/dist/workflows-CusFV6mn.d.mts +153 -0
- package/dist/workflows-CusFV6mn.d.ts +153 -0
- package/dist/workflows.d.mts +1 -0
- package/dist/workflows.d.ts +1 -0
- package/package.json +1 -1
- package/dist/chunk-4EATUJFO.mjs.map +0 -1
- package/dist/chunk-FKKM7HVF.mjs.map +0 -1
- package/dist/chunk-MIUW47JX.mjs.map +0 -1
- /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
- /package/dist/{chunk-VIC7NJ77.mjs.map → chunk-ZP73P4VR.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/vite-plugin.ts"],"sourcesContent":["/**\n * Farm.js API Routes Vite Plugin\n *\n * Standalone API route support that works with any Vite setup.\n * Discovers and handles route.ts files in the api directory.\n * Also supports root routes.ts for custom route definitions.\n *\n * @example\n * ```ts\n * import { farmApiPlugin } from '@farm.js/core'\n *\n * export default defineConfig({\n * plugins: [farmApiPlugin({ srcDir: 'src' })],\n * })\n * ```\n */\n\nimport type { Plugin, ViteDevServer } from \"vite\";\nimport { API_ROUTE_METHODS, invokeAPIRouteEndpoint, matchAPIRoute } from \"./route-manager\";\nimport { sendWebResponse } from \"../server/response\";\nimport { _withAfterNodeMiddleware } from \"../after\";\nimport { getProgrammaticRouteManifest, isProgrammaticRoutesFileName } from \"../routes\";\nimport { findProgrammaticRouteFilesInDir } from \"../routes.server\";\nimport { toViteModuleId } from \"../utils\";\nimport {\n createFarmRequestBodyErrorResponse,\n readNodeRequestBody,\n resolveFarmServerConfig,\n} from \"../server-http\";\nimport { createCliColors } from \"../cli-colors\";\n\nexport interface FarmApiPluginOptions {\n /** Source directory containing the api folder (default: 'src') */\n srcDir?: string;\n /** Enable debug logging */\n debug?: boolean;\n /** Maximum request body size, for example `\"10mb\"`. */\n bodySizeLimit?: number | string;\n}\n\nexport interface ApiRoute {\n path: string;\n filePath: string;\n methods: string[];\n endpoints: Record<string, any>;\n}\n\n/**\n * Farm.js API Routes Vite Plugin\n */\nexport function farmApiPlugin(options: FarmApiPluginOptions = {}): Plugin {\n const srcDir = options.srcDir ?? \"src\";\n const debug = options.debug ?? false;\n const bodySizeLimit = resolveFarmServerConfig({\n bodySizeLimit: options.bodySizeLimit,\n }).bodySizeLimit;\n\n // API routes cache\n let apiRoutesCache: Map<string, ApiRoute> = new Map();\n let apiRouterHandler: ((req: Request) => Promise<Response>) | null = null;\n let discoveryComplete = false;\n let discoveryPromise: Promise<void> | null = null;\n\n const log = (_message: string) => {};\n const logResponse = (method: string, urlPath: string, status: number, duration: number) => {\n const pc = createCliColors();\n let statusColor = pc.green;\n if (status >= 500) statusColor = pc.red;\n else if (status >= 400) statusColor = pc.yellow;\n else if (status >= 300) statusColor = pc.cyan;\n\n const logMsg = [\n pc.dim(\"[\") + pc.bold(pc.blue(\"FARM\")) + pc.dim(\"]\"),\n pc.dim(\"[\") + pc.bold(pc.cyan(\"API\")) + pc.dim(\"]\"),\n pc.dim(\"[\") + pc.bold(pc.white(method.padEnd(3))) + pc.dim(\"]\"),\n pc.gray(urlPath),\n pc.dim(\"-\"),\n statusColor(status.toString()),\n pc.dim(`(${duration}ms)`),\n ].join(\" \");\n console.log(logMsg);\n };\n\n const addEndpoint = (\n routePath: string,\n filePath: string,\n method: string,\n endpoint: any,\n ): void => {\n const normalizedMethod = method.toUpperCase();\n const existing = apiRoutesCache.get(routePath);\n\n if (existing) {\n if (!existing.methods.includes(normalizedMethod)) {\n existing.methods.push(normalizedMethod);\n }\n existing.endpoints[normalizedMethod] = endpoint;\n return;\n }\n\n apiRoutesCache.set(routePath, {\n path: routePath,\n filePath,\n methods: [normalizedMethod],\n endpoints: { [normalizedMethod]: endpoint },\n });\n };\n\n // Create API router handler\n const createRouter = async (): Promise<void> => {\n const totalEndpoints = Array.from(apiRoutesCache.values()).reduce(\n (sum, route) => sum + route.methods.length,\n 0,\n );\n\n apiRouterHandler = null;\n\n if (totalEndpoints > 0) {\n apiRouterHandler = async (request: Request): Promise<Response> => {\n const url = new URL(request.url);\n const method = request.method.toUpperCase();\n const pathname = url.pathname;\n\n const match = matchAPIRoute(apiRoutesCache, pathname);\n if (!match) {\n return new Response(JSON.stringify({ error: \"Not Found\" }), {\n status: 404,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n\n const { route, params } = match;\n const endpoint = route.endpoints[method];\n if (!endpoint) {\n return new Response(JSON.stringify({ error: \"Method Not Allowed\" }), {\n status: 405,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n\n try {\n return await invokeAPIRouteEndpoint(endpoint, request, params, bodySizeLimit);\n } catch (error: any) {\n return new Response(JSON.stringify({ error: error.message || \"Internal Server Error\" }), {\n status: 500,\n headers: { \"Content-Type\": \"application/json\" },\n });\n }\n };\n\n log(`API router created with ${totalEndpoints} endpoints`);\n }\n };\n\n return {\n name: \"@farm.js/core:api\",\n enforce: \"pre\",\n\n configureServer(server: ViteDevServer) {\n // Discover API routes in /api directory\n const discoverFileRoutes = async (apiDir: string): Promise<void> => {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n\n if (!fs.existsSync(apiDir)) {\n log(\"No api directory found\");\n return;\n }\n\n const findRouteFiles = (dir: string): string[] => {\n const files: string[] = [];\n if (!fs.existsSync(dir)) return files;\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n files.push(...findRouteFiles(fullPath));\n } else if (\n entry.name === \"route.ts\" ||\n entry.name === \"route.tsx\" ||\n entry.name === \"route.js\"\n ) {\n files.push(fullPath);\n }\n }\n return files;\n };\n\n const routeFiles = findRouteFiles(apiDir);\n apiRoutesCache.clear();\n\n for (const filePath of routeFiles) {\n try {\n const relativePath = path.relative(apiDir, path.dirname(filePath));\n const routePath =\n \"/api/\" + (relativePath === \".\" ? \"\" : relativePath.replace(/\\\\/g, \"/\"));\n\n const routeModule = await server.ssrLoadModule(filePath);\n const endpoints: Record<string, any> = {};\n const availableMethods: string[] = [];\n\n for (const method of API_ROUTE_METHODS) {\n if (routeModule[method]) {\n availableMethods.push(method);\n endpoints[method] = routeModule[method];\n }\n }\n\n if (availableMethods.length > 0) {\n apiRoutesCache.set(routePath, {\n path: routePath,\n filePath,\n methods: availableMethods,\n endpoints,\n });\n log(`API route discovered: ${availableMethods.join(\", \")} ${routePath}`);\n }\n } catch (e: any) {\n log(`API route load failed at ${filePath}: ${e.message}`);\n }\n }\n };\n\n // Discover routes from root routes.ts file\n const discoverRootRoutes = async (): Promise<void> => {\n const fs = await import(\"fs\");\n const path = await import(\"path\");\n\n const routesFiles = [\n path.join(server.config.root, srcDir, \"routes.ts\"),\n path.join(server.config.root, srcDir, \"routes.tsx\"),\n path.join(server.config.root, srcDir, \"routes.js\"),\n ];\n\n for (const routesFile of routesFiles) {\n if (fs.existsSync(routesFile)) {\n try {\n const routesModule = await server.ssrLoadModule(routesFile);\n\n for (const [exportName, exportValue] of Object.entries(routesModule)) {\n const endpoint = exportValue as any;\n\n if (endpoint && endpoint.__path) {\n const routePath = endpoint.__path;\n const method = String(endpoint.__method || \"GET\").toUpperCase();\n\n addEndpoint(routePath, routesFile, method, endpoint);\n log(`Root route discovered: ${method} ${routePath}`);\n }\n }\n } catch (e: any) {\n log(`Root routes.ts load failed: ${e.message}`);\n }\n break;\n }\n }\n };\n\n const discoverProgrammaticRoutes = async (): Promise<void> => {\n const path = await import(\"path\");\n const srcRoot = path.join(server.config.root, srcDir);\n const routeFiles = findProgrammaticRouteFilesInDir(srcRoot);\n\n for (const routeFile of routeFiles) {\n try {\n const routesModule = await server.ssrLoadModule(\n toViteModuleId(routeFile, server.config.root),\n );\n const manifest = getProgrammaticRouteManifest(routesModule);\n if (!manifest) continue;\n\n for (const definition of manifest.routes) {\n if (definition.kind !== \"api\") continue;\n\n for (const [method, endpoint] of Object.entries(definition.methods)) {\n if (endpoint) {\n addEndpoint(definition.path, routeFile, method, endpoint);\n log(`Programmatic route discovered: ${method} ${definition.path}`);\n }\n }\n }\n } catch (e: any) {\n log(`Programmatic routes file load failed at ${routeFile}: ${e.message}`);\n }\n }\n };\n\n // Initialize discovery\n const initializeDiscovery = async () => {\n const path = await import(\"path\");\n const apiDir = path.join(server.config.root, srcDir, \"api\");\n log(`Discovering API routes in: ${apiDir}`);\n\n await discoverFileRoutes(apiDir);\n await discoverRootRoutes();\n await discoverProgrammaticRoutes();\n await createRouter();\n\n discoveryComplete = true;\n log(`API discovery complete: ${apiRoutesCache.size} routes found`);\n };\n\n discoveryPromise = initializeDiscovery().catch((e) => {\n console.error(\"[FARM] API discovery error:\", e);\n });\n\n // Expose API router for other plugins\n (server as any).__farmApi__ = {\n getHandler: () => apiRouterHandler,\n getRoutes: () => apiRoutesCache,\n isReady: () => discoveryComplete,\n waitForDiscovery: () => discoveryPromise,\n };\n\n // Add middleware to handle API requests\n return () => {\n server.middlewares.use(\n _withAfterNodeMiddleware(async (req, res, next) => {\n const url = req.url || \"/\";\n const pathname = url.split(\"?\")[0];\n const method = req.method || \"GET\";\n\n if (discoveryPromise && !discoveryComplete) {\n await discoveryPromise;\n }\n\n if (!matchAPIRoute(apiRoutesCache, pathname)) {\n return next();\n }\n\n if (!apiRouterHandler) {\n return next();\n }\n\n const startTime = Date.now();\n\n try {\n // Execute middleware if available\n const farmMiddleware = (server as any).__farmMiddleware__;\n if (farmMiddleware) {\n await farmMiddleware.waitForDiscovery?.();\n const middlewareData = new Map<string, any>();\n const handled = await farmMiddleware.execute(req, res, pathname, middlewareData);\n if (handled) {\n const duration = Date.now() - startTime;\n logResponse(method, pathname, res.statusCode || 200, duration);\n return;\n }\n }\n\n // Convert Node request to Web Request\n const fullUrl = `http://${req.headers.host || \"localhost:3000\"}${url}`;\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value) {\n headers.set(key, Array.isArray(value) ? value.join(\", \") : value);\n }\n }\n\n let body: Buffer | undefined;\n if (method !== \"GET\" && method !== \"HEAD\") {\n body = await readNodeRequestBody(req as any, bodySizeLimit);\n }\n\n const request = new Request(fullUrl, {\n method,\n headers,\n body: body\n ? (body.buffer.slice(\n body.byteOffset,\n body.byteOffset + body.byteLength,\n ) as ArrayBuffer)\n : undefined,\n });\n\n const response = await apiRouterHandler(request);\n\n const duration = Date.now() - startTime;\n logResponse(method, pathname, response.status, duration);\n\n await sendWebResponse(res, response);\n } catch (error: any) {\n const bodyErrorResponse = createFarmRequestBodyErrorResponse(error);\n if (bodyErrorResponse) {\n await sendWebResponse(res, bodyErrorResponse);\n return;\n }\n const duration = Date.now() - startTime;\n logResponse(method, pathname, 500, duration);\n console.error(\"[FARM] API error:\", error);\n res.statusCode = 500;\n res.setHeader(\"Content-Type\", \"application/json\");\n res.end(JSON.stringify({ error: \"Internal server error\" }));\n }\n }),\n );\n };\n },\n\n async handleHotUpdate({ file, server, modules }) {\n const fileName = file.split(\"/\").pop() || \"\";\n\n // Handle root routes.ts updates\n if (\n fileName === \"routes.ts\" ||\n fileName === \"routes.tsx\" ||\n fileName === \"routes.js\" ||\n isProgrammaticRoutesFileName(fileName)\n ) {\n log(`Root routes file updated: ${fileName}`);\n\n for (const mod of modules) {\n server.moduleGraph.invalidateModule(mod);\n }\n\n // Clear routes from this file\n for (const [routePath, route] of apiRoutesCache) {\n if (route.filePath === file) {\n apiRoutesCache.delete(routePath);\n }\n }\n\n try {\n const routesModule = await server.ssrLoadModule(file);\n\n for (const [exportName, exportValue] of Object.entries(routesModule)) {\n const endpoint = exportValue as any;\n\n if (endpoint && endpoint.__path) {\n const routePath = endpoint.__path;\n const method = String(endpoint.__method || \"GET\").toUpperCase();\n\n addEndpoint(routePath, file, method, endpoint);\n log(`Root route reloaded: ${method} ${routePath}`);\n }\n }\n\n const manifest = getProgrammaticRouteManifest(routesModule);\n if (manifest) {\n for (const definition of manifest.routes) {\n if (definition.kind !== \"api\") continue;\n\n for (const [method, endpoint] of Object.entries(definition.methods)) {\n if (endpoint) {\n addEndpoint(definition.path, file, method, endpoint);\n log(`Programmatic route reloaded: ${method} ${definition.path}`);\n }\n }\n }\n }\n\n await createRouter();\n log(`API router recreated`);\n } catch (e: any) {\n log(`Root routes.ts HMR failed: ${e.message}`);\n }\n\n return [];\n }\n\n // Handle file-based route updates\n if (file.includes(\"/api/\") && fileName.startsWith(\"route.\")) {\n const shortPath = file.split(\"/api/\")[1] || file;\n log(`API route updated: ${shortPath}`);\n\n for (const mod of modules) {\n server.moduleGraph.invalidateModule(mod);\n }\n\n let routePathToUpdate: string | null = null;\n for (const [routePath, route] of apiRoutesCache) {\n if (route.filePath === file) {\n routePathToUpdate = routePath;\n break;\n }\n }\n\n if (routePathToUpdate) {\n try {\n const routeModule = await server.ssrLoadModule(file);\n const endpoints: Record<string, any> = {};\n const availableMethods: string[] = [];\n\n for (const method of API_ROUTE_METHODS) {\n if (routeModule[method]) {\n availableMethods.push(method);\n endpoints[method] = routeModule[method];\n }\n }\n\n if (availableMethods.length > 0) {\n apiRoutesCache.set(routePathToUpdate, {\n path: routePathToUpdate,\n filePath: file,\n methods: availableMethods,\n endpoints,\n });\n log(`API route reloaded: ${routePathToUpdate}`);\n await createRouter();\n log(`API router recreated`);\n }\n } catch (e: any) {\n log(`API route HMR failed: ${e.message}`);\n }\n } else {\n // New route file\n try {\n const path = await import(\"path\");\n const apiDir = path.join(server.config.root, srcDir, \"api\");\n const relativePath = path.relative(apiDir, path.dirname(file));\n const routePath =\n \"/api/\" + (relativePath === \".\" ? \"\" : relativePath.replace(/\\\\/g, \"/\"));\n\n const routeModule = await server.ssrLoadModule(file);\n const endpoints: Record<string, any> = {};\n const availableMethods: string[] = [];\n\n for (const method of API_ROUTE_METHODS) {\n if (routeModule[method]) {\n availableMethods.push(method);\n endpoints[method] = routeModule[method];\n }\n }\n\n if (availableMethods.length > 0) {\n apiRoutesCache.set(routePath, {\n path: routePath,\n filePath: file,\n methods: availableMethods,\n endpoints,\n });\n log(`New API route discovered: ${routePath}`);\n await createRouter();\n }\n } catch (e: any) {\n log(`New API route load failed: ${e.message}`);\n }\n }\n\n return [];\n }\n },\n };\n}\n"],"mappings":"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","names":["duration"]}
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
} from "./chunk-T4QJQK76.mjs";
|
|
94
94
|
import {
|
|
95
95
|
MiddlewareManager
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-2PEJGY5V.mjs";
|
|
97
97
|
import {
|
|
98
98
|
_clearCurrentMiddlewareContext,
|
|
99
99
|
_clearCurrentMiddlewareData,
|
|
@@ -103,6 +103,9 @@ import {
|
|
|
103
103
|
import {
|
|
104
104
|
_withAfterNodeMiddleware
|
|
105
105
|
} from "./chunk-E6EPN5BT.mjs";
|
|
106
|
+
import {
|
|
107
|
+
createCliColors
|
|
108
|
+
} from "./chunk-GIELMNBG.mjs";
|
|
106
109
|
import {
|
|
107
110
|
sendWebResponse
|
|
108
111
|
} from "./chunk-QGOHVJ6J.mjs";
|
|
@@ -167,7 +170,7 @@ import {
|
|
|
167
170
|
} from "./chunk-RHIFZZUI.mjs";
|
|
168
171
|
import {
|
|
169
172
|
FARM_VERSION
|
|
170
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-DAUR3WUZ.mjs";
|
|
171
174
|
import {
|
|
172
175
|
FARM_DEPLOYMENT_ID_HEADER,
|
|
173
176
|
createFarmDeploymentCookie,
|
|
@@ -6495,18 +6498,14 @@ function farmPlugin(options = {}, initialPluginManager) {
|
|
|
6495
6498
|
let refreshRouteDiscovery = null;
|
|
6496
6499
|
let workflowHandler = null;
|
|
6497
6500
|
const logUpdate = /* @__PURE__ */ __name((tag, message) => {
|
|
6498
|
-
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
console.log(log);
|
|
6507
|
-
} catch {
|
|
6508
|
-
console.log(`[FARM] [${tag}] [UPDATE] ${message}`);
|
|
6509
|
-
}
|
|
6501
|
+
const pc = createCliColors();
|
|
6502
|
+
const log = [
|
|
6503
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
6504
|
+
pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
|
|
6505
|
+
pc.dim("[") + pc.bold(pc.yellow("UPDATE")) + pc.dim("]"),
|
|
6506
|
+
pc.gray(message)
|
|
6507
|
+
].join(" ");
|
|
6508
|
+
console.log(log);
|
|
6510
6509
|
}, "logUpdate");
|
|
6511
6510
|
return {
|
|
6512
6511
|
name: "farm",
|
|
@@ -6947,25 +6946,21 @@ window.__FARM_MANIFEST__ = ${inlineValue({
|
|
|
6947
6946
|
return;
|
|
6948
6947
|
}
|
|
6949
6948
|
logResponse.__last = { key: dedupeKey, ts: now };
|
|
6950
|
-
|
|
6951
|
-
|
|
6952
|
-
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
console.log(log);
|
|
6966
|
-
} catch {
|
|
6967
|
-
console.log(`[FARM] [${tag}] [${method}] ${urlPath} - ${status} (${duration}ms)`);
|
|
6968
|
-
}
|
|
6949
|
+
const pc = createCliColors();
|
|
6950
|
+
let statusColor = pc.green;
|
|
6951
|
+
if (status >= 500) statusColor = pc.red;
|
|
6952
|
+
else if (status >= 400) statusColor = pc.yellow;
|
|
6953
|
+
else if (status >= 300) statusColor = pc.cyan;
|
|
6954
|
+
const log = [
|
|
6955
|
+
pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
|
|
6956
|
+
pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
|
|
6957
|
+
pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
|
|
6958
|
+
pc.gray(urlPath),
|
|
6959
|
+
pc.dim("-"),
|
|
6960
|
+
statusColor(status.toString()),
|
|
6961
|
+
pc.dim(`(${duration}ms)`)
|
|
6962
|
+
].join(" ");
|
|
6963
|
+
console.log(log);
|
|
6969
6964
|
}, "logResponse");
|
|
6970
6965
|
server.middlewares.use(
|
|
6971
6966
|
_withAfterNodeMiddleware(async (req, res, next) => {
|
|
@@ -10031,7 +10026,7 @@ async function defineConfig(config = {}) {
|
|
|
10031
10026
|
return null;
|
|
10032
10027
|
}
|
|
10033
10028
|
};
|
|
10034
|
-
const pc =
|
|
10029
|
+
const pc = createCliColors();
|
|
10035
10030
|
let serverStarted = false;
|
|
10036
10031
|
let startTime = Date.now();
|
|
10037
10032
|
const farmLogger = {
|
|
@@ -10206,4 +10201,4 @@ export {
|
|
|
10206
10201
|
farmPlugin,
|
|
10207
10202
|
defineConfig
|
|
10208
10203
|
};
|
|
10209
|
-
//# sourceMappingURL=chunk-
|
|
10204
|
+
//# sourceMappingURL=chunk-XBKXKJX5.mjs.map
|