@farm.js/core 0.1.0-beta.60 → 0.1.0-beta.62

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 (101) hide show
  1. package/dist/api/route-manager.cjs.map +1 -1
  2. package/dist/api/route-manager.mjs +3 -3
  3. package/dist/api/runtime.cjs.map +1 -1
  4. package/dist/api/runtime.mjs +2 -2
  5. package/dist/api.cjs.map +1 -1
  6. package/dist/api.mjs +4 -4
  7. package/dist/{chunk-AZ7YUVNR.mjs → chunk-5NEFU3S3.mjs} +2 -2
  8. package/dist/{chunk-HRIVGIZJ.mjs → chunk-6HUGGEFE.mjs} +2 -2
  9. package/dist/{chunk-G6OZHT7C.mjs → chunk-BYBYZSQ4.mjs} +3 -3
  10. package/dist/{chunk-P5SUT2TG.mjs → chunk-C7T5DENI.mjs} +12 -12
  11. package/dist/{chunk-4DCGM2BW.mjs → chunk-DD7QQZZO.mjs} +2 -1
  12. package/dist/chunk-DD7QQZZO.mjs.map +1 -0
  13. package/dist/{chunk-DN5O4FJK.mjs → chunk-HSHHUDHL.mjs} +2 -2
  14. package/dist/{chunk-P7QDS5AT.mjs → chunk-HUATZB2U.mjs} +2 -2
  15. package/dist/{chunk-IOTXDUO3.mjs → chunk-I2VV3JAC.mjs} +8 -4
  16. package/dist/chunk-I2VV3JAC.mjs.map +1 -0
  17. package/dist/{chunk-IWR7S3AN.mjs → chunk-ITSBK56Q.mjs} +2 -2
  18. package/dist/{chunk-I7O53NAU.mjs → chunk-KFBUUMC7.mjs} +2 -2
  19. package/dist/{chunk-4IVNW5QD.mjs → chunk-M5PSI4YG.mjs} +7 -6
  20. package/dist/chunk-M5PSI4YG.mjs.map +1 -0
  21. package/dist/{chunk-F3HQMJEF.mjs → chunk-O7JLZXUV.mjs} +2 -2
  22. package/dist/{chunk-V4AVEU3D.mjs → chunk-PFMBMZP7.mjs} +2 -2
  23. package/dist/{chunk-IZ3MFWMA.mjs → chunk-QAITEWX3.mjs} +2 -2
  24. package/dist/{chunk-IZ3MFWMA.mjs.map → chunk-QAITEWX3.mjs.map} +1 -1
  25. package/dist/{chunk-ILT7MCIM.mjs → chunk-SDCCR55N.mjs} +2 -2
  26. package/dist/{chunk-HX6EW6KA.mjs → chunk-VGOJAATN.mjs} +2 -2
  27. package/dist/{chunk-26MEOJQB.mjs → chunk-WAFLTUHT.mjs} +7 -7
  28. package/dist/{chunk-RHIFZZUI.mjs → chunk-X6WJFY7U.mjs} +7 -2
  29. package/dist/{chunk-RHIFZZUI.mjs.map → chunk-X6WJFY7U.mjs.map} +1 -1
  30. package/dist/client/lifecycle.mjs +2 -2
  31. package/dist/client-plugins.cjs +1 -1
  32. package/dist/client-plugins.cjs.map +1 -1
  33. package/dist/client-plugins.mjs +2 -2
  34. package/dist/client.cjs +1 -1
  35. package/dist/client.cjs.map +1 -1
  36. package/dist/client.mjs +2 -2
  37. package/dist/{devtools-ICDUIMLX.mjs → devtools-2FEBZ7RN.mjs} +4 -3
  38. package/dist/{devtools-ICDUIMLX.mjs.map → devtools-2FEBZ7RN.mjs.map} +1 -1
  39. package/dist/docs.mjs +4 -3
  40. package/dist/headers.cjs.map +1 -1
  41. package/dist/headers.mjs +2 -2
  42. package/dist/index.cjs +39 -31
  43. package/dist/index.cjs.map +1 -1
  44. package/dist/index.mjs +18 -18
  45. package/dist/internal/build-runtime.cjs +38 -40
  46. package/dist/internal/build-runtime.cjs.map +1 -1
  47. package/dist/internal/build-runtime.mjs +13 -13
  48. package/dist/internal/client-runtime.cjs +2 -1
  49. package/dist/internal/client-runtime.cjs.map +1 -1
  50. package/dist/internal/client-runtime.mjs +3 -3
  51. package/dist/internal/config-runtime.cjs.map +1 -1
  52. package/dist/internal/config-runtime.mjs +3 -2
  53. package/dist/internal/production-runtime.cjs +9 -3
  54. package/dist/internal/production-runtime.cjs.map +1 -1
  55. package/dist/internal/production-runtime.mjs +7 -7
  56. package/dist/middleware.cjs.map +1 -1
  57. package/dist/middleware.mjs +5 -5
  58. package/dist/{nitro-NN6F5OUK.mjs → nitro-PXQCWM4D.mjs} +3 -2
  59. package/dist/{nitro-NN6F5OUK.mjs.map → nitro-PXQCWM4D.mjs.map} +1 -1
  60. package/dist/plugin.cjs +40 -35
  61. package/dist/plugin.cjs.map +1 -1
  62. package/dist/plugin.mjs +10 -10
  63. package/dist/request.cjs.map +1 -1
  64. package/dist/request.mjs +1 -1
  65. package/dist/server.cjs +41 -26
  66. package/dist/server.cjs.map +1 -1
  67. package/dist/server.mjs +11 -11
  68. package/dist/testing.cjs +1 -0
  69. package/dist/testing.cjs.map +1 -1
  70. package/dist/testing.mjs +4 -4
  71. package/dist/theme/server.cjs +7 -12
  72. package/dist/theme/server.cjs.map +1 -1
  73. package/dist/theme/server.d.mts +2 -2
  74. package/dist/theme/server.d.ts +2 -2
  75. package/dist/theme/server.mjs +2 -2
  76. package/dist/version.cjs +1 -1
  77. package/dist/version.cjs.map +1 -1
  78. package/dist/version.mjs +1 -1
  79. package/dist/vite.cjs +40 -35
  80. package/dist/vite.cjs.map +1 -1
  81. package/dist/vite.mjs +10 -10
  82. package/dist/workflows.cjs +24 -3
  83. package/dist/workflows.cjs.map +1 -1
  84. package/dist/workflows.mjs +2 -1
  85. package/package.json +1 -1
  86. package/dist/chunk-4DCGM2BW.mjs.map +0 -1
  87. package/dist/chunk-4IVNW5QD.mjs.map +0 -1
  88. package/dist/chunk-IOTXDUO3.mjs.map +0 -1
  89. /package/dist/{chunk-AZ7YUVNR.mjs.map → chunk-5NEFU3S3.mjs.map} +0 -0
  90. /package/dist/{chunk-HRIVGIZJ.mjs.map → chunk-6HUGGEFE.mjs.map} +0 -0
  91. /package/dist/{chunk-G6OZHT7C.mjs.map → chunk-BYBYZSQ4.mjs.map} +0 -0
  92. /package/dist/{chunk-P5SUT2TG.mjs.map → chunk-C7T5DENI.mjs.map} +0 -0
  93. /package/dist/{chunk-DN5O4FJK.mjs.map → chunk-HSHHUDHL.mjs.map} +0 -0
  94. /package/dist/{chunk-P7QDS5AT.mjs.map → chunk-HUATZB2U.mjs.map} +0 -0
  95. /package/dist/{chunk-IWR7S3AN.mjs.map → chunk-ITSBK56Q.mjs.map} +0 -0
  96. /package/dist/{chunk-I7O53NAU.mjs.map → chunk-KFBUUMC7.mjs.map} +0 -0
  97. /package/dist/{chunk-F3HQMJEF.mjs.map → chunk-O7JLZXUV.mjs.map} +0 -0
  98. /package/dist/{chunk-V4AVEU3D.mjs.map → chunk-PFMBMZP7.mjs.map} +0 -0
  99. /package/dist/{chunk-ILT7MCIM.mjs.map → chunk-SDCCR55N.mjs.map} +0 -0
  100. /package/dist/{chunk-HX6EW6KA.mjs.map → chunk-VGOJAATN.mjs.map} +0 -0
  101. /package/dist/{chunk-26MEOJQB.mjs.map → chunk-WAFLTUHT.mjs.map} +0 -0
