@farm.js/core 0.1.17 → 0.1.19

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 (269) hide show
  1. package/dist/after.cjs +12 -225
  2. package/dist/agent-runtime.cjs +83 -2800
  3. package/dist/api/client.cjs +17 -4060
  4. package/dist/api/route-manager.cjs +34 -4354
  5. package/dist/api/runtime.cjs +29 -2696
  6. package/dist/api.cjs +88 -8434
  7. package/dist/app-markdown.cjs +39 -280
  8. package/dist/app-markdown.mjs +3 -3
  9. package/dist/cache.cjs +38 -1560
  10. package/dist/chunk-22GUSVNJ.cjs +351 -0
  11. package/dist/{chunk-EN7WTEAY.mjs → chunk-2ANEVVF7.mjs} +1 -1
  12. package/dist/chunk-2CQ74SP6.cjs +13 -0
  13. package/dist/{chunk-YD4J4XCI.mjs → chunk-2GNATDDE.mjs} +1 -1
  14. package/dist/chunk-2SJ4RQ6P.cjs +57 -0
  15. package/dist/chunk-3376ZTRC.cjs +1 -0
  16. package/dist/chunk-4PNUXIVU.cjs +472 -0
  17. package/dist/chunk-4PPEPOZZ.cjs +21 -0
  18. package/dist/chunk-4ZFL5GFN.cjs +520 -0
  19. package/dist/chunk-5OVTOKGH.cjs +65 -0
  20. package/dist/chunk-5QIKR7RR.cjs +224 -0
  21. package/dist/chunk-5ZSWG4UX.cjs +127 -0
  22. package/dist/chunk-62YJ2IEB.cjs +238 -0
  23. package/dist/chunk-6EODJYCX.cjs +183 -0
  24. package/dist/chunk-6EXBPJ24.cjs +434 -0
  25. package/dist/chunk-6QQDAAAZ.cjs +38 -0
  26. package/dist/chunk-6V4TDWEC.cjs +455 -0
  27. package/dist/chunk-72ADZ6GQ.cjs +19 -0
  28. package/dist/chunk-75BRBIFP.cjs +172 -0
  29. package/dist/{chunk-ZCNJKLA2.mjs → chunk-7BC6GAL7.mjs} +1 -1
  30. package/dist/chunk-7W3CPVXS.cjs +24 -0
  31. package/dist/chunk-A6WIQH5Z.cjs +31 -0
  32. package/dist/chunk-A777V5WU.cjs +725 -0
  33. package/dist/chunk-AFOD3LYZ.cjs +377 -0
  34. package/dist/chunk-AH7HOAQ3.cjs +151 -0
  35. package/dist/chunk-AMDMVWMI.cjs +39 -0
  36. package/dist/chunk-AORPIPNB.cjs +552 -0
  37. package/dist/chunk-ARJWXNQL.cjs +256 -0
  38. package/dist/chunk-AYJR42WX.cjs +711 -0
  39. package/dist/chunk-BBVSJVBZ.cjs +600 -0
  40. package/dist/chunk-BIDYX3SL.cjs +91 -0
  41. package/dist/chunk-BYODCJD6.cjs +663 -0
  42. package/dist/chunk-C3VRMB6H.cjs +85 -0
  43. package/dist/chunk-C5GUTBZK.cjs +173 -0
  44. package/dist/chunk-CIAGU2X4.cjs +337 -0
  45. package/dist/chunk-CMGMGHUZ.cjs +27 -0
  46. package/dist/chunk-CXP5U3RW.cjs +54 -0
  47. package/dist/chunk-D2ULAULS.cjs +166 -0
  48. package/dist/chunk-D7JTOLFK.cjs +285 -0
  49. package/dist/chunk-DVM4FKZL.cjs +169 -0
  50. package/dist/chunk-DYEJQTDN.cjs +49 -0
  51. package/dist/chunk-E2ROOWQC.cjs +2225 -0
  52. package/dist/chunk-E3UK5IIB.cjs +593 -0
  53. package/dist/chunk-EM6SBQKM.cjs +470 -0
  54. package/dist/chunk-FJSWYIR7.cjs +482 -0
  55. package/dist/chunk-FK6GO24V.cjs +54 -0
  56. package/dist/{chunk-MVIWBEJF.mjs → chunk-FVZGEVTO.mjs} +7 -7
  57. package/dist/chunk-FXUUWYAX.cjs +654 -0
  58. package/dist/chunk-G3HRIVEY.cjs +395 -0
  59. package/dist/chunk-G643DQCH.cjs +13 -0
  60. package/dist/chunk-G7HXGLEC.cjs +175 -0
  61. package/dist/chunk-GDSHDTJ4.cjs +152 -0
  62. package/dist/chunk-GPVTX3HT.cjs +1415 -0
  63. package/dist/chunk-H6G5INWM.cjs +1094 -0
  64. package/dist/{chunk-DHDVMXYK.mjs → chunk-HALDNTIV.mjs} +30 -4
  65. package/dist/chunk-HBTUGXHS.cjs +180 -0
  66. package/dist/chunk-HREOKQWT.cjs +45 -0
  67. package/dist/{chunk-5QOEPUYE.mjs → chunk-HSDL2AUR.mjs} +1 -1
  68. package/dist/chunk-I4J452B7.cjs +435 -0
  69. package/dist/chunk-I57LW5VZ.cjs +94 -0
  70. package/dist/chunk-I5YBCWQ6.cjs +40 -0
  71. package/dist/chunk-I7PUUDGY.cjs +389 -0
  72. package/dist/chunk-IAMRBF3Z.cjs +86 -0
  73. package/dist/chunk-IQXFRNY2.cjs +169 -0
  74. package/dist/chunk-ISTFC3MZ.cjs +1357 -0
  75. package/dist/chunk-IXTFU4PL.cjs +2355 -0
  76. package/dist/chunk-J3LOGE4T.cjs +42 -0
  77. package/dist/chunk-J7FSKED3.cjs +93 -0
  78. package/dist/chunk-JDNHKPTD.cjs +22 -0
  79. package/dist/chunk-JSROZYYO.cjs +164 -0
  80. package/dist/chunk-K6FNHVDR.cjs +696 -0
  81. package/dist/chunk-KGZIORNL.cjs +43 -0
  82. package/dist/chunk-KR6CKSXT.cjs +15 -0
  83. package/dist/chunk-KROWKCUH.cjs +185 -0
  84. package/dist/chunk-KVFPGF2M.cjs +46 -0
  85. package/dist/{chunk-TNBAYAWO.mjs → chunk-L4DVIHOC.mjs} +1 -1
  86. package/dist/chunk-LCCBO7PJ.cjs +46 -0
  87. package/dist/chunk-LIUGYUX3.cjs +22 -0
  88. package/dist/chunk-LTNGXMQ6.cjs +55 -0
  89. package/dist/chunk-M2L4MYDQ.cjs +14 -0
  90. package/dist/chunk-MCJLA63J.cjs +1 -0
  91. package/dist/chunk-MKB2EGIR.cjs +148 -0
  92. package/dist/chunk-MQ3H6LT5.cjs +202 -0
  93. package/dist/chunk-MT763TDW.cjs +43 -0
  94. package/dist/{chunk-XWAYMDLB.mjs → chunk-MVUREHPN.mjs} +1 -1
  95. package/dist/chunk-MWSK6C4J.cjs +18 -0
  96. package/dist/chunk-MWWVKDW3.cjs +169 -0
  97. package/dist/{chunk-6VQIKZZO.mjs → chunk-N255VYFP.mjs} +1 -1
  98. package/dist/chunk-NBAHDVOJ.cjs +2040 -0
  99. package/dist/chunk-NO3WWW3N.cjs +192 -0
  100. package/dist/chunk-NSFC3LHB.cjs +10244 -0
  101. package/dist/chunk-NZKJGRB3.cjs +230 -0
  102. package/dist/chunk-OAVTUMJP.cjs +1496 -0
  103. package/dist/{chunk-SXHV42UQ.mjs → chunk-OFEY6KHO.mjs} +88 -13
  104. package/dist/chunk-OHY2ZWUG.cjs +25 -0
  105. package/dist/chunk-OI6CMLWX.cjs +47 -0
  106. package/dist/chunk-OWOUTKIJ.cjs +558 -0
  107. package/dist/chunk-OX6O6WVA.cjs +74 -0
  108. package/dist/chunk-OXSIH4D6.cjs +476 -0
  109. package/dist/chunk-OYDRPBBV.cjs +453 -0
  110. package/dist/chunk-OYEUREB6.cjs +35 -0
  111. package/dist/chunk-PCOTGFSM.cjs +139 -0
  112. package/dist/{chunk-76DG3LF3.mjs → chunk-PGQBL5DN.mjs} +1 -1
  113. package/dist/chunk-PZYCPSCC.cjs +35 -0
  114. package/dist/chunk-QBK2AA4U.cjs +445 -0
  115. package/dist/{chunk-UTBVHYS3.mjs → chunk-QBPKKQTD.mjs} +2 -2
  116. package/dist/chunk-QBPXNZGV.cjs +487 -0
  117. package/dist/chunk-QNPEUFHQ.cjs +27 -0
  118. package/dist/chunk-QZRVZSPN.cjs +236 -0
  119. package/dist/chunk-R5A5KNVX.cjs +20 -0
  120. package/dist/chunk-R5JIFR6B.cjs +42 -0
  121. package/dist/chunk-R6AIILII.cjs +193 -0
  122. package/dist/chunk-RFYO7QUD.cjs +9 -0
  123. package/dist/chunk-RG3ZOTG5.cjs +34 -0
  124. package/dist/chunk-ROUTX2E5.cjs +390 -0
  125. package/dist/chunk-RTHIVJ2G.cjs +54 -0
  126. package/dist/chunk-S27FMYAM.cjs +644 -0
  127. package/dist/chunk-S3A45T7F.cjs +166 -0
  128. package/dist/chunk-S3JO3N4H.cjs +17 -0
  129. package/dist/chunk-SK35NQKK.cjs +27 -0
  130. package/dist/chunk-SU7MH53P.cjs +180 -0
  131. package/dist/chunk-SVRTJOUF.cjs +113 -0
  132. package/dist/chunk-SWN467MP.cjs +18 -0
  133. package/dist/chunk-SYQ3MOWW.cjs +73 -0
  134. package/dist/chunk-T5CERMEH.cjs +417 -0
  135. package/dist/chunk-TFAXUHWX.cjs +206 -0
  136. package/dist/chunk-TIWHTW3Q.cjs +24 -0
  137. package/dist/chunk-TKJZFIML.cjs +20 -0
  138. package/dist/chunk-TKNSDBBN.cjs +193 -0
  139. package/dist/chunk-U4KT7QP3.cjs +23 -0
  140. package/dist/chunk-U5BMPGS3.cjs +862 -0
  141. package/dist/chunk-UJ2C4ICS.cjs +277 -0
  142. package/dist/chunk-UQZ4AYTH.cjs +168 -0
  143. package/dist/chunk-US2QVW3E.cjs +36 -0
  144. package/dist/{chunk-QGVJVSNX.mjs → chunk-V4AICMQA.mjs} +2 -2
  145. package/dist/chunk-VB6UCX3V.cjs +421 -0
  146. package/dist/chunk-VEKFLAQM.cjs +300 -0
  147. package/dist/chunk-VQDBNVOO.cjs +14 -0
  148. package/dist/chunk-W4E7WMXE.cjs +71 -0
  149. package/dist/chunk-WJ3HK3LJ.cjs +1102 -0
  150. package/dist/chunk-WMAPPDMM.cjs +28 -0
  151. package/dist/chunk-WMOGFOUJ.cjs +223 -0
  152. package/dist/chunk-WPYFSQKK.cjs +37 -0
  153. package/dist/{chunk-56DAX2BE.mjs → chunk-WZXN4R5Y.mjs} +24 -13
  154. package/dist/chunk-XDGMADQM.cjs +14225 -0
  155. package/dist/chunk-XGC343EY.cjs +443 -0
  156. package/dist/chunk-XSKZORAS.cjs +727 -0
  157. package/dist/chunk-XWAWFQFS.cjs +82 -0
  158. package/dist/chunk-Y4YMF2NQ.cjs +460 -0
  159. package/dist/chunk-Y4YWHNKU.cjs +250 -0
  160. package/dist/chunk-Y53ZSFN6.cjs +504 -0
  161. package/dist/chunk-YA6LLTIJ.cjs +411 -0
  162. package/dist/chunk-YFPGHF5F.cjs +202 -0
  163. package/dist/chunk-YJRZR7VU.cjs +28 -0
  164. package/dist/chunk-YTAABQEV.cjs +1 -0
  165. package/dist/chunk-YX3DBN4M.cjs +18 -0
  166. package/dist/chunk-YZTASLPQ.cjs +64 -0
  167. package/dist/chunk-Z5HIWVDP.cjs +2173 -0
  168. package/dist/chunk-ZEG3OPIB.cjs +93 -0
  169. package/dist/chunk-ZMN3H73H.cjs +155 -0
  170. package/dist/client/lifecycle.cjs +6 -35
  171. package/dist/client-plugins.cjs +7 -448
  172. package/dist/client.cjs +171 -9808
  173. package/dist/config.cjs +8 -36
  174. package/dist/cron.cjs +24 -491
  175. package/dist/deferred.cjs +26 -475
  176. package/dist/deployment.cjs +39 -210
  177. package/dist/devtools-5KGPDVKL.cjs +388 -0
  178. package/dist/{devtools-UFVTMQX5.mjs → devtools-FY5R7TQ4.mjs} +3 -3
  179. package/dist/devtools-client-4WAPJY5L.cjs +254 -0
  180. package/dist/devtools-ui-5GBDIGMK.cjs +1296 -0
  181. package/dist/docs.cjs +46 -5657
  182. package/dist/docs.mjs +5 -5
  183. package/dist/env-types.cjs +5 -226
  184. package/dist/env.cjs +21 -338
  185. package/dist/environment/vite.cjs +8 -372
  186. package/dist/environment.cjs +12 -94
  187. package/dist/font.cjs +13 -63
  188. package/dist/headers.cjs +7 -123
  189. package/dist/i18n/client.cjs +55 -294
  190. package/dist/i18n/index.cjs +22 -209
  191. package/dist/i18n/server.cjs +22 -745
  192. package/dist/image/server.cjs +13 -729
  193. package/dist/image/sharp.cjs +33 -171
  194. package/dist/image.cjs +41 -85
  195. package/dist/index.cjs +1151 -68080
  196. package/dist/index.mjs +14 -14
  197. package/dist/instrumentation.cjs +12 -138
  198. package/dist/integration-orm-55F7CII5.cjs +13 -0
  199. package/dist/integrations.cjs +55 -4090
  200. package/dist/internal/app-markdown-runtime.cjs +27 -224
  201. package/dist/internal/app-markdown-runtime.mjs +2 -2
  202. package/dist/internal/build-runtime.cjs +120 -52259
  203. package/dist/internal/build-runtime.mjs +13 -13
  204. package/dist/internal/cli-runtime.cjs +67 -13811
  205. package/dist/internal/cli-runtime.mjs +7 -7
  206. package/dist/internal/client-error-overlay.cjs +80 -733
  207. package/dist/internal/client-error-overlay.mjs +1 -1
  208. package/dist/internal/client-runtime.cjs +81 -913
  209. package/dist/internal/compression-runtime.cjs +8 -214
  210. package/dist/internal/config-runtime.cjs +42 -6547
  211. package/dist/internal/config-runtime.mjs +3 -3
  212. package/dist/internal/docs-precompiled-runtime.cjs +26 -46
  213. package/dist/internal/infra-analytics-runtime.cjs +10 -536
  214. package/dist/internal/isolated-boundary.cjs +14 -414
  215. package/dist/internal/metadata-image-runtime.cjs +7 -285
  216. package/dist/internal/product-telemetry-runtime.cjs +42 -97
  217. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  218. package/dist/internal/production-node-env.cjs +6 -63
  219. package/dist/internal/production-runtime.cjs +418 -7133
  220. package/dist/internal/production-runtime.mjs +3 -3
  221. package/dist/internal/request-cookies.cjs +6 -54
  222. package/dist/json-ld.cjs +24 -50
  223. package/dist/layers-E4WPJNY5.cjs +17 -0
  224. package/dist/manager-G4B2IPYE.cjs +14 -0
  225. package/dist/markdown.cjs +21 -547
  226. package/dist/markdown.mjs +1 -1
  227. package/dist/middleware.cjs +36 -2995
  228. package/dist/navigation.cjs +22 -2588
  229. package/dist/nitro-4I2MYLY2.cjs +652 -0
  230. package/dist/observability.cjs +22 -614
  231. package/dist/og.cjs +5 -28
  232. package/dist/plugin.cjs +106 -37442
  233. package/dist/plugin.mjs +9 -9
  234. package/dist/query/client.cjs +113 -449
  235. package/dist/query/index.cjs +26 -288
  236. package/dist/query/parsers.cjs +23 -247
  237. package/dist/query/server.cjs +36 -298
  238. package/dist/renderer/react/client.cjs +9 -43
  239. package/dist/renderer/react/server.cjs +40 -103
  240. package/dist/renderer/react/vite.cjs +7 -29
  241. package/dist/renderer-client.cjs +126 -4295
  242. package/dist/renderer.cjs +31 -249
  243. package/dist/request.cjs +5 -68
  244. package/dist/router.cjs +11 -474
  245. package/dist/routes.cjs +42 -2461
  246. package/dist/{schema-dev-notice-2IE2F2XI.mjs → schema-dev-notice-O67CPXJ6.mjs} +1 -1
  247. package/dist/schema-dev-notice-Y7MQEFGN.cjs +56 -0
  248. package/dist/schema.cjs +6 -33
  249. package/dist/search-client-G3RICOFU.cjs +13 -0
  250. package/dist/server-action-security.cjs +25 -541
  251. package/dist/server-fn-client.cjs +6 -337
  252. package/dist/server-fn.cjs +32 -1841
  253. package/dist/server-plugins.cjs +15 -884
  254. package/dist/server-query-client.cjs +15 -1883
  255. package/dist/server-query.cjs +16 -1838
  256. package/dist/server.cjs +296 -44681
  257. package/dist/server.mjs +11 -11
  258. package/dist/storage.cjs +57 -576
  259. package/dist/testing.cjs +89 -3186
  260. package/dist/theme/client.cjs +13 -108
  261. package/dist/theme/index.cjs +6 -68
  262. package/dist/theme/runtime.cjs +13 -78
  263. package/dist/theme/server.cjs +10 -179
  264. package/dist/version.cjs +4 -32
  265. package/dist/version.mjs +1 -1
  266. package/dist/vite.cjs +119 -37773
  267. package/dist/vite.mjs +9 -9
  268. package/dist/workflows.cjs +19 -1040
  269. package/package.json +1 -1
