@farm.js/core 0.1.0-beta.22 → 0.1.0-beta.23

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 (132) hide show
  1. package/dist/agent-runtime.d.mts +2 -1
  2. package/dist/agent-runtime.d.ts +2 -1
  3. package/dist/{app-BB8GCH1g.d.ts → app-CTFnOJaI.d.ts} +5 -3
  4. package/dist/{app-DwsTpyNZ.d.mts → app-DA6ospIq.d.mts} +5 -3
  5. package/dist/app-markdown.d.mts +2 -1
  6. package/dist/app-markdown.d.ts +2 -1
  7. package/dist/chunk-4IVNW5QD.mjs +82 -0
  8. package/dist/chunk-4IVNW5QD.mjs.map +1 -0
  9. package/dist/{chunk-DAUR3WUZ.mjs → chunk-5NOVWCFL.mjs} +2 -2
  10. package/dist/chunk-5NOVWCFL.mjs.map +1 -0
  11. package/dist/chunk-D42BNPZH.mjs +79 -0
  12. package/dist/chunk-D42BNPZH.mjs.map +1 -0
  13. package/dist/{chunk-LLPN5SEZ.mjs → chunk-DVPRBMU2.mjs} +2 -2
  14. package/dist/{chunk-ZP73P4VR.mjs → chunk-FJGTYLCO.mjs} +67 -20
  15. package/dist/chunk-FJGTYLCO.mjs.map +1 -0
  16. package/dist/chunk-GQVQESLY.mjs +25 -0
  17. package/dist/chunk-GQVQESLY.mjs.map +1 -0
  18. package/dist/chunk-H53KVQUU.mjs +48 -0
  19. package/dist/chunk-H53KVQUU.mjs.map +1 -0
  20. package/dist/chunk-HCGQYYHI.mjs +1 -0
  21. package/dist/chunk-HCGQYYHI.mjs.map +1 -0
  22. package/dist/{chunk-UCYWGN2P.mjs → chunk-OHNSROHS.mjs} +1 -1
  23. package/dist/{chunk-FRPWCMMG.mjs → chunk-SBWOTAX4.mjs} +63 -2
  24. package/dist/chunk-SBWOTAX4.mjs.map +1 -0
  25. package/dist/{chunk-XBKXKJX5.mjs → chunk-TX54PXAJ.mjs} +81 -25
  26. package/dist/chunk-TX54PXAJ.mjs.map +1 -0
  27. package/dist/{chunk-CEVMYGDL.mjs → chunk-YD5IRKVS.mjs} +13 -9
  28. package/dist/chunk-YD5IRKVS.mjs.map +1 -0
  29. package/dist/{client-plugins-QQntVkrv.d.mts → client-plugins-CCilIb_G.d.mts} +6 -2
  30. package/dist/{client-plugins-CbRum1fj.d.ts → client-plugins-DuuleQKk.d.ts} +6 -2
  31. package/dist/client-plugins.d.mts +2 -1
  32. package/dist/client-plugins.d.ts +2 -1
  33. package/dist/client.cjs +122 -35
  34. package/dist/client.cjs.map +1 -1
  35. package/dist/client.d.mts +2 -0
  36. package/dist/client.d.ts +2 -0
  37. package/dist/client.mjs +13 -2
  38. package/dist/config.d.mts +2 -1
  39. package/dist/config.d.ts +2 -1
  40. package/dist/{devtools-52FYXIEK.mjs → devtools-326RBQCN.mjs} +7 -6
  41. package/dist/{devtools-52FYXIEK.mjs.map → devtools-326RBQCN.mjs.map} +1 -1
  42. package/dist/docs.cjs.map +1 -1
  43. package/dist/docs.mjs +6 -5
  44. package/dist/index.cjs +431 -55
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.mts +10 -7
  47. package/dist/index.d.ts +10 -7
  48. package/dist/index.mjs +66 -49
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/integrations.d.mts +2 -1
  51. package/dist/integrations.d.ts +2 -1
  52. package/dist/internal/build-runtime.cjs +337 -34
  53. package/dist/internal/build-runtime.cjs.map +1 -1
  54. package/dist/internal/build-runtime.d.mts +4 -3
  55. package/dist/internal/build-runtime.d.ts +4 -3
  56. package/dist/internal/build-runtime.mjs +15 -12
  57. package/dist/internal/config-runtime.cjs +41 -0
  58. package/dist/internal/config-runtime.cjs.map +1 -1
  59. package/dist/internal/config-runtime.d.mts +3 -2
  60. package/dist/internal/config-runtime.d.ts +3 -2
  61. package/dist/internal/config-runtime.mjs +5 -4
  62. package/dist/internal/production-runtime.cjs +178 -0
  63. package/dist/internal/production-runtime.cjs.map +1 -1
  64. package/dist/internal/production-runtime.d.mts +20 -6
  65. package/dist/internal/production-runtime.d.ts +20 -6
  66. package/dist/internal/production-runtime.mjs +13 -1
  67. package/dist/internal/production-runtime.mjs.map +1 -1
  68. package/dist/{metadata-B5jBJHq1.d.ts → metadata-DyPRG0wX.d.ts} +1 -1
  69. package/dist/{metadata-BxOJ4FJl.d.mts → metadata-_GHcAySx.d.mts} +1 -1
  70. package/dist/middleware.d.mts +4 -3
  71. package/dist/middleware.d.ts +4 -3
  72. package/dist/plugin.cjs +219 -14
  73. package/dist/plugin.cjs.map +1 -1
  74. package/dist/plugin.d.mts +2 -1
  75. package/dist/plugin.d.ts +2 -1
  76. package/dist/plugin.mjs +11 -8
  77. package/dist/{production-runtime-Bxua86uR.d.mts → production-runtime-C4cO3esK.d.mts} +1 -1
  78. package/dist/{production-runtime-CZqXjRVi.d.ts → production-runtime-DrEy8kBO.d.ts} +1 -1
  79. package/dist/{request-7V0GaZK_.d.mts → request-B2PpOxYK.d.mts} +1 -1
  80. package/dist/{request-B5XYBv5a.d.ts → request-D40lt6aN.d.ts} +1 -1
  81. package/dist/request.d.mts +3 -2
  82. package/dist/request.d.ts +3 -2
  83. package/dist/routes.d.mts +2 -1
  84. package/dist/routes.d.ts +2 -1
  85. package/dist/server-plugins.d.mts +3 -2
  86. package/dist/server-plugins.d.ts +3 -2
  87. package/dist/server.cjs +241 -19
  88. package/dist/server.cjs.map +1 -1
  89. package/dist/server.d.mts +8 -6
  90. package/dist/server.d.ts +8 -6
  91. package/dist/server.mjs +20 -11
  92. package/dist/server.mjs.map +1 -1
  93. package/dist/testing.d.mts +2 -1
  94. package/dist/testing.d.ts +2 -1
  95. package/dist/theme/client.cjs +115 -0
  96. package/dist/theme/client.cjs.map +1 -0
  97. package/dist/theme/client.d.mts +17 -0
  98. package/dist/theme/client.d.ts +17 -0
  99. package/dist/theme/client.mjs +16 -0
  100. package/dist/theme/client.mjs.map +1 -0
  101. package/dist/theme/index.cjs +71 -0
  102. package/dist/theme/index.cjs.map +1 -0
  103. package/dist/theme/index.d.mts +6 -0
  104. package/dist/theme/index.d.ts +6 -0
  105. package/dist/theme/index.mjs +9 -0
  106. package/dist/theme/index.mjs.map +1 -0
  107. package/dist/theme/server.cjs +191 -0
  108. package/dist/theme/server.cjs.map +1 -0
  109. package/dist/theme/server.d.mts +8 -0
  110. package/dist/theme/server.d.ts +8 -0
  111. package/dist/theme/server.mjs +18 -0
  112. package/dist/theme/server.mjs.map +1 -0
  113. package/dist/types-CsR8fpgF.d.mts +30 -0
  114. package/dist/types-CsR8fpgF.d.ts +30 -0
  115. package/dist/{utils-xTFxzu47.d.ts → utils-3sQgfkya.d.ts} +1 -1
  116. package/dist/{utils-s9pN0Yep.d.mts → utils-Bop7bly-.d.mts} +1 -1
  117. package/dist/version.cjs +1 -1
  118. package/dist/version.cjs.map +1 -1
  119. package/dist/version.mjs +1 -1
  120. package/dist/vite.cjs +242 -15
  121. package/dist/vite.cjs.map +1 -1
  122. package/dist/vite.d.mts +2 -1
  123. package/dist/vite.d.ts +2 -1
  124. package/dist/vite.mjs +11 -8
  125. package/package.json +25 -1
  126. package/dist/chunk-CEVMYGDL.mjs.map +0 -1
  127. package/dist/chunk-DAUR3WUZ.mjs.map +0 -1
  128. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  129. package/dist/chunk-XBKXKJX5.mjs.map +0 -1
  130. package/dist/chunk-ZP73P4VR.mjs.map +0 -1
  131. /package/dist/{chunk-LLPN5SEZ.mjs.map → chunk-DVPRBMU2.mjs.map} +0 -0
  132. /package/dist/{chunk-UCYWGN2P.mjs.map → chunk-OHNSROHS.mjs.map} +0 -0