package/dist/plugin.mjs CHANGED
@@ -6,13 +6,12 @@ import {
6
6
  import "./chunk-RQ633A5I.mjs";
7
7
  import {
8
8
  farmPlugin
9
- } from "./chunk-P5SUT2TG.mjs";
9
+ } from "./chunk-C7T5DENI.mjs";
10
10
  import "./chunk-MD4TKIKU.mjs";
11
11
  import "./chunk-ZVDDKVZY.mjs";
12
12
  import "./chunk-AMZZCRQ7.mjs";
13
13
  import "./chunk-6ZXIQSXE.mjs";
14
14
  import "./chunk-V6WE6JSZ.mjs";
15
- import "./chunk-4DCGM2BW.mjs";
16
15
  import "./chunk-3XNTL3FQ.mjs";
17
16
  import "./chunk-CGIXMLSY.mjs";
18
17
  import "./chunk-USWZZUEH.mjs";
@@ -27,29 +26,30 @@ import "./chunk-GY2STC2S.mjs";
27
26
  import "./chunk-JHCNZLFT.mjs";
28
27
  import "./chunk-A5VG2BDG.mjs";
29
28
  import "./chunk-7FBJLMQH.mjs";
30
- import "./chunk-IOTXDUO3.mjs";
29
+ import "./chunk-I2VV3JAC.mjs";
30
+ import "./chunk-DD7QQZZO.mjs";
31
31
  import "./chunk-RS5Z5M26.mjs";