package/dist/config.cjs CHANGED
@@ -1,37 +1,9 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
20
2
 
21
- // src/config-entry.ts
22
- var config_entry_exports = {};
23
- __export(config_entry_exports, {
24
- defineConfig: () => defineConfig,
25
- defineFarmConfig: () => defineFarmConfig
26
- });
27
- module.exports = __toCommonJS(config_entry_exports);
28
- function defineConfig(config) {
29
- return config;
30
- }
31
- __name(defineConfig, "defineConfig");
32
- var defineFarmConfig = defineConfig;
33
- // Annotate the CommonJS export names for ESM import in node:
34
- 0 && (module.exports = {
35
- defineConfig,
36
- defineFarmConfig
37
- });
3
+
4
+ var _chunkKR6CKSXTcjs = require('./chunk-KR6CKSXT.cjs');
5
+ require('./chunk-S3JO3N4H.cjs');
6
+
7
+
8
+
9
+ exports.defineConfig = _chunkKR6CKSXTcjs.defineConfig; exports.defineFarmConfig = _chunkKR6CKSXTcjs.defineFarmConfig;
package/dist/cron.cjs CHANGED
@@ -1,502 +1,35 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
20
- };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
30
2
 
31
- // src/cron.ts
32
- var cron_exports = {};
33
- __export(cron_exports, {
34
- DEFAULT_FARM_CRON_SECRET_ENV: () => DEFAULT_FARM_CRON_SECRET_ENV,
35
- FARM_CRON_MANIFEST: () => FARM_CRON_MANIFEST,
36
- applyFarmCronVercelCrons: () => applyFarmCronVercelCrons,
37
- createFarmCronCloudflareConfig: () => createFarmCronCloudflareConfig,
38
- createFarmCronCloudflareTriggers: () => createFarmCronCloudflareTriggers,
39
- createFarmCronManifest: () => createFarmCronManifest,
40
- createFarmCronVercelCrons: () => createFarmCronVercelCrons,
41
- cronRoute: () => cronRoute,
42
- isCronRequestAuthorized: () => isCronRequestAuthorized,
43
- mergeScheduledTasks: () => mergeScheduledTasks,
44
- prepareFarmCronForNitro: () => prepareFarmCronForNitro,
45
- resolveCronConfig: () => resolveCronConfig
46
- });
47
- module.exports = __toCommonJS(cron_exports);
48
3
 