@@ -1,16 +1,18 @@
1
1
  export { _runWithAfterRequest } from '../after.mjs';
2
2
  import { R as ResolvedFarmServerConfig } from '../workflows-CusFV6mn.mjs';
3
3
  export { b as bufferFarmRequestBody, c as createFarmRequestBodyErrorResponse, r as resolveFarmServerConfig } from '../workflows-CusFV6mn.mjs';
4
- export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-7V0GaZK_.mjs';
4
+ export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-B2PpOxYK.mjs';
5
5
  export { configureFarmCache, createFarmCacheKey, getFarmDataCache, normalizeRevalidatePath } from '../cache.mjs';
6
6
  export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders } from '../resolver-DJqjLMg_.mjs';
7
7
  export { localizeFarmHref, localizeFarmPathname, stripFarmLocaleFromPathname } from '../i18n/index.mjs';
8
- export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-BxOJ4FJl.mjs';
9
- export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-Bxua86uR.mjs';
8
+ export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-_GHcAySx.mjs';
9
+ export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-C4cO3esK.mjs';
10
10
  export { g as getFarmRedirectError, i as isFarmNotFoundError, a as isFarmRedirectError } from '../navigation-errors-Dvwpzaer.mjs';
11
11
  export { configureFarmObservability, emitFarmEvent } from '../observability.mjs';