32
32
  import "./chunk-WORFTBLU.mjs";
33
33
  import "./chunk-7HO6AEOP.mjs";
34
- import "./chunk-4IVNW5QD.mjs";
34
+ import "./chunk-M5PSI4YG.mjs";
35
35
  import "./chunk-H53KVQUU.mjs";
36
36
  import "./chunk-QKVUNGAH.mjs";
37
37
  import "./chunk-VEMZQ66A.mjs";
38
38
  import "./chunk-USLBO77X.mjs";
39
- import "./chunk-F3HQMJEF.mjs";
40
- import "./chunk-P7QDS5AT.mjs";
39
+ import "./chunk-O7JLZXUV.mjs";
40
+ import "./chunk-HUATZB2U.mjs";
41
41
  import "./chunk-35SSRS5K.mjs";
42
42
  import "./chunk-E6EPN5BT.mjs";
43
- import "./chunk-IWR7S3AN.mjs";
43
+ import "./chunk-ITSBK56Q.mjs";
44
44
  import "./chunk-HO33MT4X.mjs";
45
45
  import "./chunk-FQYDHKKU.mjs";
46
46
  import "./chunk-SXWF4QRU.mjs";
47
47
  import "./chunk-GIELMNBG.mjs";
48
48
  import "./chunk-YB7QPRM4.mjs";
49
49
  import "./chunk-QN4DQGY7.mjs";
50
- import "./chunk-HX6EW6KA.mjs";
50
+ import "./chunk-VGOJAATN.mjs";
51
51
  import "./chunk-YTMDIHQN.mjs";
52
- import "./chunk-RHIFZZUI.mjs";
52
+ import "./chunk-X6WJFY7U.mjs";
53
53
  import "./chunk-LM2YNO4U.mjs";
54
54
  import "./chunk-GQVQESLY.mjs";
55
55
  import "./chunk-HKXMMPYI.mjs";