49
- // src/secret-compare.ts
50
- function farmSecretsMatch(provided, expected) {
51
- if (typeof provided !== "string" || typeof expected !== "string") return false;
52
- if (expected.length === 0) return false;
53
- let mismatch = provided.length ^ expected.length;
54
- const length = Math.max(provided.length, expected.length);
55
- for (let index = 0; index < length; index += 1) {
56
- const providedCode = index < provided.length ? provided.charCodeAt(index) : 0;
57
- const expectedCode = index < expected.length ? expected.charCodeAt(index) : 0;
58
- mismatch |= providedCode ^ expectedCode;
59
- }
60
- return mismatch === 0;
61
- }
62
- __name(farmSecretsMatch, "farmSecretsMatch");
63
4
 
64
- // src/utils.ts
65
- function toPosixPath(filePath) {
66
- return filePath.replace(/\\/g, "/");
67
- }
68
- __name(toPosixPath, "toPosixPath");
69
5
 
70
- // src/utils/runtime-env.ts
71
- function getFarmRuntimeBindings() {
72
- const runtimeBindings = globalThis.__env__;
73
- return runtimeBindings && typeof runtimeBindings === "object" ? runtimeBindings : void 0;
74
- }
75
- __name(getFarmRuntimeBindings, "getFarmRuntimeBindings");
76
- function readFarmEnvironmentValue(name) {
77
- const runtimeValue = getFarmRuntimeBindings()?.[name];
78
- if (typeof runtimeValue === "string") return runtimeValue;
79
- return typeof process !== "undefined" ? process.env?.[name] : void 0;
80
- }
81
- __name(readFarmEnvironmentValue, "readFarmEnvironmentValue");
82
6
 