12
- import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-QQntVkrv.mjs';
13
- export { a4 as manageFarmDocumentPreloads, a5 as manageFarmHtmlPreloads, a6 as manageFarmLinkHeaderPreloads, a7 as reportFarmPreloadWarnings } from '../client-plugins-QQntVkrv.mjs';
12
+ import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-CCilIb_G.mjs';
13
+ export { a9 as manageFarmDocumentPreloads, aa as manageFarmHtmlPreloads, ab as manageFarmLinkHeaderPreloads, ac as reportFarmPreloadWarnings } from '../client-plugins-CCilIb_G.mjs';
14
+ export { _setDefaultFarmThemeConfig, getTheme } from '../theme/server.mjs';
15
+ import { F as FarmThemeRuntime, d as FarmThemeConfig, R as ResolvedFarmThemeConfig, b as FarmThemePreference } from '../types-CsR8fpgF.mjs';
14
16
  import 'node:http';
15
17
  import '../types-BMxWr97v.mjs';
16
18
  import '../plugin-BJDf43dc.mjs';
@@ -61,6 +63,18 @@ type FarmRouteContextCarrier<TContext = unknown> = {
61
63
  declare function resolveFarmRouteContext(config: Pick<FarmConfig, "context">, input: FarmContextFactoryInput): Promise<unknown>;
62
64
  declare function withFarmRouteContext<TProps extends object, TContext>(props: TProps, context: TContext | undefined): TProps & FarmRouteContextCarrier<TContext>;
63
65
 
66
+ declare global {
67
+ interface Window {
68
+ __FARM_THEME__?: FarmThemeRuntime;
69
+ }
70
+ }
71
+ interface FarmThemeDocumentParts {
72
+ attributes: string;
73
+ head: string;
74
+ }
75
+ declare function createFarmThemeDocumentParts(input: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string, serverTheme?: FarmThemePreference): FarmThemeDocumentParts;
76
+ declare function applyFarmThemeDocument(html: string, input: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string, serverTheme?: FarmThemePreference): string;
77
+
64
78
  declare function appendFarmLinkHeader(headers: Headers, value: string): void;
65
79
 
66
- export { appendFarmLinkHeader, createFarmProductionLifecycle, resolveFarmRouteContext, withFarmRouteContext };
80
+ export { appendFarmLinkHeader, applyFarmThemeDocument, createFarmProductionLifecycle, createFarmThemeDocumentParts, resolveFarmRouteContext, withFarmRouteContext };
@@ -1,16 +1,18 @@
1
1
  export { _runWithAfterRequest } from '../after.js';
2
2
  import { R as ResolvedFarmServerConfig } from '../workflows-CusFV6mn.js';
3
3
  export { b as bufferFarmRequestBody, c as createFarmRequestBodyErrorResponse, r as resolveFarmServerConfig } from '../workflows-CusFV6mn.js';
4
- export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-B5XYBv5a.js';
4
+ export { _ as _runWithCurrentRequest, g as getCurrentRequest } from '../request-D40lt6aN.js';
5
5
  export { configureFarmCache, createFarmCacheKey, getFarmDataCache, normalizeRevalidatePath } from '../cache.js';
6
6
  export { c as createFarmLocaleCookie, g as getFarmLocaleVaryHeaders } from '../resolver-IH4RmPEl.js';
7
7
  export { localizeFarmHref, localizeFarmPathname, stripFarmLocaleFromPathname } from '../i18n/index.js';
8
- export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-B5jBJHq1.js';
9
- export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-CZqXjRVi.js';
8
+ export { a as addMetadataImageReference, m as mergeMetadata, r as renderMetadataHead } from '../metadata-DyPRG0wX.js';
9
+ export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner } from '../production-runtime-DrEy8kBO.js';
10
10
  export { g as getFarmRedirectError, i as isFarmNotFoundError, a as isFarmRedirectError } from '../navigation-errors-Dvwpzaer.js';
11
11
  export { configureFarmObservability, emitFarmEvent } from '../observability.js';
12
- import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-CbRum1fj.js';
13
- export { a4 as manageFarmDocumentPreloads, a5 as manageFarmHtmlPreloads, a6 as manageFarmLinkHeaderPreloads, a7 as reportFarmPreloadWarnings } from '../client-plugins-CbRum1fj.js';
12
+ import { F as FarmConfig, e as FarmContextFactoryInput } from '../client-plugins-DuuleQKk.js';
13
+ export { a9 as manageFarmDocumentPreloads, aa as manageFarmHtmlPreloads, ab as manageFarmLinkHeaderPreloads, ac as reportFarmPreloadWarnings } from '../client-plugins-DuuleQKk.js';
14
+ export { _setDefaultFarmThemeConfig, getTheme } from '../theme/server.js';
15
+ import { F as FarmThemeRuntime, d as FarmThemeConfig, R as ResolvedFarmThemeConfig, b as FarmThemePreference } from '../types-CsR8fpgF.js';
14
16
  import 'node:http';
15
17
  import '../types-BMxWr97v.js';
16
18
  import '../plugin-BJDf43dc.js';
