@farm.js/core 0.1.0-beta.75 → 0.1.0-beta.77
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/agent-runtime.cjs +7 -0
- package/dist/agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime.mjs +7 -0
- package/dist/agent-runtime.mjs.map +1 -1
- package/dist/{app-BkCh7H09.d.mts → app-Bq-Tr90H.d.mts} +2 -0
- package/dist/{app-CZIEOZIa.d.ts → app-CQ6uhLEj.d.ts} +2 -0
- package/dist/{chunk-S6FO7OXA.mjs → chunk-BF47GPQF.mjs} +59 -8
- package/dist/chunk-BF47GPQF.mjs.map +1 -0
- package/dist/{chunk-DKD7DGTE.mjs → chunk-KDKXMAIQ.mjs} +2 -2
- package/dist/{chunk-UGK7TW2V.mjs → chunk-P57PPOQL.mjs} +18 -6
- package/dist/chunk-P57PPOQL.mjs.map +1 -0
- package/dist/{chunk-IIKQBOGZ.mjs → chunk-PZLBMD63.mjs} +2 -2
- package/dist/{chunk-IIKQBOGZ.mjs.map → chunk-PZLBMD63.mjs.map} +1 -1
- package/dist/{chunk-TWN6IBIL.mjs → chunk-UBDJMY7B.mjs} +2 -2
- package/dist/client/lifecycle.mjs +2 -2
- package/dist/client-plugins.cjs +1 -1
- package/dist/client-plugins.cjs.map +1 -1
- package/dist/client-plugins.mjs +2 -2
- package/dist/client.cjs +1 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.cjs +82 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +5 -5
- package/dist/internal/build-runtime.cjs +65 -7
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.mjs +3 -3
- package/dist/internal/client-runtime.cjs +1 -1
- package/dist/internal/client-runtime.cjs.map +1 -1
- package/dist/internal/client-runtime.mjs +2 -2
- package/dist/internal/product-telemetry-runtime.cjs +1 -1
- package/dist/internal/product-telemetry-runtime.cjs.map +1 -1
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/plugin.cjs +58 -7
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.mjs +2 -2
- package/dist/server-plugins.cjs +17 -5
- package/dist/server-plugins.cjs.map +1 -1
- package/dist/server-plugins.mjs +1 -1
- package/dist/server.cjs +75 -12
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.mjs +3 -3
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +58 -7
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-S6FO7OXA.mjs.map +0 -1
- package/dist/chunk-UGK7TW2V.mjs.map +0 -1
- /package/dist/{chunk-DKD7DGTE.mjs.map → chunk-KDKXMAIQ.mjs.map} +0 -0
- /package/dist/{chunk-TWN6IBIL.mjs.map → chunk-UBDJMY7B.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createClientPluginManager,
|
|
3
3
|
installChunkErrorRecovery
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-UBDJMY7B.mjs";
|
|
5
5
|
import {
|
|
6
6
|
searchParamsToObject
|
|
7
7
|
} from "../chunk-DD7QQZZO.mjs";
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
setFarmTrailingSlashPreference
|
|
10
10
|
} from "../chunk-RCNUKRBF.mjs";
|
|
11
11
|
import "../chunk-FXG2PS27.mjs";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-PZLBMD63.mjs";
|
|
13
13
|
import {
|
|
14
14
|
__name
|
|
15
15
|
} from "../chunk-CGILA3WO.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/product-telemetry.ts","../../package.json","../../src/version.ts"],"sourcesContent":["import { FARM_VERSION } from \"./version\";\n\nexport const FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION = 1 as const;\nexport const FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE = \"production_site_active\" as const;\nexport const FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME = \"@farm.js/core\" as const;\n\nconst DEFAULT_SITE_TELEMETRY_ENDPOINT = \"https://farmjs.dev/api/telemetry/v1/sites\";\nconst REQUEST_TIMEOUT_MS = 3_000;\nconst REPORT_INTERVAL_MS = 24 * 60 * 60 * 1_000;\nconst RETRY_INTERVAL_MS = 5 * 60 * 1_000;\nconst MAX_ORIGINS_PER_INSTANCE = 32;\nconst SAFE_DETAIL_PATTERN = /^[0-9A-Za-z._-]{1,64}$/;\n\nexport interface FarmProductionSiteTelemetryPayload {\n schemaVersion: typeof FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION;\n eventType: typeof FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE;\n siteUrl: string;\n packageName: typeof FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME;\n packageVersion: string;\n renderer: string;\n deployTarget: string;\n}\n\ninterface FarmProductionSiteReporterOptions {\n renderer: string;\n deployTarget?: string;\n endpoint?: string;\n fetch?: typeof fetch;\n now?: () => number;\n reportIntervalMs?: number;\n retryIntervalMs?: number;\n}\n\ninterface OriginReportState {\n pending?: Promise<void>;\n nextReportAt: number;\n}\n\nexport interface FarmProductionSiteReporter {\n report(requestUrl: string | URL, waitUntil?: (promise: Promise<unknown>) => void): void;\n}\n\n/**\n * Reduce an automatically observed request URL to a public HTTPS origin.\n * Request paths, query strings, hashes, and credentials are never returned.\n */\nexport function detectFarmProductionSiteOrigin(value: string | URL): string | undefined {\n try {\n const url = value instanceof URL ? value : new URL(value);\n return normalizeFarmProductionSiteOrigin(url.origin);\n } catch {\n return undefined;\n }\n}\n\n/** Normalize and validate the origin-only value accepted by the ingestion service. */\nexport function normalizeFarmProductionSiteOrigin(value: string): string | undefined {\n const candidate = value.trim();\n if (!candidate || candidate.length > 2_048) return undefined;\n\n try {\n const url = new URL(candidate);\n const hostname = url.hostname.toLowerCase();\n const isIpv4 = /^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test(hostname);\n const isIpv6 = hostname.startsWith(\"[\") && hostname.endsWith(\"]\");\n const isLocal =\n hostname === \"localhost\" || hostname.endsWith(\".localhost\") || hostname.endsWith(\".local\");\n const isSingleLabel = !hostname.includes(\".\");\n\n if (\n url.protocol !== \"https:\" ||\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n url.pathname !== \"/\" ||\n isIpv4 ||\n isIpv6 ||\n isLocal ||\n isSingleLabel ||\n hostname.endsWith(\".\")\n ) {\n return undefined;\n }\n\n return url.origin;\n } catch {\n return undefined;\n }\n}\n\nexport function createFarmProductionSiteReporter(\n options: FarmProductionSiteReporterOptions,\n): FarmProductionSiteReporter {\n const now = options.now ?? Date.now;\n const reportIntervalMs = options.reportIntervalMs ?? REPORT_INTERVAL_MS;\n const retryIntervalMs = options.retryIntervalMs ?? RETRY_INTERVAL_MS;\n const send = options.fetch ?? globalThis.fetch;\n const reportStates = new Map<string, OriginReportState>();\n\n return {\n report(requestUrl, waitUntil) {\n if (productionTelemetryDisabled()) return;\n\n const siteUrl = detectFarmProductionSiteOrigin(requestUrl);\n if (!siteUrl) return;\n\n let state = reportStates.get(siteUrl);\n if (!state) {\n if (reportStates.size >= MAX_ORIGINS_PER_INSTANCE) return;\n state = { nextReportAt: 0 };\n reportStates.set(siteUrl, state);\n }\n\n const attemptedAt = now();\n if (state.pending || attemptedAt < state.nextReportAt) return;\n\n state.nextReportAt = attemptedAt + reportIntervalMs;\n const payload: FarmProductionSiteTelemetryPayload = {\n schemaVersion: FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION,\n eventType: FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE,\n siteUrl,\n packageName: FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME,\n packageVersion: sanitizeDetail(FARM_VERSION, \"unknown\"),\n renderer: sanitizeDetail(options.renderer, \"custom\"),\n deployTarget: sanitizeDetail(options.deployTarget, \"custom\"),\n };\n state.pending = deliver(send, resolveSiteTelemetryEndpoint(options.endpoint), payload)\n .then((delivered) => {\n if (!delivered) state.nextReportAt = now() + retryIntervalMs;\n })\n .catch(() => {\n state.nextReportAt = now() + retryIntervalMs;\n })\n .finally(() => {\n state.pending = undefined;\n });\n\n if (waitUntil) {\n try {\n waitUntil(state.pending);\n } catch {\n // Delivery remains best-effort if a platform rejects background work.\n }\n } else {\n void state.pending;\n }\n },\n };\n}\n\nasync function deliver(\n send: typeof fetch,\n endpoint: string,\n payload: FarmProductionSiteTelemetryPayload,\n): Promise<boolean> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n timeout.unref?.();\n try {\n const response = await send(endpoint, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n if (!response.ok) {\n debug(`production-site check-in rejected with HTTP ${response.status}`);\n return false;\n }\n try {\n const result = (await response.json()) as { stored?: unknown };\n if (result && result.stored === false) {\n debug(\"production-site check-in was accepted but not stored\");\n return false;\n }\n } catch {\n // A successful empty response is also a valid acknowledgement.\n }\n return true;\n } catch {\n debug(\"production-site check-in failed\");\n return false;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction resolveSiteTelemetryEndpoint(explicit?: string): string {\n const candidate = explicit || process.env.FARM_TELEMETRY_SITE_ENDPOINT;\n if (!candidate) return DEFAULT_SITE_TELEMETRY_ENDPOINT;\n\n try {\n const url = new URL(candidate);\n const isLocal = [\"localhost\", \"127.0.0.1\", \"::1\"].includes(url.hostname);\n if (url.protocol === \"https:\" || (url.protocol === \"http:\" && isLocal)) {\n return url.toString();\n }\n } catch {\n // Fall through to the Farm-owned endpoint.\n }\n return DEFAULT_SITE_TELEMETRY_ENDPOINT;\n}\n\nfunction productionTelemetryDisabled(): boolean {\n if (process.env.DO_NOT_TRACK !== undefined && !isFalse(process.env.DO_NOT_TRACK)) return true;\n if (isTrue(process.env.FARM_TELEMETRY_DISABLED)) return true;\n return isFalse(process.env.FARM_TELEMETRY);\n}\n\nfunction sanitizeDetail(value: string | undefined, fallback: string): string {\n return value && SAFE_DETAIL_PATTERN.test(value) ? value : fallback;\n}\n\nfunction isTrue(value: string | undefined): boolean {\n return value !== undefined && [\"1\", \"true\", \"yes\", \"on\"].includes(value.toLowerCase());\n}\n\nfunction isFalse(value: string | undefined): boolean {\n return value !== undefined && [\"0\", \"false\", \"no\", \"off\"].includes(value.toLowerCase());\n}\n\nfunction debug(message: string): void {\n if (!isTrue(process.env.FARM_TELEMETRY_DEBUG)) return;\n process.stderr.write(`[farm.telemetry] ${message}\\n`);\n}\n","{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.75\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"theme\": [\n \"./dist/theme/index.d.ts\"\n ],\n \"theme/client\": [\n \"./dist/theme/client.d.ts\"\n ],\n \"theme/runtime\": [\n \"./dist/theme/runtime.d.ts\"\n ],\n \"theme/server\": [\n \"./dist/theme/server.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"instrumentation\": [\n \"./dist/instrumentation.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-query\": [\n \"./dist/server-query.d.ts\"\n ],\n \"server-query/client\": [\n \"./dist/server-query-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"font\": [\n \"./dist/font.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"css\": [\n \"./types/css.d.ts\"\n ],\n \"image\": [\n \"./types/image.d.ts\",\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/product-telemetry-runtime\": [\n \"./dist/internal/product-telemetry-runtime.d.ts\"\n ],\n \"internal/metadata-image-runtime\": [\n \"./dist/internal/metadata-image-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/isolated-boundary\": [\n \"./dist/internal/isolated-boundary.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"renderer\": [\n \"./dist/renderer.d.ts\"\n ],\n \"renderer-client\": [\n \"./dist/renderer-client.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"client/lifecycle\": [\n \"./dist/client/lifecycle.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./renderer\": {\n \"types\": \"./dist/renderer.d.ts\",\n \"import\": \"./dist/renderer.mjs\",\n \"require\": \"./dist/renderer.cjs\"\n },\n \"./renderer-client\": {\n \"types\": \"./dist/renderer-client.d.ts\",\n \"import\": \"./dist/renderer-client.mjs\",\n \"require\": \"./dist/renderer-client.cjs\"\n },\n \"./renderer/react/server\": {\n \"types\": \"./dist/renderer/react/server.d.ts\",\n \"import\": \"./dist/renderer/react/server.mjs\",\n \"require\": \"./dist/renderer/react/server.cjs\"\n },\n \"./renderer/react/client\": {\n \"types\": \"./dist/renderer/react/client.d.ts\",\n \"import\": \"./dist/renderer/react/client.mjs\",\n \"require\": \"./dist/renderer/react/client.cjs\"\n },\n \"./renderer/react/vite\": {\n \"types\": \"./dist/renderer/react/vite.d.ts\",\n \"import\": \"./dist/renderer/react/vite.mjs\",\n \"require\": \"./dist/renderer/react/vite.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./client/lifecycle\": {\n \"types\": \"./dist/client/lifecycle.d.ts\",\n \"import\": \"./dist/client/lifecycle.mjs\",\n \"require\": \"./dist/client/lifecycle.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./theme\": {\n \"types\": \"./dist/theme/index.d.ts\",\n \"import\": \"./dist/theme/index.mjs\",\n \"require\": \"./dist/theme/index.cjs\"\n },\n \"./theme/client\": {\n \"types\": \"./dist/theme/client.d.ts\",\n \"import\": \"./dist/theme/client.mjs\",\n \"require\": \"./dist/theme/client.cjs\"\n },\n \"./theme/runtime\": {\n \"types\": \"./dist/theme/runtime.d.ts\",\n \"import\": \"./dist/theme/runtime.mjs\",\n \"require\": \"./dist/theme/runtime.cjs\"\n },\n \"./theme/server\": {\n \"types\": \"./dist/theme/server.d.ts\",\n \"import\": \"./dist/theme/server.mjs\",\n \"require\": \"./dist/theme/server.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./instrumentation\": {\n \"types\": \"./dist/instrumentation.d.ts\",\n \"import\": \"./dist/instrumentation.mjs\",\n \"require\": \"./dist/instrumentation.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./font\": {\n \"types\": \"./dist/font.d.ts\",\n \"import\": \"./dist/font.mjs\",\n \"require\": \"./dist/font.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./css\": {\n \"types\": \"./types/css.d.ts\"\n },\n \"./image\": {\n \"types\": \"./types/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/product-telemetry-runtime\": {\n \"types\": \"./dist/internal/product-telemetry-runtime.d.ts\",\n \"import\": \"./dist/internal/product-telemetry-runtime.mjs\",\n \"require\": \"./dist/internal/product-telemetry-runtime.cjs\"\n },\n \"./internal/metadata-image-runtime\": {\n \"types\": \"./dist/internal/metadata-image-runtime.d.ts\",\n \"import\": \"./dist/internal/metadata-image-runtime.mjs\",\n \"require\": \"./dist/internal/metadata-image-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/isolated-boundary\": {\n \"types\": \"./dist/internal/isolated-boundary.d.ts\",\n \"import\": \"./dist/internal/isolated-boundary.mjs\",\n \"require\": \"./dist/internal/isolated-boundary.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@jridgewell/trace-mapping\": \"0.3.31\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@opentelemetry/api\": \"1.9.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vercel/og\": \"0.11.1\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@farm.js/otel\": \"workspace:*\",\n \"@farm.js/renderer-tests\": \"workspace:*\",\n \"@opentelemetry/sdk-node\": \"0.221.0\",\n \"@opentelemetry/sdk-trace-base\": \"2.10.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^3.2.7\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^3.2.7\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n },\n \"react-dom\": {\n \"optional\": true\n }\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/product-telemetry.ts","../../package.json","../../src/version.ts"],"sourcesContent":["import { FARM_VERSION } from \"./version\";\n\nexport const FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION = 1 as const;\nexport const FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE = \"production_site_active\" as const;\nexport const FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME = \"@farm.js/core\" as const;\n\nconst DEFAULT_SITE_TELEMETRY_ENDPOINT = \"https://farmjs.dev/api/telemetry/v1/sites\";\nconst REQUEST_TIMEOUT_MS = 3_000;\nconst REPORT_INTERVAL_MS = 24 * 60 * 60 * 1_000;\nconst RETRY_INTERVAL_MS = 5 * 60 * 1_000;\nconst MAX_ORIGINS_PER_INSTANCE = 32;\nconst SAFE_DETAIL_PATTERN = /^[0-9A-Za-z._-]{1,64}$/;\n\nexport interface FarmProductionSiteTelemetryPayload {\n schemaVersion: typeof FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION;\n eventType: typeof FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE;\n siteUrl: string;\n packageName: typeof FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME;\n packageVersion: string;\n renderer: string;\n deployTarget: string;\n}\n\ninterface FarmProductionSiteReporterOptions {\n renderer: string;\n deployTarget?: string;\n endpoint?: string;\n fetch?: typeof fetch;\n now?: () => number;\n reportIntervalMs?: number;\n retryIntervalMs?: number;\n}\n\ninterface OriginReportState {\n pending?: Promise<void>;\n nextReportAt: number;\n}\n\nexport interface FarmProductionSiteReporter {\n report(requestUrl: string | URL, waitUntil?: (promise: Promise<unknown>) => void): void;\n}\n\n/**\n * Reduce an automatically observed request URL to a public HTTPS origin.\n * Request paths, query strings, hashes, and credentials are never returned.\n */\nexport function detectFarmProductionSiteOrigin(value: string | URL): string | undefined {\n try {\n const url = value instanceof URL ? value : new URL(value);\n return normalizeFarmProductionSiteOrigin(url.origin);\n } catch {\n return undefined;\n }\n}\n\n/** Normalize and validate the origin-only value accepted by the ingestion service. */\nexport function normalizeFarmProductionSiteOrigin(value: string): string | undefined {\n const candidate = value.trim();\n if (!candidate || candidate.length > 2_048) return undefined;\n\n try {\n const url = new URL(candidate);\n const hostname = url.hostname.toLowerCase();\n const isIpv4 = /^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test(hostname);\n const isIpv6 = hostname.startsWith(\"[\") && hostname.endsWith(\"]\");\n const isLocal =\n hostname === \"localhost\" || hostname.endsWith(\".localhost\") || hostname.endsWith(\".local\");\n const isSingleLabel = !hostname.includes(\".\");\n\n if (\n url.protocol !== \"https:\" ||\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n url.pathname !== \"/\" ||\n isIpv4 ||\n isIpv6 ||\n isLocal ||\n isSingleLabel ||\n hostname.endsWith(\".\")\n ) {\n return undefined;\n }\n\n return url.origin;\n } catch {\n return undefined;\n }\n}\n\nexport function createFarmProductionSiteReporter(\n options: FarmProductionSiteReporterOptions,\n): FarmProductionSiteReporter {\n const now = options.now ?? Date.now;\n const reportIntervalMs = options.reportIntervalMs ?? REPORT_INTERVAL_MS;\n const retryIntervalMs = options.retryIntervalMs ?? RETRY_INTERVAL_MS;\n const send = options.fetch ?? globalThis.fetch;\n const reportStates = new Map<string, OriginReportState>();\n\n return {\n report(requestUrl, waitUntil) {\n if (productionTelemetryDisabled()) return;\n\n const siteUrl = detectFarmProductionSiteOrigin(requestUrl);\n if (!siteUrl) return;\n\n let state = reportStates.get(siteUrl);\n if (!state) {\n if (reportStates.size >= MAX_ORIGINS_PER_INSTANCE) return;\n state = { nextReportAt: 0 };\n reportStates.set(siteUrl, state);\n }\n\n const attemptedAt = now();\n if (state.pending || attemptedAt < state.nextReportAt) return;\n\n state.nextReportAt = attemptedAt + reportIntervalMs;\n const payload: FarmProductionSiteTelemetryPayload = {\n schemaVersion: FARM_PRODUCTION_SITE_TELEMETRY_SCHEMA_VERSION,\n eventType: FARM_PRODUCTION_SITE_TELEMETRY_EVENT_TYPE,\n siteUrl,\n packageName: FARM_PRODUCTION_SITE_TELEMETRY_PACKAGE_NAME,\n packageVersion: sanitizeDetail(FARM_VERSION, \"unknown\"),\n renderer: sanitizeDetail(options.renderer, \"custom\"),\n deployTarget: sanitizeDetail(options.deployTarget, \"custom\"),\n };\n state.pending = deliver(send, resolveSiteTelemetryEndpoint(options.endpoint), payload)\n .then((delivered) => {\n if (!delivered) state.nextReportAt = now() + retryIntervalMs;\n })\n .catch(() => {\n state.nextReportAt = now() + retryIntervalMs;\n })\n .finally(() => {\n state.pending = undefined;\n });\n\n if (waitUntil) {\n try {\n waitUntil(state.pending);\n } catch {\n // Delivery remains best-effort if a platform rejects background work.\n }\n } else {\n void state.pending;\n }\n },\n };\n}\n\nasync function deliver(\n send: typeof fetch,\n endpoint: string,\n payload: FarmProductionSiteTelemetryPayload,\n): Promise<boolean> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);\n timeout.unref?.();\n try {\n const response = await send(endpoint, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(payload),\n signal: controller.signal,\n });\n if (!response.ok) {\n debug(`production-site check-in rejected with HTTP ${response.status}`);\n return false;\n }\n try {\n const result = (await response.json()) as { stored?: unknown };\n if (result && result.stored === false) {\n debug(\"production-site check-in was accepted but not stored\");\n return false;\n }\n } catch {\n // A successful empty response is also a valid acknowledgement.\n }\n return true;\n } catch {\n debug(\"production-site check-in failed\");\n return false;\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction resolveSiteTelemetryEndpoint(explicit?: string): string {\n const candidate = explicit || process.env.FARM_TELEMETRY_SITE_ENDPOINT;\n if (!candidate) return DEFAULT_SITE_TELEMETRY_ENDPOINT;\n\n try {\n const url = new URL(candidate);\n const isLocal = [\"localhost\", \"127.0.0.1\", \"::1\"].includes(url.hostname);\n if (url.protocol === \"https:\" || (url.protocol === \"http:\" && isLocal)) {\n return url.toString();\n }\n } catch {\n // Fall through to the Farm-owned endpoint.\n }\n return DEFAULT_SITE_TELEMETRY_ENDPOINT;\n}\n\nfunction productionTelemetryDisabled(): boolean {\n if (process.env.DO_NOT_TRACK !== undefined && !isFalse(process.env.DO_NOT_TRACK)) return true;\n if (isTrue(process.env.FARM_TELEMETRY_DISABLED)) return true;\n return isFalse(process.env.FARM_TELEMETRY);\n}\n\nfunction sanitizeDetail(value: string | undefined, fallback: string): string {\n return value && SAFE_DETAIL_PATTERN.test(value) ? value : fallback;\n}\n\nfunction isTrue(value: string | undefined): boolean {\n return value !== undefined && [\"1\", \"true\", \"yes\", \"on\"].includes(value.toLowerCase());\n}\n\nfunction isFalse(value: string | undefined): boolean {\n return value !== undefined && [\"0\", \"false\", \"no\", \"off\"].includes(value.toLowerCase());\n}\n\nfunction debug(message: string): void {\n if (!isTrue(process.env.FARM_TELEMETRY_DEBUG)) return;\n process.stderr.write(`[farm.telemetry] ${message}\\n`);\n}\n","{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.77\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"theme\": [\n \"./dist/theme/index.d.ts\"\n ],\n \"theme/client\": [\n \"./dist/theme/client.d.ts\"\n ],\n \"theme/runtime\": [\n \"./dist/theme/runtime.d.ts\"\n ],\n \"theme/server\": [\n \"./dist/theme/server.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"instrumentation\": [\n \"./dist/instrumentation.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-query\": [\n \"./dist/server-query.d.ts\"\n ],\n \"server-query/client\": [\n \"./dist/server-query-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"font\": [\n \"./dist/font.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"css\": [\n \"./types/css.d.ts\"\n ],\n \"image\": [\n \"./types/image.d.ts\",\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/product-telemetry-runtime\": [\n \"./dist/internal/product-telemetry-runtime.d.ts\"\n ],\n \"internal/metadata-image-runtime\": [\n \"./dist/internal/metadata-image-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/isolated-boundary\": [\n \"./dist/internal/isolated-boundary.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"renderer\": [\n \"./dist/renderer.d.ts\"\n ],\n \"renderer-client\": [\n \"./dist/renderer-client.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"client/lifecycle\": [\n \"./dist/client/lifecycle.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./renderer\": {\n \"types\": \"./dist/renderer.d.ts\",\n \"import\": \"./dist/renderer.mjs\",\n \"require\": \"./dist/renderer.cjs\"\n },\n \"./renderer-client\": {\n \"types\": \"./dist/renderer-client.d.ts\",\n \"import\": \"./dist/renderer-client.mjs\",\n \"require\": \"./dist/renderer-client.cjs\"\n },\n \"./renderer/react/server\": {\n \"types\": \"./dist/renderer/react/server.d.ts\",\n \"import\": \"./dist/renderer/react/server.mjs\",\n \"require\": \"./dist/renderer/react/server.cjs\"\n },\n \"./renderer/react/client\": {\n \"types\": \"./dist/renderer/react/client.d.ts\",\n \"import\": \"./dist/renderer/react/client.mjs\",\n \"require\": \"./dist/renderer/react/client.cjs\"\n },\n \"./renderer/react/vite\": {\n \"types\": \"./dist/renderer/react/vite.d.ts\",\n \"import\": \"./dist/renderer/react/vite.mjs\",\n \"require\": \"./dist/renderer/react/vite.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./client/lifecycle\": {\n \"types\": \"./dist/client/lifecycle.d.ts\",\n \"import\": \"./dist/client/lifecycle.mjs\",\n \"require\": \"./dist/client/lifecycle.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./theme\": {\n \"types\": \"./dist/theme/index.d.ts\",\n \"import\": \"./dist/theme/index.mjs\",\n \"require\": \"./dist/theme/index.cjs\"\n },\n \"./theme/client\": {\n \"types\": \"./dist/theme/client.d.ts\",\n \"import\": \"./dist/theme/client.mjs\",\n \"require\": \"./dist/theme/client.cjs\"\n },\n \"./theme/runtime\": {\n \"types\": \"./dist/theme/runtime.d.ts\",\n \"import\": \"./dist/theme/runtime.mjs\",\n \"require\": \"./dist/theme/runtime.cjs\"\n },\n \"./theme/server\": {\n \"types\": \"./dist/theme/server.d.ts\",\n \"import\": \"./dist/theme/server.mjs\",\n \"require\": \"./dist/theme/server.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./instrumentation\": {\n \"types\": \"./dist/instrumentation.d.ts\",\n \"import\": \"./dist/instrumentation.mjs\",\n \"require\": \"./dist/instrumentation.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./font\": {\n \"types\": \"./dist/font.d.ts\",\n \"import\": \"./dist/font.mjs\",\n \"require\": \"./dist/font.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./css\": {\n \"types\": \"./types/css.d.ts\"\n },\n \"./image\": {\n \"types\": \"./types/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/product-telemetry-runtime\": {\n \"types\": \"./dist/internal/product-telemetry-runtime.d.ts\",\n \"import\": \"./dist/internal/product-telemetry-runtime.mjs\",\n \"require\": \"./dist/internal/product-telemetry-runtime.cjs\"\n },\n \"./internal/metadata-image-runtime\": {\n \"types\": \"./dist/internal/metadata-image-runtime.d.ts\",\n \"import\": \"./dist/internal/metadata-image-runtime.mjs\",\n \"require\": \"./dist/internal/metadata-image-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/isolated-boundary\": {\n \"types\": \"./dist/internal/isolated-boundary.d.ts\",\n \"import\": \"./dist/internal/isolated-boundary.mjs\",\n \"require\": \"./dist/internal/isolated-boundary.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@jridgewell/trace-mapping\": \"0.3.31\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@opentelemetry/api\": \"1.9.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vercel/og\": \"0.11.1\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@farm.js/otel\": \"workspace:*\",\n \"@farm.js/renderer-tests\": \"workspace:*\",\n \"@opentelemetry/sdk-node\": \"0.221.0\",\n \"@opentelemetry/sdk-trace-base\": \"2.10.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^3.2.7\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^3.2.7\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"react\": {\n \"optional\": true\n },\n \"react-dom\": {\n \"optional\": true\n }\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":"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","names":[]}
|
package/dist/plugin.cjs
CHANGED
|
@@ -16320,6 +16320,25 @@ var fs4 = __toESM(require("fs"));
|
|
|
16320
16320
|
var path12 = __toESM(require("path"));
|
|
16321
16321
|
init_utils();
|
|
16322
16322
|
|
|
16323
|
+
// src/server/dev-styles.ts
|
|
16324
|
+
var STYLE_EXTENSIONS = /\.(css|scss|sass|less|styl|stylus)(?:$|\?)/;
|
|
16325
|
+
var ALREADY_LINKED = "/src/app/globals.css";
|
|
16326
|
+
function collectDevStylesheetUrls(modules) {
|
|
16327
|
+
const seen = /* @__PURE__ */ new Set();
|
|
16328
|
+
for (const mod of modules) {
|
|
16329
|
+
const id = mod.id ?? mod.file ?? "";
|
|
16330
|
+
if (!STYLE_EXTENSIONS.test(id)) continue;
|
|
16331
|
+
if (id.includes(".module.")) continue;
|
|
16332
|
+
const url = mod.url;
|
|
16333
|
+
if (!url || !url.startsWith("/")) continue;
|
|
16334
|
+
const bare = url.split("?")[0];
|
|
16335
|
+
if (bare === ALREADY_LINKED) continue;
|
|
16336
|
+
seen.add(bare);
|
|
16337
|
+
}
|
|
16338
|
+
return [...seen].sort();
|
|
16339
|
+
}
|
|
16340
|
+
__name(collectDevStylesheetUrls, "collectDevStylesheetUrls");
|
|
16341
|
+
|
|
16323
16342
|
// src/server/full-document.ts
|
|
16324
16343
|
function stripContentsWrappers(markup) {
|
|
16325
16344
|
let out = markup.replace(/^\s+/, "");
|
|
@@ -19781,7 +19800,7 @@ _setFarmThemeServerSnapshotResolver(() => {
|
|
|
19781
19800
|
});
|
|
19782
19801
|
|
|
19783
19802
|
// package.json
|
|
19784
|
-
var version = "0.1.0-beta.
|
|
19803
|
+
var version = "0.1.0-beta.77";
|
|
19785
19804
|
|
|
19786
19805
|
// src/version.ts
|
|
19787
19806
|
var FARM_VERSION = version;
|
|
@@ -19881,6 +19900,12 @@ __name(createDefaultErrorDiagnostics, "createDefaultErrorDiagnostics");
|
|
|
19881
19900
|
// src/server/renderer.ts
|
|
19882
19901
|
var cachedClerkProvider = null;
|
|
19883
19902
|
var importRuntimeModule = new Function("specifier", "return import(specifier);");
|
|
19903
|
+
function shouldServePrerenderedPage(nodeEnv, method) {
|
|
19904
|
+
if (nodeEnv !== "production") return false;
|
|
19905
|
+
const normalizedMethod = (method || "GET").toUpperCase();
|
|
19906
|
+
return normalizedMethod === "GET" || normalizedMethod === "HEAD";
|
|
19907
|
+
}
|
|
19908
|
+
__name(shouldServePrerenderedPage, "shouldServePrerenderedPage");
|
|
19884
19909
|
function formatSSGManifestError(error) {
|
|
19885
19910
|
return error instanceof Error ? error.message : String(error);
|
|
19886
19911
|
}
|
|
@@ -20152,6 +20177,18 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
20152
20177
|
pageElement
|
|
20153
20178
|
);
|
|
20154
20179
|
}
|
|
20180
|
+
/// Stylesheets the app imported through JS (fontsource packages, component
|
|
20181
|
+
/// CSS) that the document must link alongside globals.css — see #658.
|
|
20182
|
+
collectDevStyleHrefs() {
|
|
20183
|
+
const graph = this.viteServer?.moduleGraph;
|
|
20184
|
+
if (!graph) return [];
|
|
20185
|
+
return collectDevStylesheetUrls(graph.idToModuleMap.values());
|
|
20186
|
+
}
|
|
20187
|
+
collectDevStyleLinks() {
|
|
20188
|
+
return this.collectDevStyleHrefs().map(
|
|
20189
|
+
(href) => `<link rel="stylesheet" href="${escapeHtmlAttribute2(href)}">`
|
|
20190
|
+
);
|
|
20191
|
+
}
|
|
20155
20192
|
createLayoutBoundary(pattern, layoutElement) {
|
|
20156
20193
|
return this.rendererRuntime.createElement(
|
|
20157
20194
|
"div",
|
|
@@ -20584,7 +20621,7 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
20584
20621
|
return;
|
|
20585
20622
|
}
|
|
20586
20623
|
}
|
|
20587
|
-
if (process.env.NODE_ENV
|
|
20624
|
+
if (shouldServePrerenderedPage(process.env.NODE_ENV, req.method)) {
|
|
20588
20625
|
const ssgPage = await this.shouldServeSSG(pathname);
|
|
20589
20626
|
if (ssgPage) {
|
|
20590
20627
|
const served = await this.serveSSGPage(req, res, ssgPage);
|
|
@@ -21366,7 +21403,11 @@ var _ServerRenderer = class _ServerRenderer {
|
|
|
21366
21403
|
{
|
|
21367
21404
|
tag: "link",
|
|
21368
21405
|
attrs: { rel: "stylesheet", href: "/src/app/globals.css" }
|
|
21369
|
-
}
|
|
21406
|
+
},
|
|
21407
|
+
...this.collectDevStyleHrefs().map((href) => ({
|
|
21408
|
+
tag: "link",
|
|
21409
|
+
attrs: { rel: "stylesheet", href }
|
|
21410
|
+
}))
|
|
21370
21411
|
]
|
|
21371
21412
|
};
|
|
21372
21413
|
for (const routeEntry of manifest.routes) {
|
|
@@ -21462,6 +21503,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
21462
21503
|
rendererHead,
|
|
21463
21504
|
renderFarmFontDevHead(this.config.root || process.cwd()),
|
|
21464
21505
|
`<link rel="stylesheet" href="/src/app/globals.css">`,
|
|
21506
|
+
...this.collectDevStyleLinks(),
|
|
21465
21507
|
`<script type="module" src="/@vite/client"></script>`,
|
|
21466
21508
|
rendererHydrationScript,
|
|
21467
21509
|
bootstrapScript
|
|
@@ -21480,7 +21522,8 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
21480
21522
|
${documentTitleTag}${metaTags}${alternateTags}${rendererHead ? `
|
|
21481
21523
|
${rendererHead}` : ""}
|
|
21482
21524
|
${renderFarmFontDevHead(this.config.root || process.cwd())}
|
|
21483
|
-
<link rel="stylesheet" href="/src/app/globals.css"
|
|
21525
|
+
<link rel="stylesheet" href="/src/app/globals.css">${this.collectDevStyleLinks().map((l) => `
|
|
21526
|
+
${l}`).join("")}
|
|
21484
21527
|
<script type="module" src="/@vite/client"></script>
|
|
21485
21528
|
${rendererHydrationScript}
|
|
21486
21529
|
${bootstrapScript}
|
|
@@ -21545,7 +21588,11 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
21545
21588
|
{
|
|
21546
21589
|
tag: "link",
|
|
21547
21590
|
attrs: { rel: "stylesheet", href: "/src/app/globals.css" }
|
|
21548
|
-
}
|
|
21591
|
+
},
|
|
21592
|
+
...this.collectDevStyleHrefs().map((href) => ({
|
|
21593
|
+
tag: "link",
|
|
21594
|
+
attrs: { rel: "stylesheet", href }
|
|
21595
|
+
}))
|
|
21549
21596
|
]
|
|
21550
21597
|
};
|
|
21551
21598
|
for (const routeEntry of manifest.routes) {
|
|
@@ -21632,6 +21679,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
21632
21679
|
{ style: { display: "contents" } },
|
|
21633
21680
|
element
|
|
21634
21681
|
);
|
|
21682
|
+
const devStyleLinks = this.collectDevStyleLinks();
|
|
21635
21683
|
const { pipe } = renderToPipeableStream2(streamRoot, {
|
|
21636
21684
|
onShellReady() {
|
|
21637
21685
|
const shellReadyMs = Date.now() - streamStartTime;
|
|
@@ -21653,7 +21701,8 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
|
|
|
21653
21701
|
${hasFavicon ? "" : '<link rel="icon" href="data:,">'}
|
|
21654
21702
|
<title>${title}</title>${metaTags}${i18nAlternateTags}
|
|
21655
21703
|
${fontHead}
|
|
21656
|
-
<link rel="stylesheet" href="/src/app/globals.css"
|
|
21704
|
+
<link rel="stylesheet" href="/src/app/globals.css" />${devStyleLinks.map((l) => `
|
|
21705
|
+
${l}`).join("")}
|
|
21657
21706
|
<script type="module" src="/@vite/client"></script>
|
|
21658
21707
|
${propsScript}
|
|
21659
21708
|
${hydrationClickQueueScript}
|
|
@@ -21880,6 +21929,7 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};
|
|
|
21880
21929
|
alternateLinks,
|
|
21881
21930
|
fontHead,
|
|
21882
21931
|
`<link rel="stylesheet" href="/src/app/globals.css" />`,
|
|
21932
|
+
...this.collectDevStyleLinks(),
|
|
21883
21933
|
`<script type="module" src="/@vite/client"></script>`,
|
|
21884
21934
|
rendererHydrationScript,
|
|
21885
21935
|
integrationManifestScript
|
|
@@ -21897,7 +21947,8 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};
|
|
|
21897
21947
|
<link rel="icon" href="data:,">
|
|
21898
21948
|
<title>${escapeHtmlAttribute2(documentTitle)}</title>${alternateLinks}
|
|
21899
21949
|
${fontHead}
|
|
21900
|
-
<link rel="stylesheet" href="/src/app/globals.css"
|
|
21950
|
+
<link rel="stylesheet" href="/src/app/globals.css" />${this.collectDevStyleLinks().map((l) => `
|
|
21951
|
+
${l}`).join("")}
|
|
21901
21952
|
<script type="module" src="/@vite/client"></script>
|
|
21902
21953
|
${rendererHydrationScript}
|
|
21903
21954
|
${integrationManifestScript}
|