83
- // src/cron.ts
84
- var DEFAULT_FARM_CRON_SECRET_ENV = "CRON_SECRET";
85
- var FARM_CRON_MANIFEST = "cron-manifest.json";
86
- var CRON_FIELD_RANGES = [
87
- [0, 59, "minute"],
88
- [0, 23, "hour"],
89
- [1, 31, "day of month"],
90
- [1, 12, "month"],
91
- [0, 6, "day of week"]
92
- ];
93
- function resolveCronConfig(cron) {
94
- if (isResolvedCronConfig(cron)) return cron;
95
- if (!cron) {
96
- return {
97
- enabled: false,
98
- secretEnv: DEFAULT_FARM_CRON_SECRET_ENV,
99
- jobs: []
100
- };
101
- }
102
- const jobs = [];
103
- for (const [name, job] of Object.entries(cron)) {
104
- if (!job || typeof job !== "object" || Array.isArray(job)) {
105
- throw new TypeError(`Farm cron ${JSON.stringify(name)} must be a configuration object.`);
106
- }
107
- if (job.enabled === false) continue;
108
- jobs.push(normalizeCronJob(name, job));
109
- }
110
- return {
111
- enabled: jobs.length > 0,
112
- secretEnv: DEFAULT_FARM_CRON_SECRET_ENV,
113
- jobs
114
- };
115
- }
116
- __name(resolveCronConfig, "resolveCronConfig");
117
- async function prepareFarmCronForNitro(config) {
118
- const cron = isResolvedCronConfig(config.cron) ? config.cron : resolveCronConfig(config.cron);
119
- const root = config.root || process.cwd();
120
- const distDir = config.distDir || ".farm";
121
- const fs = await import("fs/promises");
122
- const path = await import("path");
123
- const manifestPath = path.join(root, distDir, FARM_CRON_MANIFEST);
124
- const generatedDir = path.join(root, distDir, ".nitro", "farm-cron");
125
- if (!cron.enabled) {
126
- await Promise.all([
127
- fs.rm(manifestPath, { force: true }),
128
- fs.rm(generatedDir, { recursive: true, force: true })
129
- ]);
130
- return {
131
- jobs: [],
132
- tasks: {},
133
- scheduledTasks: {}
134
- };
135
- }
136
- await fs.rm(generatedDir, { recursive: true, force: true });
137
- await fs.mkdir(generatedDir, { recursive: true });
138
- const tasks = {};
139
- const wrapperNames = resolveCronWrapperFileNames(cron.jobs.map((job) => job.name));
140
- for (const job of cron.jobs) {
141
- const taskName = getFarmCronTaskName(job.name);
142
- const wrapperPath = toPosixPath(path.join(generatedDir, `${wrapperNames.get(job.name)}.mjs`));
143
- await fs.writeFile(wrapperPath, createNitroCronTaskWrapper(job, cron.secretEnv), "utf8");
144
- tasks[taskName] = {
145
- handler: wrapperPath,
146
- description: job.description || `Farm cron ${job.name}`
147
- };
148
- }
149
- const manifest = createFarmCronManifest(cron);
150
- await fs.mkdir(path.dirname(manifestPath), { recursive: true });
151
- await fs.writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}
152
- `, "utf8");
153
- return {
154
- jobs: cron.jobs,
155
- tasks,
156
- scheduledTasks: createCronScheduledTasks(cron.jobs),
157
- manifestPath
158
- };
159
- }
160
- __name(prepareFarmCronForNitro, "prepareFarmCronForNitro");
161
- function createFarmCronManifest(cron) {
162
- return {
163
- schemaVersion: 1,
164
- secretEnv: cron.secretEnv,
165
- jobs: cron.jobs.map((job) => ({
166
- name: job.name,
167
- schedule: job.schedule,
168
- path: job.path,
169
- description: job.description || null
170
- }))
171
- };
172
- }
173
- __name(createFarmCronManifest, "createFarmCronManifest");
174
- function createFarmCronVercelCrons(jobs) {
175
- return jobs.flatMap(
176
- (job) => job.schedule.map((schedule) => ({
177
- path: job.path,
178
- schedule
179
- }))
180
- );
181
- }
182
- __name(createFarmCronVercelCrons, "createFarmCronVercelCrons");
183
- function applyFarmCronVercelCrons(vercelConfig, jobs) {
184
- const existingCrons = Array.isArray(vercelConfig.crons) ? vercelConfig.crons : [];
185
- const seen = new Set(existingCrons.map((cron) => `${cron.path}:${cron.schedule}`));
186
- const crons = [...existingCrons];
187
- for (const cron of createFarmCronVercelCrons(jobs)) {
188
- const key = `${cron.path}:${cron.schedule}`;
189
- if (seen.has(key)) continue;
190
- seen.add(key);
191
- crons.push(cron);
192
- }
193
- return crons.length > 0 ? { ...vercelConfig, crons } : vercelConfig;
194
- }
195
- __name(applyFarmCronVercelCrons, "applyFarmCronVercelCrons");
196
- function createFarmCronCloudflareTriggers(jobs) {
197
- return [...new Set(jobs.flatMap((job) => job.schedule))];
198
- }
199
- __name(createFarmCronCloudflareTriggers, "createFarmCronCloudflareTriggers");
200
- function createFarmCronCloudflareConfig(jobs) {
201
- const crons = createFarmCronCloudflareTriggers(jobs);
202
- if (crons.length === 0) return void 0;
203
- return {
204
- deployConfig: true,
205
- wrangler: {
206
- triggers: { crons }
207
- }
208
- };
209
- }
210
- __name(createFarmCronCloudflareConfig, "createFarmCronCloudflareConfig");
211
- function mergeScheduledTasks(...maps) {
212
- const merged = /* @__PURE__ */ new Map();
213
- for (const map of maps) {
214
- for (const [schedule, taskNames] of Object.entries(map || {})) {
215
- const current = merged.get(schedule) || [];
216
- for (const taskName of Array.isArray(taskNames) ? taskNames : [taskNames]) {
217
- if (!current.includes(taskName)) current.push(taskName);
218
- }
219
- merged.set(schedule, current);
220
- }
221
- }
222
- return Object.fromEntries(
223
- [...merged].map(([schedule, taskNames]) => [
224
- schedule,
225
- taskNames.length === 1 ? taskNames[0] : taskNames
226
- ])
227
- );
228
- }
229
- __name(mergeScheduledTasks, "mergeScheduledTasks");
230
- function isExplicitDevelopmentEnv() {
231
- const nodeEnv = readFarmEnvironmentValue("NODE_ENV");
232
- return nodeEnv === "development" || nodeEnv === "test";
233
- }
234
- __name(isExplicitDevelopmentEnv, "isExplicitDevelopmentEnv");
235
- function isCronRequestAuthorized(request, options = {}) {
236
- const secretEnv = options.secretEnv || DEFAULT_FARM_CRON_SECRET_ENV;
237
- const secret = options.secret || readFarmEnvironmentValue(secretEnv);
238
- if (!secret) {
239
- return options.allowUnsecured === true || !getFarmRuntimeBindings() && isExplicitDevelopmentEnv();
240
- }
241
- const authorization = request.headers.get("authorization") || "";
242
- const bearer = /^Bearer (.*)$/i.exec(authorization)?.[1] || "";
243
- const headerSecret = request.headers.get("x-farm-cron-secret") || "";
244
- return farmSecretsMatch(bearer, secret) || farmSecretsMatch(headerSecret, secret);
245
- }
246
- __name(isCronRequestAuthorized, "isCronRequestAuthorized");
247
- function cronRoute(handler, options = {}) {
248
- return (request, ...args) => {
249
- if (!isCronRequestAuthorized(request, options)) {
250
- return Promise.resolve(
251
- Response.json({ error: "Unauthorized cron request." }, { status: 401 })
252
- );
253
- }
254
- return handler(request, ...args);
255
- };
256
- }
257
- __name(cronRoute, "cronRoute");
258
- function normalizeCronJob(name, job) {
259
- if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(name)) {
260
- throw new TypeError(
261
- `Farm cron name ${JSON.stringify(name)} must start with a letter or number and contain only letters, numbers, dots, underscores, or hyphens.`
262
- );
263
- }
264
- if (!job || typeof job !== "object" || Array.isArray(job)) {
265
- throw new TypeError(`Farm cron ${JSON.stringify(name)} must be a configuration object.`);
266
- }
267
- const path = normalizeCronPath(name, job.path);
268
- const rawSchedule = Array.isArray(job.schedule) ? job.schedule : [job.schedule];
269
- const schedule = [...new Set(rawSchedule.map((value) => normalizeCronExpression(name, value)))];
270
- if (schedule.length === 0) {
271
- throw new TypeError(`Farm cron ${JSON.stringify(name)} must define at least one schedule.`);
272
- }
273
- return {
274
- name,
275
- schedule,
276
- path,
277
- description: job.description?.trim() || void 0
278
- };
279
- }
280
- __name(normalizeCronJob, "normalizeCronJob");
281
- function normalizeCronPath(name, value) {
282
- if (typeof value !== "string" || !value.trim().startsWith("/")) {
283
- throw new TypeError(`Farm cron ${JSON.stringify(name)} path must start with "/".`);
284
- }
285
- const hasUnstableCharacters = /* @__PURE__ */ __name((candidate) => candidate.includes("\\") || Array.from(candidate).some((character) => {
286
- const code = character.charCodeAt(0);
287
- return code <= 31 || code >= 127 && code <= 159;
288
- }), "hasUnstableCharacters");
289
- if (hasUnstableCharacters(value)) {
290
- throw new TypeError(
291
- `Farm cron ${JSON.stringify(name)} path cannot contain backslashes or control characters.`
292
- );
293
- }
294
- const path = value.trim();
295
- if (path.startsWith("//") || path.includes("?") || path.includes("#")) {
296
- throw new TypeError(
297
- `Farm cron ${JSON.stringify(name)} path must be an application pathname without a host, query, or hash.`
298
- );
299
- }
300
- for (const segment of path.split("/")) {
301
- let decoded = segment;
302
- try {
303
- decoded = decodeURIComponent(segment);
304
- } catch {
305
- }
306
- if (hasUnstableCharacters(decoded)) {
307
- throw new TypeError(
308
- `Farm cron ${JSON.stringify(name)} path cannot contain backslashes or control characters.`
309
- );
310
- }
311
- if (decoded.includes("/")) {
312
- throw new TypeError(
313
- `Farm cron ${JSON.stringify(name)} path cannot contain percent-encoded path separators.`
314
- );
315
- }
316
- if (decoded === "." || decoded === "..") {
317
- throw new TypeError(
318
- `Farm cron ${JSON.stringify(name)} path cannot contain "." or ".." path segments.`
319
- );
320
- }
321
- }
322
- return path.length > 1 ? path.replace(/\/+$/, "") : path;
323
- }
324
- __name(normalizeCronPath, "normalizeCronPath");
325
- function normalizeCronExpression(name, value) {
326
- if (typeof value !== "string") {
327
- throw new TypeError(`Farm cron ${JSON.stringify(name)} schedule must be a string.`);
328
- }
329
- const expression = value.trim().replace(/\s+/g, " ");
330
- const fields = expression.split(" ");
331
- if (fields.length !== CRON_FIELD_RANGES.length) {
332
- throw new TypeError(
333
- `Farm cron ${JSON.stringify(name)} schedule ${JSON.stringify(expression)} must use five fields: minute hour day-of-month month day-of-week.`
334
- );
335
- }
336
- fields.forEach((field, index) => {
337
- const [minimum, maximum, label] = CRON_FIELD_RANGES[index];
338
- validateCronField(name, expression, field, minimum, maximum, label);
339
- });
340
- if (fields[2] !== "*" && fields[4] !== "*") {
341
- throw new TypeError(
342
- `Farm cron ${JSON.stringify(name)} schedule ${JSON.stringify(expression)} cannot constrain both day-of-month and day-of-week.`
343
- );
344
- }
345
- return expression;
346
- }
347
- __name(normalizeCronExpression, "normalizeCronExpression");
348
- function validateCronField(name, expression, field, minimum, maximum, label) {
349
- for (const segment of field.split(",")) {
350
- const [range, stepText, ...extra] = segment.split("/");
351
- if (!range || extra.length > 0 || stepText !== void 0 && !isIntegerInRange(stepText, 1)) {
352
- throwInvalidCronField(name, expression, label);
353
- }
354
- if (range === "*") continue;
355
- const bounds = range.split("-");
356
- if (bounds.length > 2 || !bounds.every((value) => isIntegerInRange(value, minimum, maximum))) {
357
- throwInvalidCronField(name, expression, label);
358
- }
359
- if (bounds.length === 2 && Number(bounds[0]) > Number(bounds[1])) {
360
- throwInvalidCronField(name, expression, label);
361
- }
362
- }
363
- }
364
- __name(validateCronField, "validateCronField");
365
- function isIntegerInRange(value, minimum, maximum = Number.MAX_SAFE_INTEGER) {
366
- if (!/^\d+$/.test(value)) return false;
367
- const parsed = Number(value);
368
- return parsed >= minimum && parsed <= maximum;
369
- }
370
- __name(isIntegerInRange, "isIntegerInRange");
371
- function throwInvalidCronField(name, expression, label) {
372
- throw new TypeError(
373
- `Farm cron ${JSON.stringify(name)} schedule ${JSON.stringify(expression)} has an invalid ${label} field.`
374
- );
375
- }
376
- __name(throwInvalidCronField, "throwInvalidCronField");
377
- function isResolvedCronConfig(value) {
378
- return !!value && typeof value === "object" && "enabled" in value && typeof value.enabled === "boolean" && "jobs" in value && Array.isArray(value.jobs) && "secretEnv" in value;
379
- }
380
- __name(isResolvedCronConfig, "isResolvedCronConfig");
381
- function createCronScheduledTasks(jobs) {
382
- const scheduledTasks = {};
383
- for (const job of jobs) {
384
- const taskName = getFarmCronTaskName(job.name);
385
- for (const schedule of job.schedule) {
386
- scheduledTasks[schedule] = mergeTaskNames(scheduledTasks[schedule], taskName);
387
- }
388
- }
389
- return scheduledTasks;
390
- }
391
- __name(createCronScheduledTasks, "createCronScheduledTasks");
392
- function mergeTaskNames(current, taskName) {
393
- if (!current) return taskName;
394
- const names = Array.isArray(current) ? current : [current];
395
- return names.includes(taskName) ? names : [...names, taskName];
396
- }
397
- __name(mergeTaskNames, "mergeTaskNames");
398
- function getFarmCronTaskName(name) {
399
- return `farm:cron:${name}`;
400
- }
401
- __name(getFarmCronTaskName, "getFarmCronTaskName");
402
- function createNitroCronTaskWrapper(job, secretEnv) {
403
- return `
404
- import { useNitroApp } from "nitro/app";
405
- import { defineTask } from "nitro/task";
406
7
 