@@ -64,7 +64,7 @@ import "./chunk-RBRLLZL5.mjs";
64
64
  import "./chunk-WZ5QFROO.mjs";
65
65
  import "./chunk-7ZMKVETU.mjs";
66
66
  import "./chunk-FXG2PS27.mjs";
67
- import "./chunk-IZ3MFWMA.mjs";
67
+ import "./chunk-QAITEWX3.mjs";
68
68
  import "./chunk-CGILA3WO.mjs";
69
69
  export {
70
70
  FarmRuntimeShutdownError,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/request.ts","../src/server/request.ts","../src/server/request-bridge.ts"],"sourcesContent":["export { getCurrentRequest } from \"./server/request\";\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { FarmRequest } from \"../types\";\nimport { _setCurrentRequestResolver } from \"./request-bridge\";\n\nconst REQUEST_STORAGE_KEY = Symbol.for(\"@farm.js/core/request-storage\");\n\nfunction getRequestStore(): AsyncLocalStorage<Request> {\n const runtime = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n const existing = runtime[REQUEST_STORAGE_KEY];\n if (existing instanceof AsyncLocalStorage) {\n return existing as AsyncLocalStorage<Request>;\n }\n\n const storage = new AsyncLocalStorage<Request>();\n runtime[REQUEST_STORAGE_KEY] = storage;\n return storage;\n}\n\nconst requestStore = getRequestStore();\n\n_setCurrentRequestResolver(() => requestStore.getStore());\n\nexport function createWebRequestFromFarmRequest(req: FarmRequest): Request {\n const forwardedHost = req.headers[\"x-forwarded-host\"];\n const host = Array.isArray(forwardedHost)\n ? forwardedHost[0]\n : forwardedHost || req.headers.host || \"localhost\";\n const forwardedProto = req.headers[\"x-forwarded-proto\"];\n const proto = Array.isArray(forwardedProto) ? forwardedProto[0] : forwardedProto || \"http\";\n const fullUrl = new URL(req.url || \"/\", `${proto}://${host}`).toString();\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n headers.append(key, item);\n }\n continue;\n }\n\n headers.set(key, value);\n }\n\n return new Request(fullUrl, {\n method: req.method,\n headers,\n });\n}\n\nexport async function _runWithCurrentRequest<T>(\n request: Request,\n fn: () => Promise<T> | T,\n): Promise<T> {\n return requestStore.run(request, fn);\n}\n\nexport function getCurrentRequest(): Request {\n const request = requestStore.getStore();\n if (!request) {\n throw new Error(\n \"No current request is available. getCurrentRequest() can only be used during server rendering.\",\n );\n }\n\n return request;\n}\n","type CurrentRequestResolver = () => Request | undefined;\n\nconst CURRENT_REQUEST_RESOLVER_KEY = Symbol.for(\"farm.currentRequestResolver\");\n\ntype GlobalWithCurrentRequestResolver = typeof globalThis & {\n [CURRENT_REQUEST_RESOLVER_KEY]?: CurrentRequestResolver;\n};\n\nfunction getGlobalState(): GlobalWithCurrentRequestResolver {\n return globalThis as GlobalWithCurrentRequestResolver;\n}\n\nexport function _setCurrentRequestResolver(resolver: CurrentRequestResolver | undefined): void {\n getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY] = resolver;\n}\n\nexport function _resolveCurrentRequest(): Request | undefined {\n return getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY]?.();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,8BAAkC;;;ACElC,IAAM,+BAA+B,uBAAO,IAAI,6BAA6B;AAM7E,SAAS,iBAAmD;AAC1D,SAAO;AACT;AAFS;AAIF,SAAS,2BAA2B,UAAoD;AAC7F,iBAAe,EAAE,4BAA4B,IAAI;AACnD;AAFgB;;;ADRhB,IAAM,sBAAsB,uBAAO,IAAI,+BAA+B;AAEtE,SAAS,kBAA8C;AACrD,QAAM,UAAU;AAChB,QAAM,WAAW,QAAQ,mBAAmB;AAC5C,MAAI,oBAAoB,2CAAmB;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,IAAI,0CAA2B;AAC/C,UAAQ,mBAAmB,IAAI;AAC/B,SAAO;AACT;AAVS;AAYT,IAAM,eAAe,gBAAgB;AAErC,2BAA2B,MAAM,aAAa,SAAS,CAAC;AAwCjD,SAAS,oBAA6B;AAC3C,QAAM,UAAU,aAAa,SAAS;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AATgB;","names":[]}