@@ -61,6 +63,18 @@ type FarmRouteContextCarrier<TContext = unknown> = {
61
63
  declare function resolveFarmRouteContext(config: Pick<FarmConfig, "context">, input: FarmContextFactoryInput): Promise<unknown>;
62
64
  declare function withFarmRouteContext<TProps extends object, TContext>(props: TProps, context: TContext | undefined): TProps & FarmRouteContextCarrier<TContext>;
63
65
 
66
+ declare global {
67
+ interface Window {
68
+ __FARM_THEME__?: FarmThemeRuntime;
69
+ }
70
+ }
71
+ interface FarmThemeDocumentParts {
72
+ attributes: string;
73
+ head: string;
74
+ }
75
+ declare function createFarmThemeDocumentParts(input: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string, serverTheme?: FarmThemePreference): FarmThemeDocumentParts;
76
+ declare function applyFarmThemeDocument(html: string, input: FarmThemeConfig | ResolvedFarmThemeConfig | false | undefined, basePath?: string, serverTheme?: FarmThemePreference): string;
77
+
64
78
  declare function appendFarmLinkHeader(headers: Headers, value: string): void;
65
79
 
66
- export { appendFarmLinkHeader, createFarmProductionLifecycle, resolveFarmRouteContext, withFarmRouteContext };
80
+ export { appendFarmLinkHeader, applyFarmThemeDocument, createFarmProductionLifecycle, createFarmThemeDocumentParts, resolveFarmRouteContext, withFarmRouteContext };
@@ -4,20 +4,27 @@ import {
4
4
  } from "../chunk-DXV2Y4HU.mjs";
5
5
  import {
6
6
  addMetadataImageReference,
7
+ applyFarmThemeDocument,
8
+ createFarmThemeDocumentParts,
7
9
  mergeMetadata,
8
10
  renderMetadataHead
9
- } from "../chunk-FRPWCMMG.mjs";
11
+ } from "../chunk-SBWOTAX4.mjs";
10
12
  import {
11
13
  getFarmRedirectError,
12
14
  isFarmNotFoundError,
13
15
  isFarmRedirectError
14
16
  } from "../chunk-7HO6AEOP.mjs";
17
+ import {
18
+ _setDefaultFarmThemeConfig,
19
+ getTheme
20
+ } from "../chunk-4IVNW5QD.mjs";
15
21
  import {
16
22
  manageFarmDocumentPreloads,
17
23
  manageFarmHtmlPreloads,
18
24
  manageFarmLinkHeaderPreloads,
19
25
  reportFarmPreloadWarnings
20
26
  } from "../chunk-7ZVN3YZI.mjs";