407
- const name = ${JSON.stringify(job.name)};
408
- const path = ${JSON.stringify(job.path)};
409
- const secretEnv = ${JSON.stringify(secretEnv)};
410
8
 
411
- function readSecret(event) {
412
- const runtimeEnv = event?.context?.cloudflare?.env || event?.context?.env || {};
413
- return runtimeEnv[secretEnv] || (typeof process !== "undefined" ? process.env?.[secretEnv] : "") || "";
414
- }
415
9
 
416
- export default defineTask({
417
- meta: {
418
- name: ${JSON.stringify(getFarmCronTaskName(job.name))},
419
- description: ${JSON.stringify(job.description || `Farm cron ${job.name}`)}
420
- },
421
- async run(event) {
422
- const headers = new Headers({
423
- "x-farm-cron-name": name,
424
- "x-farm-cron-scheduled-at": String(event?.payload?.scheduledTime || Date.now())
425
- });
426
- const secret = readSecret(event);
427
- if (secret) headers.set("authorization", "Bearer " + secret);
428
10
 
429
- const response = await useNitroApp().fetch(path, { method: "GET", headers });
430
- const contentType = response.headers.get("content-type") || "";
431
- const body = response.status === 204
432
- ? null
433
- : contentType.includes("application/json")
434
- ? await response.json().catch(() => null)
435
- : await response.text();
436
11
 
437
- if (!response.ok) {
438
- const detail = typeof body === "string" ? body : JSON.stringify(body);
439
- throw new Error(
440
- "Farm cron " + JSON.stringify(name) + " received " + response.status +
441
- " from " + path + (detail ? ": " + detail : "")
442
- );
443
- }
444
12
 
445
- return { result: body };
446
- }
447
- });
448
- `.trim();
449
- }
450
- __name(createNitroCronTaskWrapper, "createNitroCronTaskWrapper");
451
- function resolveCronWrapperFileNames(names) {
452
- const groups = /* @__PURE__ */ new Map();
453
- for (const name of names) {
454
- const key = safeFileName(name).toLowerCase();
455
- groups.set(key, (groups.get(key) ?? 0) + 1);
456
- }
457
- const resolved = /* @__PURE__ */ new Map();
458
- const claimed = /* @__PURE__ */ new Map();
459
- for (const name of names) {
460
- const base = safeFileName(name);
461
- const key = base.toLowerCase();
462
- const fileName = (groups.get(key) ?? 0) > 1 ? `${key}-${cronNameFingerprint(name)}` : base;
463
- const claimedBy = claimed.get(fileName.toLowerCase());
464
- if (claimedBy !== void 0) {
465
- throw new Error(
466
- `Farm cron jobs ${JSON.stringify(claimedBy)} and ${JSON.stringify(name)} generate the same wrapper file ${JSON.stringify(`${fileName}.mjs`)}. Rename one of them.`
467
- );
468
- }
469
- claimed.set(fileName.toLowerCase(), name);
470
- resolved.set(name, fileName);
471
- }
472
- return resolved;
473
- }
474
- __name(resolveCronWrapperFileNames, "resolveCronWrapperFileNames");
475
- function cronNameFingerprint(value) {
476
- let hash = 2166136261;
477
- for (let index = 0; index < value.length; index += 1) {
478
- hash ^= value.charCodeAt(index);
479
- hash = Math.imul(hash, 16777619);
480
- }
481
- return (hash >>> 0).toString(16).padStart(8, "0");
482
- }
483
- __name(cronNameFingerprint, "cronNameFingerprint");
484
- function safeFileName(value) {
485
- return value.replace(/[^a-zA-Z0-9._-]+/g, "-") || "cron";
486
- }
487
- __name(safeFileName, "safeFileName");
488
- // Annotate the CommonJS export names for ESM import in node:
489
- 0 && (module.exports = {
490
- DEFAULT_FARM_CRON_SECRET_ENV,
491
- FARM_CRON_MANIFEST,
492
- applyFarmCronVercelCrons,
493
- createFarmCronCloudflareConfig,
494
- createFarmCronCloudflareTriggers,
495
- createFarmCronManifest,
496
- createFarmCronVercelCrons,
497
- cronRoute,
498
- isCronRequestAuthorized,
499
- mergeScheduledTasks,
500
- prepareFarmCronForNitro,
501
- resolveCronConfig
502
- });
13
+
14
+ var _chunk6EXBPJ24cjs = require('./chunk-6EXBPJ24.cjs');
15
+ require('./chunk-JDNHKPTD.cjs');
16
+ require('./chunk-CMGMGHUZ.cjs');
17
+ require('./chunk-5QIKR7RR.cjs');
18
+ require('./chunk-QNPEUFHQ.cjs');
19
+ require('./chunk-US2QVW3E.cjs');
20
+ require('./chunk-NO3WWW3N.cjs');
21
+ require('./chunk-S3JO3N4H.cjs');
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ exports.DEFAULT_FARM_CRON_SECRET_ENV = _chunk6EXBPJ24cjs.DEFAULT_FARM_CRON_SECRET_ENV; exports.FARM_CRON_MANIFEST = _chunk6EXBPJ24cjs.FARM_CRON_MANIFEST; exports.applyFarmCronVercelCrons = _chunk6EXBPJ24cjs.applyFarmCronVercelCrons; exports.createFarmCronCloudflareConfig = _chunk6EXBPJ24cjs.createFarmCronCloudflareConfig; exports.createFarmCronCloudflareTriggers = _chunk6EXBPJ24cjs.createFarmCronCloudflareTriggers; exports.createFarmCronManifest = _chunk6EXBPJ24cjs.createFarmCronManifest; exports.createFarmCronVercelCrons = _chunk6EXBPJ24cjs.createFarmCronVercelCrons; exports.cronRoute = _chunk6EXBPJ24cjs.cronRoute; exports.isCronRequestAuthorized = _chunk6EXBPJ24cjs.isCronRequestAuthorized; exports.mergeScheduledTasks = _chunk6EXBPJ24cjs.mergeScheduledTasks; exports.prepareFarmCronForNitro = _chunk6EXBPJ24cjs.prepareFarmCronForNitro; exports.resolveCronConfig = _chunk6EXBPJ24cjs.resolveCronConfig;