1
+ {"version":3,"sources":["../src/request.ts","../src/server/request.ts","../src/server/request-bridge.ts"],"sourcesContent":["export { getCurrentRequest } from \"./server/request\";\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { FarmRequest } from \"../types\";\nimport { _setCurrentRequestResolver } from \"./request-bridge\";\n\nconst REQUEST_STORAGE_KEY = Symbol.for(\"@farm.js/core/request-storage\");\n\nfunction getRequestStore(): AsyncLocalStorage<Request> {\n const runtime = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\n const existing = runtime[REQUEST_STORAGE_KEY];\n if (existing instanceof AsyncLocalStorage) {\n return existing as AsyncLocalStorage<Request>;\n }\n\n const storage = new AsyncLocalStorage<Request>();\n runtime[REQUEST_STORAGE_KEY] = storage;\n return storage;\n}\n\nconst requestStore = getRequestStore();\n\n_setCurrentRequestResolver(() => requestStore.getStore());\n\nexport function createWebRequestFromFarmRequest(req: FarmRequest): Request {\n const forwardedHost = req.headers[\"x-forwarded-host\"];\n const host = Array.isArray(forwardedHost)\n ? forwardedHost[0]\n : forwardedHost || req.headers.host || \"localhost\";\n const forwardedProto = req.headers[\"x-forwarded-proto\"];\n const proto = Array.isArray(forwardedProto) ? forwardedProto[0] : forwardedProto || \"http\";\n const fullUrl = new URL(req.url || \"/\", `${proto}://${host}`).toString();\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value == null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n headers.append(key, item);\n }\n continue;\n }\n\n headers.set(key, value);\n }\n\n return new Request(fullUrl, {\n method: req.method,\n headers,\n });\n}\n\nexport async function _runWithCurrentRequest<T>(\n request: Request,\n fn: () => Promise<T> | T,\n): Promise<T> {\n return requestStore.run(request, fn);\n}\n\nexport function getCurrentRequest(): Request {\n const request = requestStore.getStore();\n if (!request) {\n throw new Error(\n \"No current request is available. getCurrentRequest() can only be used during server rendering.\",\n );\n }\n\n return request;\n}\n\n// Some runtimes (StackBlitz WebContainers among them) lose AsyncLocalStorage\n// context across async boundaries mid-render. Callers whose feature can\n// degrade gracefully should use this instead of getCurrentRequest() so a\n// missing store never turns into a 500.\nexport function getCurrentRequestOrNull(): Request | null {\n return requestStore.getStore() ?? null;\n}\n","type CurrentRequestResolver = () => Request | undefined;\n\nconst CURRENT_REQUEST_RESOLVER_KEY = Symbol.for(\"farm.currentRequestResolver\");\n\ntype GlobalWithCurrentRequestResolver = typeof globalThis & {\n [CURRENT_REQUEST_RESOLVER_KEY]?: CurrentRequestResolver;\n};\n\nfunction getGlobalState(): GlobalWithCurrentRequestResolver {\n return globalThis as GlobalWithCurrentRequestResolver;\n}\n\nexport function _setCurrentRequestResolver(resolver: CurrentRequestResolver | undefined): void {\n getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY] = resolver;\n}\n\nexport function _resolveCurrentRequest(): Request | undefined {\n return getGlobalState()[CURRENT_REQUEST_RESOLVER_KEY]?.();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,8BAAkC;;;ACElC,IAAM,+BAA+B,uBAAO,IAAI,6BAA6B;AAM7E,SAAS,iBAAmD;AAC1D,SAAO;AACT;AAFS;AAIF,SAAS,2BAA2B,UAAoD;AAC7F,iBAAe,EAAE,4BAA4B,IAAI;AACnD;AAFgB;;;ADRhB,IAAM,sBAAsB,uBAAO,IAAI,+BAA+B;AAEtE,SAAS,kBAA8C;AACrD,QAAM,UAAU;AAChB,QAAM,WAAW,QAAQ,mBAAmB;AAC5C,MAAI,oBAAoB,2CAAmB;AACzC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,IAAI,0CAA2B;AAC/C,UAAQ,mBAAmB,IAAI;AAC/B,SAAO;AACT;AAVS;AAYT,IAAM,eAAe,gBAAgB;AAErC,2BAA2B,MAAM,aAAa,SAAS,CAAC;AAwCjD,SAAS,oBAA6B;AAC3C,QAAM,UAAU,aAAa,SAAS;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AATgB;","names":[]}
package/dist/request.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getCurrentRequest
3
- } from "./chunk-RHIFZZUI.mjs";
3
+ } from "./chunk-X6WJFY7U.mjs";
4
4
  import "./chunk-LM2YNO4U.mjs";
