@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.
Files changed (210) hide show
  1. package/dist/after.d.mts +25 -0
  2. package/dist/after.d.ts +25 -0
  3. package/dist/agent-runtime.d.mts +96 -0
  4. package/dist/agent-runtime.d.ts +96 -0
  5. package/dist/api/route-manager.d.mts +68 -0
  6. package/dist/api/route-manager.d.ts +68 -0
  7. package/dist/api/runtime.d.mts +3 -0
  8. package/dist/api/runtime.d.ts +3 -0
  9. package/dist/api.cjs +22 -19
  10. package/dist/api.cjs.map +1 -1
  11. package/dist/api.d.mts +50 -0
  12. package/dist/api.d.ts +50 -0
  13. package/dist/api.mjs +2 -1
  14. package/dist/app-BB8GCH1g.d.ts +306 -0
  15. package/dist/app-DwsTpyNZ.d.mts +306 -0
  16. package/dist/app-markdown.d.mts +24 -0
  17. package/dist/app-markdown.d.ts +24 -0
  18. package/dist/cache.d.mts +192 -0
  19. package/dist/cache.d.ts +192 -0
  20. package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
  21. package/dist/chunk-2PEJGY5V.mjs.map +1 -0
  22. package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
  23. package/dist/{chunk-I3UWA2P2.mjs → chunk-DAUR3WUZ.mjs} +2 -2
  24. package/dist/{chunk-I3UWA2P2.mjs.map → chunk-DAUR3WUZ.mjs.map} +1 -1
  25. package/dist/chunk-GIELMNBG.mjs +15 -0
  26. package/dist/chunk-GIELMNBG.mjs.map +1 -0
  27. package/dist/{chunk-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
  28. package/dist/chunk-ICTGDDV4.mjs.map +1 -0
  29. package/dist/{chunk-FKKM7HVF.mjs → chunk-XBKXKJX5.mjs} +30 -35
  30. package/dist/chunk-XBKXKJX5.mjs.map +1 -0
  31. package/dist/{chunk-VIC7NJ77.mjs → chunk-ZP73P4VR.mjs} +2 -2
  32. package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
  33. package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
  34. package/dist/client-BT1mFQas.d.mts +447 -0
  35. package/dist/client-Nn0q4eO4.d.ts +447 -0
  36. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  37. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  38. package/dist/client-plugins-CbRum1fj.d.ts +2088 -0
  39. package/dist/client-plugins-QQntVkrv.d.mts +2088 -0
  40. package/dist/client-plugins.d.mts +24 -0
  41. package/dist/client-plugins.d.ts +24 -0
  42. package/dist/client.d.mts +452 -0
  43. package/dist/client.d.ts +452 -0
  44. package/dist/config.d.mts +31 -0
  45. package/dist/config.d.ts +31 -0
  46. package/dist/cron.d.mts +78 -0
  47. package/dist/cron.d.ts +78 -0
  48. package/dist/deferred.d.mts +42 -0
  49. package/dist/deferred.d.ts +42 -0
  50. package/dist/deployment.d.mts +36 -0
  51. package/dist/deployment.d.ts +36 -0
  52. package/dist/docs.d.mts +80 -0
  53. package/dist/docs.d.ts +80 -0
  54. package/dist/env-types.d.mts +12 -0
  55. package/dist/env-types.d.ts +12 -0
  56. package/dist/env.d.mts +45 -0
  57. package/dist/env.d.ts +45 -0
  58. package/dist/environment/vite.d.mts +22 -0
  59. package/dist/environment/vite.d.ts +22 -0
  60. package/dist/environment.d.mts +18 -0
  61. package/dist/environment.d.ts +18 -0
  62. package/dist/font.d.mts +95 -0
  63. package/dist/font.d.ts +95 -0
  64. package/dist/headers.d.mts +22 -0
  65. package/dist/headers.d.ts +22 -0
  66. package/dist/i18n/client.d.mts +32 -0
  67. package/dist/i18n/client.d.ts +32 -0
  68. package/dist/i18n/index.d.mts +20 -0
  69. package/dist/i18n/index.d.ts +20 -0
  70. package/dist/i18n/server.d.mts +30 -0
  71. package/dist/i18n/server.d.ts +30 -0
  72. package/dist/image/server.d.mts +37 -0
  73. package/dist/image/server.d.ts +37 -0
  74. package/dist/image/sharp.d.mts +7 -0
  75. package/dist/image/sharp.d.ts +7 -0
  76. package/dist/image-config-Duob7wER.d.mts +50 -0
  77. package/dist/image-config-Duob7wER.d.ts +50 -0
  78. package/dist/image.d.mts +39 -0
  79. package/dist/image.d.ts +39 -0
  80. package/dist/index.cjs +66 -69
  81. package/dist/index.cjs.map +1 -1
  82. package/dist/index.d.mts +477 -0
  83. package/dist/index.d.ts +477 -0
  84. package/dist/index.mjs +7 -6
  85. package/dist/index.mjs.map +1 -1
  86. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  87. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  88. package/dist/integrations.d.mts +24 -0
  89. package/dist/integrations.d.ts +24 -0
  90. package/dist/internal/build-runtime.cjs +50 -50
  91. package/dist/internal/build-runtime.cjs.map +1 -1
  92. package/dist/internal/build-runtime.d.mts +41 -0
  93. package/dist/internal/build-runtime.d.ts +41 -0
  94. package/dist/internal/build-runtime.mjs +5 -4
  95. package/dist/internal/client-runtime.d.mts +17 -0
  96. package/dist/internal/client-runtime.d.ts +17 -0
  97. package/dist/internal/config-runtime.d.mts +41 -0
  98. package/dist/internal/config-runtime.d.ts +41 -0
  99. package/dist/internal/metadata-image-runtime.d.mts +25 -0
  100. package/dist/internal/metadata-image-runtime.d.ts +25 -0
  101. package/dist/internal/production-node-env.d.mts +12 -0
  102. package/dist/internal/production-node-env.d.ts +12 -0
  103. package/dist/internal/production-runtime.d.mts +66 -0
  104. package/dist/internal/production-runtime.d.ts +66 -0
  105. package/dist/island-CfGru1MO.d.mts +9 -0
  106. package/dist/island-CfGru1MO.d.ts +9 -0
  107. package/dist/markdown.d.mts +60 -0
  108. package/dist/markdown.d.ts +60 -0
  109. package/dist/metadata-B5jBJHq1.d.ts +22 -0
  110. package/dist/metadata-BxOJ4FJl.d.mts +22 -0
  111. package/dist/middleware.cjs +17 -17
  112. package/dist/middleware.cjs.map +1 -1
  113. package/dist/middleware.d.mts +171 -0
  114. package/dist/middleware.d.ts +171 -0
  115. package/dist/middleware.mjs +3 -2
  116. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  117. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  118. package/dist/navigation.d.mts +14 -0
  119. package/dist/navigation.d.ts +14 -0
  120. package/dist/observability.d.mts +335 -0
  121. package/dist/observability.d.ts +335 -0
  122. package/dist/params-BALtrRim.d.ts +15 -0
  123. package/dist/params-ry-lxqmy.d.mts +15 -0
  124. package/dist/plugin-BJDf43dc.d.mts +165 -0
  125. package/dist/plugin-BJDf43dc.d.ts +165 -0
  126. package/dist/plugin.cjs +42 -48
  127. package/dist/plugin.cjs.map +1 -1
  128. package/dist/plugin.d.mts +24 -0
  129. package/dist/plugin.d.ts +24 -0
  130. package/dist/plugin.mjs +4 -3
  131. package/dist/production-runtime-Bxua86uR.d.mts +81 -0
  132. package/dist/production-runtime-CZqXjRVi.d.ts +81 -0
  133. package/dist/query/client.d.mts +61 -0
  134. package/dist/query/client.d.ts +61 -0
  135. package/dist/query/index.d.mts +90 -0
  136. package/dist/query/index.d.ts +90 -0
  137. package/dist/query/parsers.d.mts +25 -0
  138. package/dist/query/parsers.d.ts +25 -0
  139. package/dist/query/server.d.mts +55 -0
  140. package/dist/query/server.d.ts +55 -0
  141. package/dist/request-7V0GaZK_.d.mts +6 -0
  142. package/dist/request-B5XYBv5a.d.ts +6 -0
  143. package/dist/request.d.mts +25 -0
  144. package/dist/request.d.ts +25 -0
  145. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  146. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  147. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  148. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  149. package/dist/router.d.mts +36 -0
  150. package/dist/router.d.ts +36 -0
  151. package/dist/routes.d.mts +226 -0
  152. package/dist/routes.d.ts +226 -0
  153. package/dist/runtime-Bpp-c28k.d.ts +231 -0
  154. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  155. package/dist/runtime-Q3u74Nbq.d.mts +231 -0
  156. package/dist/runtime-bv63eUiO.d.ts +27 -0
  157. package/dist/server-action-security.d.mts +45 -0
  158. package/dist/server-action-security.d.ts +45 -0
  159. package/dist/server-fn-client.d.mts +33 -0
  160. package/dist/server-fn-client.d.ts +33 -0
  161. package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
  162. package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
  163. package/dist/server-fn.d.mts +121 -0
  164. package/dist/server-fn.d.ts +121 -0
  165. package/dist/server-plugins.d.mts +57 -0
  166. package/dist/server-plugins.d.ts +57 -0
  167. package/dist/server-query-client.d.mts +51 -0
  168. package/dist/server-query-client.d.ts +51 -0
  169. package/dist/server-query.d.mts +37 -0
  170. package/dist/server-query.d.ts +37 -0
  171. package/dist/server.cjs +45 -67
  172. package/dist/server.cjs.map +1 -1
  173. package/dist/server.d.mts +51 -0
  174. package/dist/server.d.ts +51 -0
  175. package/dist/server.mjs +8 -22
  176. package/dist/server.mjs.map +1 -1
  177. package/dist/storage.d.mts +52 -0
  178. package/dist/storage.d.ts +52 -0
  179. package/dist/testing.d.mts +103 -0
  180. package/dist/testing.d.ts +103 -0
  181. package/dist/transport-BmbGTXA5.d.mts +49 -0
  182. package/dist/transport-BmbGTXA5.d.ts +49 -0
  183. package/dist/types-BMxWr97v.d.mts +81 -0
  184. package/dist/types-BMxWr97v.d.ts +81 -0
  185. package/dist/types-D1A6-XvH.d.mts +73 -0
  186. package/dist/types-D1A6-XvH.d.ts +73 -0
  187. package/dist/types-DTzm4TCl.d.mts +78 -0
  188. package/dist/types-DTzm4TCl.d.ts +78 -0
  189. package/dist/utils-s9pN0Yep.d.mts +23 -0
  190. package/dist/utils-xTFxzu47.d.ts +23 -0
  191. package/dist/version.cjs +1 -1
  192. package/dist/version.cjs.map +1 -1
  193. package/dist/version.d.mts +3 -0
  194. package/dist/version.d.ts +3 -0
  195. package/dist/version.mjs +1 -1
  196. package/dist/vite.cjs +44 -50
  197. package/dist/vite.cjs.map +1 -1
  198. package/dist/vite.d.mts +24 -0
  199. package/dist/vite.d.ts +24 -0
  200. package/dist/vite.mjs +4 -3
  201. package/dist/workflows-CusFV6mn.d.mts +153 -0
  202. package/dist/workflows-CusFV6mn.d.ts +153 -0
  203. package/dist/workflows.d.mts +1 -0
  204. package/dist/workflows.d.ts +1 -0
  205. package/package.json +1 -1
  206. package/dist/chunk-4EATUJFO.mjs.map +0 -1
  207. package/dist/chunk-FKKM7HVF.mjs.map +0 -1
  208. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  209. /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
  210. /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-MIUW47JX.mjs";
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-I3UWA2P2.mjs";
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
- try {
6499
- const pc = __require("picocolors");
6500
- const log = [
6501
- pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
6502
- pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
6503
- pc.dim("[") + pc.bold(pc.yellow("UPDATE")) + pc.dim("]"),
6504
- pc.gray(message)
6505
- ].join(" ");
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
- try {
6951
- const pc = __require("picocolors");
6952
- let statusColor = pc.green;
6953
- if (status >= 500) statusColor = pc.red;
6954
- else if (status >= 400) statusColor = pc.yellow;
6955
- else if (status >= 300) statusColor = pc.cyan;
6956
- const log = [
6957
- pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
6958
- pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
6959
- pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
6960
- pc.gray(urlPath),
6961
- pc.dim("-"),
6962
- statusColor(status.toString()),
6963
- pc.dim(`(${duration}ms)`)
6964
- ].join(" ");
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 = await import("picocolors").then((m) => m.default);
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-FKKM7HVF.mjs.map
10204
+ //# sourceMappingURL=chunk-XBKXKJX5.mjs.map