27
+ import "../chunk-H53KVQUU.mjs";
21
28
  import {
22
29
  _runWithMiddlewareContext,
23
30
  _runWithMiddlewareData
@@ -43,6 +50,7 @@ import {
43
50
  getCurrentRequest
44
51
  } from "../chunk-RHIFZZUI.mjs";
45
52
  import "../chunk-LM2YNO4U.mjs";
53
+ import "../chunk-GQVQESLY.mjs";
46
54
  import {
47
55
  localizeFarmHref,
48
56
  localizeFarmPathname,
@@ -278,8 +286,10 @@ export {
278
286
  _runWithCurrentRequest,
279
287
  _runWithMiddlewareContext,
280
288
  _runWithMiddlewareData,
289
+ _setDefaultFarmThemeConfig,
281
290
  addMetadataImageReference,
282
291
  appendFarmLinkHeader,
292
+ applyFarmThemeDocument,
283
293
  applyProductionMiddlewareHeaders,
284
294
  bufferFarmRequestBody,
285
295
  configureFarmCache,
@@ -288,12 +298,14 @@ export {
288
298
  createFarmLocaleCookie,
289
299
  createFarmProductionLifecycle,
290
300
  createFarmRequestBodyErrorResponse,
301
+ createFarmThemeDocumentParts,
291
302
  createProductionMiddlewareRunner,
292
303
  emitFarmEvent,
293
304
  getCurrentRequest,
294
305
  getFarmDataCache,
295
306
  getFarmLocaleVaryHeaders,
296
307
  getFarmRedirectError,
308
+ getTheme,
297
309
  isFarmNotFoundError,
298
310
  isFarmRedirectError,
299
311
  localizeFarmHref,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/production-lifecycle.ts","../../src/nitro/production-runtime.ts"],"sourcesContent":["import type { ResolvedFarmServerConfig } from \"./server-http\";\n\nexport type FarmProductionLifecycleState = \"starting\" | \"ready\" | \"draining\" | \"failed\" | \"closed\";\n\nexport interface FarmProductionLifecycleOptions {\n server: ResolvedFarmServerConfig;\n start?: () => void | Promise<void>;\n close?: (reason: string) => void | Promise<void>;\n}\n\nexport interface FarmResponseCompletionContext {\n onResponseFinished?: (callback: () => void) => void;\n}\n\nexport interface FarmProductionLifecycle {\n readonly state: FarmProductionLifecycleState;\n readonly activeRequests: number;\n start(): Promise<void>;\n beginDrain(reason?: string): void;\n waitForIdle(timeoutMs?: number): Promise<boolean>;\n close(reason?: string): Promise<void>;\n handleHealthRequest(request: Request): Promise<Response | null>;\n runRequest(\n handler: () => Response | Promise<Response>,\n context?: FarmResponseCompletionContext,\n ): Promise<Response>;\n}\n\nexport function createFarmProductionLifecycle(\n options: FarmProductionLifecycleOptions,\n): FarmProductionLifecycle {\n let state: FarmProductionLifecycleState = \"starting\";\n let activeRequests = 0;\n let startPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n const idleWaiters = new Set<() => void>();\n\n const notifyIdle = () => {\n if (activeRequests !== 0) return;\n for (const resolve of idleWaiters) resolve();\n idleWaiters.clear();\n };\n\n const start = async () => {\n if (state === \"ready\") return;\n if (startPromise) return startPromise;\n if (state === \"draining\" || state === \"closed\") {\n throw new Error(\"Farm production runtime is shutting down\");\n }\n if (state === \"failed\") {\n throw new Error(\"Farm production runtime failed to start\");\n }\n\n startPromise = Promise.resolve()\n .then(() => options.start?.())\n .then(\n () => {\n if (state === \"starting\") state = \"ready\";\n },\n (error) => {\n state = \"failed\";\n throw error;\n },\n );\n return startPromise;\n };\n\n const beginDrain = (_reason = \"production-server-draining\") => {\n if (state === \"closed\" || state === \"failed\") return;\n state = \"draining\";\n };\n\n const waitForIdle = async (\n timeoutMs = options.server.gracefulShutdownTimeout,\n ): Promise<boolean> => {\n if (activeRequests === 0) return true;\n\n return await new Promise<boolean>((resolve) => {\n let settled = false;\n const finish = (drained: boolean) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n idleWaiters.delete(onIdle);\n resolve(drained);\n };\n const onIdle = () => finish(true);\n const timeout = setTimeout(() => finish(false), timeoutMs);\n timeout.unref?.();\n idleWaiters.add(onIdle);\n });\n };\n\n const close = async (reason = \"production-server-closed\") => {\n if (closePromise) return closePromise;\n beginDrain(reason);\n closePromise = Promise.resolve()\n .then(() => options.close?.(reason))\n .then(\n () => {\n state = \"closed\";\n },\n (error) => {\n state = \"closed\";\n throw error;\n },\n );\n return closePromise;\n };\n\n const handleHealthRequest = async (request: Request): Promise<Response | null> => {\n const health = options.server.health;\n if (!health.enabled) return null;\n\n const pathname = new URL(request.url).pathname.replace(/\\/+$/, \"\") || \"/\";\n const isLiveness = pathname === health.livenessPath;\n const isReadiness = pathname === health.readinessPath;\n if (!isLiveness && !isReadiness) return null;\n\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return new Response(null, {\n status: 405,\n headers: createHealthHeaders({ allow: \"GET, HEAD\" }),\n });\n }\n\n if (isReadiness && state === \"starting\") {\n try {\n await start();\n } catch {\n // The readiness response below intentionally does not expose startup details.\n }\n }\n\n const healthy = isLiveness ? state !== \"failed\" && state !== \"closed\" : state === \"ready\";\n const body =\n request.method === \"HEAD\" ? null : JSON.stringify({ status: healthy ? \"ok\" : \"unavailable\" });\n return new Response(body, {\n status: healthy ? 200 : 503,\n headers: createHealthHeaders(healthy ? undefined : { retryAfter: \"1\" }),\n });\n };\n\n const runRequest = async (\n handler: () => Response | Promise<Response>,\n context: FarmResponseCompletionContext = {},\n ): Promise<Response> => {\n if (state === \"draining\" || state === \"closed\") return createDrainingResponse();\n await start();\n if (state !== \"ready\") return createDrainingResponse();\n\n activeRequests++;\n let finished = false;\n const finish = () => {\n if (finished) return;\n finished = true;\n activeRequests--;\n notifyIdle();\n };\n\n try {\n const response = await handler();\n return trackResponseCompletion(response, finish, context.onResponseFinished);\n } catch (error) {\n finish();\n throw error;\n }\n };\n\n return {\n get state() {\n return state;\n },\n get activeRequests() {\n return activeRequests;\n },\n start,\n beginDrain,\n waitForIdle,\n close,\n handleHealthRequest,\n runRequest,\n };\n}\n\nfunction createHealthHeaders(options: { allow?: string; retryAfter?: string } = {}): Headers {\n const headers = new Headers({\n \"cache-control\": \"no-store\",\n \"content-type\": \"application/json; charset=utf-8\",\n \"x-content-type-options\": \"nosniff\",\n });\n if (options.allow) headers.set(\"allow\", options.allow);\n if (options.retryAfter) headers.set(\"retry-after\", options.retryAfter);\n return headers;\n}\n\nfunction createDrainingResponse(): Response {\n return new Response(\"Service Unavailable\", {\n status: 503,\n headers: {\n \"cache-control\": \"no-store\",\n connection: \"close\",\n \"content-type\": \"text/plain; charset=utf-8\",\n \"retry-after\": \"1\",\n \"x-content-type-options\": \"nosniff\",\n },\n });\n}\n\nfunction trackResponseCompletion(\n response: Response,\n finish: () => void,\n onResponseFinished?: (callback: () => void) => void,\n): Response {\n if (onResponseFinished) {\n try {\n onResponseFinished(finish);\n return response;\n } catch {\n // Fall through to Web Stream tracking when an adapter rejects registration.\n }\n }\n\n if (!response.body || response.bodyUsed || response.body.locked) {\n finish();\n return response;\n }\n\n const reader = response.body.getReader();\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const result = await reader.read();\n if (result.done) {\n finish();\n controller.close();\n return;\n }\n controller.enqueue(result.value);\n } catch (error) {\n finish();\n controller.error(error);\n }\n },\n async cancel(reason) {\n try {\n await reader.cancel(reason);\n } finally {\n finish();\n }\n },\n });\n\n return new Response(body, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n}\n","export { _runWithAfterRequest } from \"../after\";\nexport {\n bufferFarmRequestBody,\n createFarmRequestBodyErrorResponse,\n resolveFarmServerConfig,\n} from \"../server-http\";\nexport { createFarmProductionLifecycle } from \"../production-lifecycle\";\nexport { _runWithCurrentRequest, getCurrentRequest } from \"../server/request\";\nexport {\n configureFarmCache,\n createFarmCacheKey,\n getFarmDataCache,\n normalizeRevalidatePath,\n} from \"../cache\";\nexport { createFarmLocaleCookie, getFarmLocaleVaryHeaders } from \"../i18n/resolver\";\nexport {\n localizeFarmHref,\n localizeFarmPathname,\n stripFarmLocaleFromPathname,\n} from \"../i18n/routing\";\nexport { addMetadataImageReference, mergeMetadata, renderMetadataHead } from \"../metadata\";\nexport {\n applyProductionMiddlewareHeaders,\n createProductionMiddlewareRunner,\n} from \"../middleware/production-runtime\";\nexport { _runWithMiddlewareContext, _runWithMiddlewareData } from \"../middleware/server\";\nexport {\n getFarmRedirectError,\n isFarmNotFoundError,\n isFarmRedirectError,\n} from \"../navigation-errors\";\nexport { configureFarmObservability, emitFarmEvent } from \"../observability\";\nexport { resolveFarmRouteContext, withFarmRouteContext } from \"../route-context\";\nexport {\n manageFarmDocumentPreloads,\n manageFarmHtmlPreloads,\n manageFarmLinkHeaderPreloads,\n reportFarmPreloadWarnings,\n} from \"../preload\";\n\nexport function appendFarmLinkHeader(headers: Headers, value: string): void {\n const current = headers.get(\"Link\");\n if (!current) {\n headers.set(\"Link\", value);\n return;\n }\n if (current !== value && !current.endsWith(`, ${value}`)) {\n headers.set(\"Link\", `${current}, ${value}`);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/production-lifecycle.ts","../../src/nitro/production-runtime.ts"],"sourcesContent":["import type { ResolvedFarmServerConfig } from \"./server-http\";\n\nexport type FarmProductionLifecycleState = \"starting\" | \"ready\" | \"draining\" | \"failed\" | \"closed\";\n\nexport interface FarmProductionLifecycleOptions {\n server: ResolvedFarmServerConfig;\n start?: () => void | Promise<void>;\n close?: (reason: string) => void | Promise<void>;\n}\n\nexport interface FarmResponseCompletionContext {\n onResponseFinished?: (callback: () => void) => void;\n}\n\nexport interface FarmProductionLifecycle {\n readonly state: FarmProductionLifecycleState;\n readonly activeRequests: number;\n start(): Promise<void>;\n beginDrain(reason?: string): void;\n waitForIdle(timeoutMs?: number): Promise<boolean>;\n close(reason?: string): Promise<void>;\n handleHealthRequest(request: Request): Promise<Response | null>;\n runRequest(\n handler: () => Response | Promise<Response>,\n context?: FarmResponseCompletionContext,\n ): Promise<Response>;\n}\n\nexport function createFarmProductionLifecycle(\n options: FarmProductionLifecycleOptions,\n): FarmProductionLifecycle {\n let state: FarmProductionLifecycleState = \"starting\";\n let activeRequests = 0;\n let startPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n const idleWaiters = new Set<() => void>();\n\n const notifyIdle = () => {\n if (activeRequests !== 0) return;\n for (const resolve of idleWaiters) resolve();\n idleWaiters.clear();\n };\n\n const start = async () => {\n if (state === \"ready\") return;\n if (startPromise) return startPromise;\n if (state === \"draining\" || state === \"closed\") {\n throw new Error(\"Farm production runtime is shutting down\");\n }\n if (state === \"failed\") {\n throw new Error(\"Farm production runtime failed to start\");\n }\n\n startPromise = Promise.resolve()\n .then(() => options.start?.())\n .then(\n () => {\n if (state === \"starting\") state = \"ready\";\n },\n (error) => {\n state = \"failed\";\n throw error;\n },\n );\n return startPromise;\n };\n\n const beginDrain = (_reason = \"production-server-draining\") => {\n if (state === \"closed\" || state === \"failed\") return;\n state = \"draining\";\n };\n\n const waitForIdle = async (\n timeoutMs = options.server.gracefulShutdownTimeout,\n ): Promise<boolean> => {\n if (activeRequests === 0) return true;\n\n return await new Promise<boolean>((resolve) => {\n let settled = false;\n const finish = (drained: boolean) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n idleWaiters.delete(onIdle);\n resolve(drained);\n };\n const onIdle = () => finish(true);\n const timeout = setTimeout(() => finish(false), timeoutMs);\n timeout.unref?.();\n idleWaiters.add(onIdle);\n });\n };\n\n const close = async (reason = \"production-server-closed\") => {\n if (closePromise) return closePromise;\n beginDrain(reason);\n closePromise = Promise.resolve()\n .then(() => options.close?.(reason))\n .then(\n () => {\n state = \"closed\";\n },\n (error) => {\n state = \"closed\";\n throw error;\n },\n );\n return closePromise;\n };\n\n const handleHealthRequest = async (request: Request): Promise<Response | null> => {\n const health = options.server.health;\n if (!health.enabled) return null;\n\n const pathname = new URL(request.url).pathname.replace(/\\/+$/, \"\") || \"/\";\n const isLiveness = pathname === health.livenessPath;\n const isReadiness = pathname === health.readinessPath;\n if (!isLiveness && !isReadiness) return null;\n\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return new Response(null, {\n status: 405,\n headers: createHealthHeaders({ allow: \"GET, HEAD\" }),\n });\n }\n\n if (isReadiness && state === \"starting\") {\n try {\n await start();\n } catch {\n // The readiness response below intentionally does not expose startup details.\n }\n }\n\n const healthy = isLiveness ? state !== \"failed\" && state !== \"closed\" : state === \"ready\";\n const body =\n request.method === \"HEAD\" ? null : JSON.stringify({ status: healthy ? \"ok\" : \"unavailable\" });\n return new Response(body, {\n status: healthy ? 200 : 503,\n headers: createHealthHeaders(healthy ? undefined : { retryAfter: \"1\" }),\n });\n };\n\n const runRequest = async (\n handler: () => Response | Promise<Response>,\n context: FarmResponseCompletionContext = {},\n ): Promise<Response> => {\n if (state === \"draining\" || state === \"closed\") return createDrainingResponse();\n await start();\n if (state !== \"ready\") return createDrainingResponse();\n\n activeRequests++;\n let finished = false;\n const finish = () => {\n if (finished) return;\n finished = true;\n activeRequests--;\n notifyIdle();\n };\n\n try {\n const response = await handler();\n return trackResponseCompletion(response, finish, context.onResponseFinished);\n } catch (error) {\n finish();\n throw error;\n }\n };\n\n return {\n get state() {\n return state;\n },\n get activeRequests() {\n return activeRequests;\n },\n start,\n beginDrain,\n waitForIdle,\n close,\n handleHealthRequest,\n runRequest,\n };\n}\n\nfunction createHealthHeaders(options: { allow?: string; retryAfter?: string } = {}): Headers {\n const headers = new Headers({\n \"cache-control\": \"no-store\",\n \"content-type\": \"application/json; charset=utf-8\",\n \"x-content-type-options\": \"nosniff\",\n });\n if (options.allow) headers.set(\"allow\", options.allow);\n if (options.retryAfter) headers.set(\"retry-after\", options.retryAfter);\n return headers;\n}\n\nfunction createDrainingResponse(): Response {\n return new Response(\"Service Unavailable\", {\n status: 503,\n headers: {\n \"cache-control\": \"no-store\",\n connection: \"close\",\n \"content-type\": \"text/plain; charset=utf-8\",\n \"retry-after\": \"1\",\n \"x-content-type-options\": \"nosniff\",\n },\n });\n}\n\nfunction trackResponseCompletion(\n response: Response,\n finish: () => void,\n onResponseFinished?: (callback: () => void) => void,\n): Response {\n if (onResponseFinished) {\n try {\n onResponseFinished(finish);\n return response;\n } catch {\n // Fall through to Web Stream tracking when an adapter rejects registration.\n }\n }\n\n if (!response.body || response.bodyUsed || response.body.locked) {\n finish();\n return response;\n }\n\n const reader = response.body.getReader();\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const result = await reader.read();\n if (result.done) {\n finish();\n controller.close();\n return;\n }\n controller.enqueue(result.value);\n } catch (error) {\n finish();\n controller.error(error);\n }\n },\n async cancel(reason) {\n try {\n await reader.cancel(reason);\n } finally {\n finish();\n }\n },\n });\n\n return new Response(body, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n}\n","export { _runWithAfterRequest } from \"../after\";\nexport {\n bufferFarmRequestBody,\n createFarmRequestBodyErrorResponse,\n resolveFarmServerConfig,\n} from \"../server-http\";\nexport { createFarmProductionLifecycle } from \"../production-lifecycle\";\nexport { _runWithCurrentRequest, getCurrentRequest } from \"../server/request\";\nexport {\n configureFarmCache,\n createFarmCacheKey,\n getFarmDataCache,\n normalizeRevalidatePath,\n} from \"../cache\";\nexport { createFarmLocaleCookie, getFarmLocaleVaryHeaders } from \"../i18n/resolver\";\nexport {\n localizeFarmHref,\n localizeFarmPathname,\n stripFarmLocaleFromPathname,\n} from \"../i18n/routing\";\nexport { addMetadataImageReference, mergeMetadata, renderMetadataHead } from \"../metadata\";\nexport {\n applyProductionMiddlewareHeaders,\n createProductionMiddlewareRunner,\n} from \"../middleware/production-runtime\";\nexport { _runWithMiddlewareContext, _runWithMiddlewareData } from \"../middleware/server\";\nexport {\n getFarmRedirectError,\n isFarmNotFoundError,\n isFarmRedirectError,\n} from \"../navigation-errors\";\nexport { configureFarmObservability, emitFarmEvent } from \"../observability\";\nexport { resolveFarmRouteContext, withFarmRouteContext } from \"../route-context\";\nexport { _setDefaultFarmThemeConfig, getTheme } from \"../theme/server\";\nexport { applyFarmThemeDocument, createFarmThemeDocumentParts } from \"../theme/server-runtime\";\nexport {\n manageFarmDocumentPreloads,\n manageFarmHtmlPreloads,\n manageFarmLinkHeaderPreloads,\n reportFarmPreloadWarnings,\n} from \"../preload\";\n\nexport function appendFarmLinkHeader(headers: Headers, value: string): void {\n const current = headers.get(\"Link\");\n if (!current) {\n headers.set(\"Link\", value);\n return;\n }\n if (current !== value && !current.endsWith(`, ${value}`)) {\n headers.set(\"Link\", `${current}, ${value}`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- import { w as Metadata } from './client-plugins-CbRum1fj.js';
1
+ import { w as Metadata } from './client-plugins-DuuleQKk.js';
2
2
 
3
3
  type MetadataImageKind = "opengraph" | "twitter";
4
4
  interface FarmMetadataImageReference {
@@ -1,4 +1,4 @@
1
- import { w as Metadata } from './client-plugins-QQntVkrv.mjs';
1
+ import { w as Metadata } from './client-plugins-CCilIb_G.mjs';
2
2
 
3
3
  type MetadataImageKind = "opengraph" | "twitter";
4
4
  interface FarmMetadataImageReference {
@@ -1,9 +1,9 @@
1
- import { cU as MiddlewareChain, cZ as RateLimitStorage, c_ as RateLimitStatus, c$ as MemoryRateLimitStorageOptions, cP as MiddlewareContext, a2 as FarmMiddlewareConfig, cQ as MiddlewareFunction, dx as MiddlewareConfig, M as MiddlewareProps } from './client-plugins-QQntVkrv.mjs';
2
- export { cV as CookieJar, cW as CookieOptions, d1 as MiddlewareResult, cT as MiddlewareStore, d0 as NextFunction, cX as RateLimitConfig, cY as RateLimitIncrementResult, a1 as ReadonlyMiddlewareStore, cR as RequestMiddleware, cS as RequestMiddlewareContext } from './client-plugins-QQntVkrv.mjs';
1
+ import { cU as MiddlewareChain, cZ as RateLimitStorage, c_ as RateLimitStatus, c$ as MemoryRateLimitStorageOptions, cP as MiddlewareContext, a2 as FarmMiddlewareConfig, cQ as MiddlewareFunction, dx as MiddlewareConfig, M as MiddlewareProps } from './client-plugins-CCilIb_G.mjs';
2
+ export { cV as CookieJar, cW as CookieOptions, d1 as MiddlewareResult, cT as MiddlewareStore, d0 as NextFunction, cX as RateLimitConfig, cY as RateLimitIncrementResult, a1 as ReadonlyMiddlewareStore, cR as RequestMiddleware, cS as RequestMiddlewareContext } from './client-plugins-CCilIb_G.mjs';
3
3
  import { IncomingMessage, ServerResponse } from 'http';
4
4
  import { ViteDevServer, Plugin } from 'vite';
5
5
  import { R as ResolvedFarmI18nConfig } from './types-BMxWr97v.mjs';
6
- export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner, g as getMiddlewareContext, d as getMiddlewareData, e as getMiddlewareValue } from './production-runtime-Bxua86uR.mjs';
6
+ export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner, g as getMiddlewareContext, d as getMiddlewareData, e as getMiddlewareValue } from './production-runtime-C4cO3esK.mjs';
7
7
  import './plugin-BJDf43dc.mjs';
8
8
  import 'react';
9
9
  import './types-D1A6-XvH.mjs';
@@ -22,6 +22,7 @@ import './server-action-security.mjs';
22
22
  import './server-fn-error-DDh14a0V.mjs';
23
23
  import './image-config-Duob7wER.mjs';
24
24
  import './cache.mjs';
25
+ import './types-CsR8fpgF.mjs';
25
26
  import './route-runtime-DoOHzCAD.mjs';
26
27
  import './font.mjs';
27
28
 
@@ -1,9 +1,9 @@
1
- import { cU as MiddlewareChain, cZ as RateLimitStorage, c_ as RateLimitStatus, c$ as MemoryRateLimitStorageOptions, cP as MiddlewareContext, a2 as FarmMiddlewareConfig, cQ as MiddlewareFunction, dx as MiddlewareConfig, M as MiddlewareProps } from './client-plugins-CbRum1fj.js';
2
- export { cV as CookieJar, cW as CookieOptions, d1 as MiddlewareResult, cT as MiddlewareStore, d0 as NextFunction, cX as RateLimitConfig, cY as RateLimitIncrementResult, a1 as ReadonlyMiddlewareStore, cR as RequestMiddleware, cS as RequestMiddlewareContext } from './client-plugins-CbRum1fj.js';
1
+ import { cU as MiddlewareChain, cZ as RateLimitStorage, c_ as RateLimitStatus, c$ as MemoryRateLimitStorageOptions, cP as MiddlewareContext, a2 as FarmMiddlewareConfig, cQ as MiddlewareFunction, dx as MiddlewareConfig, M as MiddlewareProps } from './client-plugins-DuuleQKk.js';
2
+ export { cV as CookieJar, cW as CookieOptions, d1 as MiddlewareResult, cT as MiddlewareStore, d0 as NextFunction, cX as RateLimitConfig, cY as RateLimitIncrementResult, a1 as ReadonlyMiddlewareStore, cR as RequestMiddleware, cS as RequestMiddlewareContext } from './client-plugins-DuuleQKk.js';
3
3
  import { IncomingMessage, ServerResponse } from 'http';
4
4
  import { ViteDevServer, Plugin } from 'vite';
5
5
  import { R as ResolvedFarmI18nConfig } from './types-BMxWr97v.js';
6
- export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner, g as getMiddlewareContext, d as getMiddlewareData, e as getMiddlewareValue } from './production-runtime-CZqXjRVi.js';
6
+ export { _ as _runWithMiddlewareContext, b as _runWithMiddlewareData, a as applyProductionMiddlewareHeaders, c as createProductionMiddlewareRunner, g as getMiddlewareContext, d as getMiddlewareData, e as getMiddlewareValue } from './production-runtime-DrEy8kBO.js';
7
7
  import './plugin-BJDf43dc.js';
8
8
  import 'react';
9
9
  import './types-D1A6-XvH.js';
@@ -22,6 +22,7 @@ import './server-action-security.js';
22
22
  import './server-fn-error-DDh14a0V.js';
23
23
  import './image-config-Duob7wER.js';
24
24
  import './cache.js';
25
+ import './types-CsR8fpgF.js';
25
26
  import './route-runtime-DoOHzCAD.js';
26
27
  import './font.js';
27
28