5
5
  import "./chunk-CGILA3WO.mjs";
6
6
  export {
package/dist/server.cjs CHANGED
@@ -617,6 +617,31 @@ var init_server_http = __esm({
617
617
  }
618
618
  });
619
619
 
620
+ // src/search-params.ts
621
+ function searchParamsToObject(searchParams) {
622
+ const output = {};
623
+ searchParams.forEach((value, key) => {
624
+ if (key === "__proto__" || key === "constructor" || key === "prototype") return;
625
+ const existing = output[key];
626
+ if (existing !== void 0) {
627
+ if (Array.isArray(existing)) {
628
+ existing.push(value);
629
+ } else {
630
+ output[key] = [existing, value];
631
+ }
632
+ } else {
633
+ output[key] = value;
634
+ }
635
+ });
636
+ return output;
637
+ }
638
+ var init_search_params = __esm({
639
+ "src/search-params.ts"() {
640
+ "use strict";
641
+ __name(searchParamsToObject, "searchParamsToObject");
642
+ }
643
+ });
644
+
620
645
  // src/utils/decode.ts
621
646
  function decodeRouteSegment(segment) {
622
647
  try {
@@ -1205,7 +1230,8 @@ import { H3 } from "h3";
1205
1230
  import { runTask } from "nitro/runtime";
1206
1231
  import {
1207
1232
  createFarmRequestBodyErrorResponse,
1208
- readFarmRequestBody
1233
+ readFarmRequestBody,
1234
+ searchParamsToObject
1209
1235
  } from "@farm.js/core/internal/production-runtime";
1210
1236
 
1211
1237
  const route = ${JSON.stringify(config.route)};
@@ -1250,7 +1276,7 @@ function verifySecret(event) {
1250
1276
 
1251
1277
  async function readPayload(event) {
1252
1278
  if (event.req.method === "GET" || event.req.method === "HEAD") {
1253
- return Object.fromEntries(event.url.searchParams.entries());
1279
+ return searchParamsToObject(event.url.searchParams);
1254
1280
  }
1255
1281
  const bytes = await readFarmRequestBody(event.req, bodySizeLimit);
1256
1282
  const text = new TextDecoder().decode(bytes);
@@ -1312,7 +1338,7 @@ function toWorkflowMetadata(workflow) {
1312
1338
  async function readWorkflowPayload(request, bodySizeLimit) {
1313
1339
  const url = new URL(request.url);
1314
1340
  if (request.method === "GET" || request.method === "HEAD") {
1315
- return Object.fromEntries(url.searchParams.entries());
1341
+ return searchParamsToObject(url.searchParams);
1316
1342
  }
1317
1343
  const bytes = await readFarmRequestBody(request, bodySizeLimit);
1318
1344
  const text2 = new TextDecoder().decode(bytes);
@@ -1356,6 +1382,7 @@ var init_workflows = __esm({
1356
1382
  "src/workflows.ts"() {
1357
1383
  "use strict";
1358
1384
  init_server_http();
1385
+ init_search_params();
1359
1386
  init_decode();
1360
1387
  init_utils();
1361
1388
  DEFAULT_FARM_WORKFLOW_DIRS = ["src/jobs", "src/workflows", "src/cron"];
@@ -18301,6 +18328,10 @@ function getCurrentRequest() {
18301
18328
  return request;
18302
18329
  }
18303
18330
  __name(getCurrentRequest, "getCurrentRequest");
18331
+ function getCurrentRequestOrNull() {
18332
+ return requestStore.getStore() ?? null;
18333
+ }
18334
+ __name(getCurrentRequestOrNull, "getCurrentRequestOrNull");
18304
18335
 
18305
18336
  // src/server/renderer.ts
18306
18337
  init_cache();
@@ -18638,25 +18669,7 @@ __name(escapeAttribute, "escapeAttribute");
18638
18669
 
18639
18670
  // src/server/renderer.ts
18640
18671
  init_route_context();
18641
-
18642
- // src/search-params.ts
18643
- function searchParamsToObject(searchParams) {
18644
- const output = {};
18645
- searchParams.forEach((value, key) => {
18646
- const existing = output[key];
18647
- if (existing !== void 0) {
18648
- if (Array.isArray(existing)) {
18649
- existing.push(value);
18650
- } else {
18651
- output[key] = [existing, value];
18652
- }
18653
- } else {
18654
- output[key] = value;
18655
- }
18656
- });
18657
- return output;
18658
- }
18659
- __name(searchParamsToObject, "searchParamsToObject");
18672
+ init_search_params();
18660
18673
 
18661
18674
  // src/deferred.ts
18662
18675
  var FARM_DEFERRED_CONTENT_TYPE = "application/x-farm-deferred+json";
@@ -21496,12 +21509,13 @@ function _setDefaultFarmThemeConfig(config, basePath = "/") {
21496
21509
  defaultThemeConfig = resolveFarmThemeConfig(config, basePath);
21497
21510
  }
21498
21511
  __name(_setDefaultFarmThemeConfig, "_setDefaultFarmThemeConfig");
21499
- function getTheme(request = getCurrentRequest()) {
21512
+ function getTheme(request = getCurrentRequestOrNull()) {
21513
+ if (!request) return defaultThemeConfig.default;
21500
21514
  return readFarmThemePreference(request, defaultThemeConfig);
21501
21515
  }
21502
21516
  __name(getTheme, "getTheme");
21503
- function getThemeSnapshot(request = getCurrentRequest()) {
21504
- const theme = readFarmThemePreference(request, defaultThemeConfig);
21517
+ function getThemeSnapshot(request = getCurrentRequestOrNull()) {
21518
+ const theme = request ? readFarmThemePreference(request, defaultThemeConfig) : defaultThemeConfig.default;
21505
21519
  return {
21506
21520
  theme,
21507
21521
  resolvedTheme: theme === "system" ? void 0 : theme,
@@ -21553,7 +21567,7 @@ _setFarmThemeServerSnapshotResolver(() => {
21553
21567
  });
21554
21568
 
21555
21569
  // package.json
21556
- var version = "0.1.0-beta.60";
21570
+ var version = "0.1.0-beta.62";
21557
21571
 
21558
21572
  // src/version.ts
21559
21573
  var FARM_VERSION = version;
@@ -26922,6 +26936,7 @@ ${FARM_DARK_VARIANT}
26922
26936
  __name(createFarmThemeCssPlugin, "createFarmThemeCssPlugin");
26923
26937
 
26924
26938
  // src/vite.ts
26939
+ init_search_params();
26925
26940
  init_observability();
26926
26941
  init_renderer();
26927
26942