@farm.js/core 0.1.18 → 0.1.20

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 (189) hide show
  1. package/dist/agent-runtime.d.mts +2 -3
  2. package/dist/agent-runtime.d.ts +2 -3
  3. package/dist/api/route-manager.cjs +5 -5
  4. package/dist/api/route-manager.d.mts +2 -3
  5. package/dist/api/route-manager.d.ts +2 -3
  6. package/dist/api/route-manager.mjs +4 -4
  7. package/dist/api.cjs +6 -6
  8. package/dist/api.d.mts +3 -4
  9. package/dist/api.d.ts +3 -4
  10. package/dist/api.mjs +5 -5
  11. package/dist/{app-BHY_10Lm.d.ts → app-DAyPE-gr.d.ts} +11 -4
  12. package/dist/{app-BMk0do23.d.mts → app-D_6nTit-.d.mts} +11 -4
  13. package/dist/app-markdown.cjs +4 -4
  14. package/dist/app-markdown.d.mts +3 -4
  15. package/dist/app-markdown.d.ts +3 -4
  16. package/dist/app-markdown.mjs +3 -3
  17. package/dist/{chunk-FS7FLPOG.mjs → chunk-2J7W2WND.mjs} +3 -2
  18. package/dist/{chunk-YS3TRKCG.mjs → chunk-2M435BUE.mjs} +6 -1
  19. package/dist/{chunk-WJ3HK3LJ.cjs → chunk-2QLBIPFT.cjs} +4 -4
  20. package/dist/{chunk-FJSWYIR7.cjs → chunk-3IL5UC5I.cjs} +2 -2
  21. package/dist/chunk-43FMW62B.mjs +67 -0
  22. package/dist/{chunk-A7T6345N.mjs → chunk-5UX4C5QI.mjs} +10 -7
  23. package/dist/{chunk-KPNVGRBL.mjs → chunk-5V37LKBG.mjs} +105 -41
  24. package/dist/chunk-75WGQVQA.cjs +46 -0
  25. package/dist/{chunk-ZCNJKLA2.mjs → chunk-7BC6GAL7.mjs} +1 -1
  26. package/dist/{chunk-J2OP5GG3.cjs → chunk-A777V5WU.cjs} +28 -28
  27. package/dist/{chunk-NWOD6NIT.cjs → chunk-A7T6JZNI.cjs} +1 -1
  28. package/dist/{chunk-E2BMSZ2W.cjs → chunk-AH7HOAQ3.cjs} +2 -2
  29. package/dist/{chunk-AFOD3LYZ.cjs → chunk-B3WK4DTX.cjs} +10 -9
  30. package/dist/{chunk-TWGMSEHX.cjs → chunk-BBVSJVBZ.cjs} +88 -13
  31. package/dist/{chunk-AORPIPNB.cjs → chunk-BHJUZ64B.cjs} +18 -14
  32. package/dist/chunk-BMWDEBXO.cjs +67 -0
  33. package/dist/{chunk-ATERBVHQ.mjs → chunk-CQHFU55R.mjs} +5 -4
  34. package/dist/{chunk-XSKZORAS.cjs → chunk-DX4VKYAJ.cjs} +5 -5
  35. package/dist/{chunk-AWRISO2H.cjs → chunk-E2ROOWQC.cjs} +30 -4
  36. package/dist/{chunk-3XG26Z3J.mjs → chunk-F7E2AZKQ.mjs} +1 -1
  37. package/dist/{chunk-7WPA7GBZ.mjs → chunk-GHFS7RUB.mjs} +1 -1
  38. package/dist/{chunk-UN5GHC5V.cjs → chunk-GQFSCBKJ.cjs} +249 -185
  39. package/dist/{chunk-NZ2JVBT2.mjs → chunk-GZ3ZPTQV.mjs} +2 -2
  40. package/dist/{chunk-DHDVMXYK.mjs → chunk-HALDNTIV.mjs} +30 -4
  41. package/dist/{chunk-5QOEPUYE.mjs → chunk-HSDL2AUR.mjs} +1 -1
  42. package/dist/{chunk-BSTRERPP.cjs → chunk-I5YBCWQ6.cjs} +2 -2
  43. package/dist/{chunk-TYQUSXUG.cjs → chunk-ISTFC3MZ.cjs} +4 -4
  44. package/dist/{chunk-RKQVJN2O.mjs → chunk-JIKGGIOL.mjs} +1 -1
  45. package/dist/{chunk-GYKJCFTS.mjs → chunk-K6MG3SEG.mjs} +124 -82
  46. package/dist/{chunk-OXSIH4D6.cjs → chunk-KNPRCKXK.cjs} +6 -1
  47. package/dist/{chunk-TNBAYAWO.mjs → chunk-L4DVIHOC.mjs} +1 -1
  48. package/dist/{chunk-XWAYMDLB.mjs → chunk-MVUREHPN.mjs} +1 -1
  49. package/dist/{chunk-6VQIKZZO.mjs → chunk-N255VYFP.mjs} +1 -1
  50. package/dist/{chunk-GNEO2XOF.cjs → chunk-NBAHDVOJ.cjs} +4 -4
  51. package/dist/{chunk-EN7WTEAY.mjs → chunk-NRS46D4L.mjs} +2 -2
  52. package/dist/{chunk-A72YEUZ3.mjs → chunk-OCE65DDM.mjs} +1 -1
  53. package/dist/{chunk-SXHV42UQ.mjs → chunk-OFEY6KHO.mjs} +88 -13
  54. package/dist/{chunk-OIEOCXKG.cjs → chunk-OYDRPBBV.cjs} +2 -2
  55. package/dist/{chunk-76DG3LF3.mjs → chunk-PGQBL5DN.mjs} +1 -1
  56. package/dist/{chunk-UDBJCUPA.mjs → chunk-PUCUVI7K.mjs} +11 -7
  57. package/dist/{chunk-IKNRN4VS.cjs → chunk-PZX6I4JW.cjs} +462 -420
  58. package/dist/{chunk-GDSHDTJ4.cjs → chunk-Q5B3KJBP.cjs} +2 -2
  59. package/dist/{chunk-TSWW5BVH.mjs → chunk-QMV4QELL.mjs} +1 -1
  60. package/dist/{chunk-QGVJVSNX.mjs → chunk-RMIJFZU3.mjs} +28 -4
  61. package/dist/{chunk-MKB2EGIR.cjs → chunk-SOR334EB.cjs} +3 -2
  62. package/dist/{chunk-57J3Y7Y3.mjs → chunk-TIKNUAU7.mjs} +3 -2
  63. package/dist/chunk-VVBO3QH7.mjs +46 -0
  64. package/dist/{chunk-UTBVHYS3.mjs → chunk-W7MZXRXM.mjs} +20 -5
  65. package/dist/{chunk-Y53ZSFN6.cjs → chunk-WM6HL7E7.cjs} +4 -3
  66. package/dist/{chunk-WZMNW2IW.cjs → chunk-XFFQSD2F.cjs} +4 -4
  67. package/dist/{chunk-62YJ2IEB.cjs → chunk-XI3GWPUS.cjs} +23 -20
  68. package/dist/{chunk-KVFPGF2M.cjs → chunk-YJJLXIIS.cjs} +7 -7
  69. package/dist/{chunk-NV3A5DXM.cjs → chunk-YP5JZ4LF.cjs} +42 -18
  70. package/dist/{chunk-B4CH33IG.cjs → chunk-ZE6ONQ5R.cjs} +39 -24
  71. package/dist/{client-plugins-JXXmZliS.d.mts → client-plugins-CWrhb1ir.d.mts} +26 -3
  72. package/dist/{client-plugins-C089bQhN.d.ts → client-plugins-DPf0qZey.d.ts} +26 -3
  73. package/dist/client-plugins.d.mts +2 -3
  74. package/dist/client-plugins.d.ts +2 -3
  75. package/dist/client.cjs +4 -4
  76. package/dist/client.d.mts +9 -38
  77. package/dist/client.d.ts +9 -38
  78. package/dist/client.mjs +3 -3
  79. package/dist/config.d.mts +2 -3
  80. package/dist/config.d.ts +2 -3
  81. package/dist/{devtools-UFVTMQX5.mjs → devtools-MTB5SA2B.mjs} +5 -5
  82. package/dist/{devtools-OUIPHVV6.cjs → devtools-R6MDDAZK.cjs} +9 -9
  83. package/dist/docs.cjs +9 -8
  84. package/dist/docs.d.mts +2 -2
  85. package/dist/docs.d.ts +2 -2
  86. package/dist/docs.mjs +8 -7
  87. package/dist/index.cjs +29 -28
  88. package/dist/index.d.mts +14 -14
  89. package/dist/index.d.ts +14 -14
  90. package/dist/index.mjs +28 -27
  91. package/dist/integrations.d.mts +2 -3
  92. package/dist/integrations.d.ts +2 -3
  93. package/dist/internal/app-markdown-runtime.cjs +3 -3
  94. package/dist/internal/app-markdown-runtime.d.mts +2 -3
  95. package/dist/internal/app-markdown-runtime.d.ts +2 -3
  96. package/dist/internal/app-markdown-runtime.mjs +2 -2
  97. package/dist/internal/build-runtime.cjs +22 -21
  98. package/dist/internal/build-runtime.d.mts +4 -5
  99. package/dist/internal/build-runtime.d.ts +4 -5
  100. package/dist/internal/build-runtime.mjs +21 -20
  101. package/dist/internal/cli-runtime.cjs +12 -12
  102. package/dist/internal/cli-runtime.mjs +11 -11
  103. package/dist/internal/client-error-overlay.cjs +4 -4
  104. package/dist/internal/client-error-overlay.mjs +1 -1
  105. package/dist/internal/compression-runtime.d.mts +2 -3
  106. package/dist/internal/compression-runtime.d.ts +2 -3
  107. package/dist/internal/config-runtime.cjs +6 -6
  108. package/dist/internal/config-runtime.d.mts +3 -4
  109. package/dist/internal/config-runtime.d.ts +3 -4
  110. package/dist/internal/config-runtime.mjs +5 -5
  111. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  112. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  113. package/dist/internal/production-runtime.cjs +5 -5
  114. package/dist/internal/production-runtime.d.mts +8 -9
  115. package/dist/internal/production-runtime.d.ts +8 -9
  116. package/dist/internal/production-runtime.mjs +4 -4
  117. package/dist/markdown.cjs +2 -2
  118. package/dist/markdown.mjs +1 -1
  119. package/dist/{metadata-C1Z9vLbb.d.mts → metadata-CO9fRyyJ.d.mts} +1 -1
  120. package/dist/{metadata-BcNJP4fq.d.ts → metadata-zY9wltwH.d.ts} +1 -1
  121. package/dist/middleware.cjs +4 -4
  122. package/dist/middleware.d.mts +4 -11
  123. package/dist/middleware.d.ts +4 -11
  124. package/dist/middleware.mjs +3 -3
  125. package/dist/navigation.cjs +5 -5
  126. package/dist/navigation.d.mts +42 -3
  127. package/dist/navigation.d.ts +42 -3
  128. package/dist/navigation.mjs +4 -4
  129. package/dist/{nitro-CVZ36JM5.mjs → nitro-4LFVTT24.mjs} +2 -2
  130. package/dist/{nitro-4I2MYLY2.cjs → nitro-TSGDUJMN.cjs} +3 -3
  131. package/dist/plugin.cjs +23 -17
  132. package/dist/plugin.d.mts +3 -4
  133. package/dist/plugin.d.ts +3 -4
  134. package/dist/plugin.mjs +23 -17
  135. package/dist/{production-runtime-jcrTlRTb.d.mts → production-runtime-CywsHwnG.d.mts} +1 -1
  136. package/dist/{production-runtime-oKmC0WU-.d.ts → production-runtime-lkfwujwK.d.ts} +1 -1
  137. package/dist/query/client.cjs +6 -6
  138. package/dist/query/client.mjs +2 -2
  139. package/dist/{render-plan-DOB9cV-h.d.ts → render-plan-DHF0GeWo.d.ts} +1 -1
  140. package/dist/{render-plan-BLIfc4jt.d.mts → render-plan-LVy6sGQe.d.mts} +1 -1
  141. package/dist/renderer-client.cjs +5 -5
  142. package/dist/renderer-client.d.mts +4 -5
  143. package/dist/renderer-client.d.ts +4 -5
  144. package/dist/renderer-client.mjs +2 -2
  145. package/dist/renderer.d.mts +3 -0
  146. package/dist/renderer.d.ts +3 -0
  147. package/dist/{request-Cr53NRHr.d.mts → request-6AkmhEYE.d.mts} +1 -1
  148. package/dist/{request-Dt2gNuQD.d.ts → request-BYxlRqA9.d.ts} +1 -1
  149. package/dist/request.d.mts +3 -4
  150. package/dist/request.d.ts +3 -4
  151. package/dist/{route-rendering-CWYd8Mv1.d.ts → route-rendering-CWaKiUbS.d.ts} +1 -1
  152. package/dist/{route-rendering-CeFBEAoZ.d.mts → route-rendering-Dd8Jmml7.d.mts} +1 -1
  153. package/dist/router-B2m4fvve.d.ts +50 -0
  154. package/dist/router-xwEE112q.d.mts +50 -0
  155. package/dist/routes.cjs +3 -3
  156. package/dist/routes.d.mts +2 -3
  157. package/dist/routes.d.ts +2 -3
  158. package/dist/routes.mjs +2 -2
  159. package/dist/{schema-dev-notice-2IE2F2XI.mjs → schema-dev-notice-O67CPXJ6.mjs} +1 -1
  160. package/dist/{schema-dev-notice-MXSZMVDG.cjs → schema-dev-notice-Y7MQEFGN.cjs} +3 -3
  161. package/dist/server-plugins.d.mts +3 -4
  162. package/dist/server-plugins.d.ts +3 -4
  163. package/dist/server.cjs +33 -32
  164. package/dist/server.d.mts +8 -9
  165. package/dist/server.d.ts +8 -9
  166. package/dist/server.mjs +19 -18
  167. package/dist/{spa-router-CQWiYGxS.d.mts → spa-router-DVEHQnWo.d.mts} +3 -3
  168. package/dist/{spa-router-Wjiw-8hB.d.ts → spa-router-Y8rrXTVK.d.ts} +3 -3
  169. package/dist/testing.cjs +6 -6
  170. package/dist/testing.d.mts +2 -3
  171. package/dist/testing.d.ts +2 -3
  172. package/dist/testing.mjs +5 -5
  173. package/dist/{types-D-1WTE72.d.mts → types-DFbjpjXX.d.mts} +8 -0
  174. package/dist/{types-D-1WTE72.d.ts → types-DFbjpjXX.d.ts} +8 -0
  175. package/dist/{utils-uUxF0K0P.d.mts → utils-DSPx34-A.d.mts} +1 -1
  176. package/dist/{utils-B0XJmG_b.d.ts → utils-Dvuny_08.d.ts} +1 -1
  177. package/dist/version.cjs +2 -2
  178. package/dist/version.mjs +1 -1
  179. package/dist/vite.cjs +18 -17
  180. package/dist/vite.d.mts +2 -3
  181. package/dist/vite.d.ts +2 -3
  182. package/dist/vite.mjs +17 -16
  183. package/package.json +3 -3
  184. package/dist/chunk-7GNWGLWB.mjs +0 -14
  185. package/dist/chunk-VQDBNVOO.cjs +0 -14
  186. package/dist/navigation-errors-Dvwpzaer.d.mts +0 -13
  187. package/dist/navigation-errors-Dvwpzaer.d.ts +0 -13
  188. /package/dist/{chunk-IAMRBF3Z.cjs → chunk-N4RLRSWW.cjs} +0 -0
  189. /package/dist/{chunk-BNGS6KJ6.mjs → chunk-YOYF2E4U.mjs} +0 -0
@@ -21,7 +21,7 @@ var _chunkD2ULAULScjs = require('./chunk-D2ULAULS.cjs');
21
21
 
22
22
 
23
23
 
24
- var _chunkAWRISO2Hcjs = require('./chunk-AWRISO2H.cjs');
24
+ var _chunkE2ROOWQCcjs = require('./chunk-E2ROOWQC.cjs');
25
25
 
26
26
 
27
27
  var _chunkJSROZYYOcjs = require('./chunk-JSROZYYO.cjs');
@@ -41,7 +41,7 @@ function collectSchemaDependencies(owners) {
41
41
  for (const owner of owners) {
42
42
  try {
43
43
  known.set(owner.name, _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, owner.name, owner.schema));
44
- for (const model of _chunkAWRISO2Hcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]])) {
44
+ for (const model of _chunkE2ROOWQCcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]])) {
45
45
  creators.set(model.modelName.toLowerCase(), owner.name);
46
46
  claimedKeys.set(model.modelKey, owner.name);
47
47
  }
@@ -65,12 +65,12 @@ function collectSchemaDependencies(owners) {
65
65
  if (creator && creator !== owner.name) needs.add(creator);
66
66
  }, "add");
67
67
  try {
68
- for (const model of _chunkAWRISO2Hcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]])) {
68
+ for (const model of _chunkE2ROOWQCcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]])) {
69
69
  for (const field of Object.values(model.model.fields)) {
70
70
  if (field.reference) add(referencedTable(owner.name, field.reference.model));
71
71
  }
72
72
  }
73
- for (const extension of _chunkAWRISO2Hcjs.collectSchemaExtensions.call(void 0, owner.name, owner.schema, owner.models)) {
73
+ for (const extension of _chunkE2ROOWQCcjs.collectSchemaExtensions.call(void 0, owner.name, owner.schema, owner.models)) {
74
74
  add(extension.table);
75
75
  }
76
76
  } catch (e2) {
@@ -129,7 +129,7 @@ function collectSchemaOwners(config) {
129
129
  resolveClient: /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (resolved) => _nullishCoalesce(integrationClient, () => ( (integrationClient = _chunkD2ULAULScjs.resolveIntegrationOrmRuntimeClient.call(void 0, { config: resolved })))), "resolveClient")
130
130
  });
131
131
  }
132
- for (const declaration of _chunkAWRISO2Hcjs.findSchemaTableOwners.call(void 0, config)) {
132
+ for (const declaration of _chunkE2ROOWQCcjs.findSchemaTableOwners.call(void 0, config)) {
133
133
  if (owners.some((owner) => owner.name === declaration.name)) continue;
134
134
  owners.push({
135
135
  name: declaration.name,
@@ -159,7 +159,7 @@ function resolveSchemaExecutor(client, owner, timeoutMs) {
159
159
  if (candidate === void 0 || candidate === null) continue;
160
160
  let adapter;
161
161
  try {
162
- adapter = _chunkAWRISO2Hcjs.createSchemaExecutor.call(void 0, candidate, owner);
162
+ adapter = _chunkE2ROOWQCcjs.createSchemaExecutor.call(void 0, candidate, owner);
163
163
  } catch (e3) {
164
164
  continue;
165
165
  }
@@ -179,7 +179,7 @@ function resolveSchemaExecutor(client, owner, timeoutMs) {
179
179
  return void 0;
180
180
  }
181
181
  _chunkS3JO3N4Hcjs.__name.call(void 0, resolveSchemaExecutor, "resolveSchemaExecutor");
182
- var describeReferencedTable = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (database, table) => _chunkAWRISO2Hcjs.describeSchemaTable.call(void 0, database.executor, database.dialect, table), "describeReferencedTable");
182
+ var describeReferencedTable = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (database, table) => _chunkE2ROOWQCcjs.describeSchemaTable.call(void 0, database.executor, database.dialect, table), "describeReferencedTable");
183
183
  async function checkSchema(config, options = {}) {
184
184
  const timeoutMs = _nullishCoalesce(options.timeoutMs, () => ( DEFAULT_TIMEOUT_MS));
185
185
  if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
@@ -191,7 +191,7 @@ async function checkSchema(config, options = {}) {
191
191
  const issues = [];
192
192
  const declared = /* @__PURE__ */ new Map();
193
193
  for (const candidate of _nullishCoalesce(config.plugins, () => ( []))) {
194
- const declaration = _chunkAWRISO2Hcjs.readSchemaTables.call(void 0, candidate);
194
+ const declaration = _chunkE2ROOWQCcjs.readSchemaTables.call(void 0, candidate);
195
195
  if (!declaration) continue;
196
196
  const schemas = _nullishCoalesce(declared.get(declaration.name), () => ( []));
197
197
  if (!schemas.includes(declaration.schema)) schemas.push(declaration.schema);
@@ -213,7 +213,7 @@ async function checkSchema(config, options = {}) {
213
213
  for (const owner of owners) {
214
214
  try {
215
215
  knownModels.set(owner.name, _chunkJSROZYYOcjs.resolveSchemaModels.call(void 0, owner.name, owner.schema));
216
- ownedModels.set(owner.name, _chunkAWRISO2Hcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]]));
216
+ ownedModels.set(owner.name, _chunkE2ROOWQCcjs.collectSchemaModels.call(void 0, [[owner.name, owner.schema, owner.models]]));
217
217
  } catch (error) {
218
218
  issues.push({
219
219
  severity: "error",
@@ -329,7 +329,7 @@ async function checkSchema(config, options = {}) {
329
329
  for (const owner of owners) {
330
330
  if (!ownedModels.has(owner.name)) continue;
331
331
  try {
332
- const owned = _chunkAWRISO2Hcjs.collectSchemaExtensions.call(void 0, owner.name, owner.schema, owner.models);
332
+ const owned = _chunkE2ROOWQCcjs.collectSchemaExtensions.call(void 0, owner.name, owner.schema, owner.models);
333
333
  extensions.set(owner.name, owned);
334
334
  for (const extension of owned) {
335
335
  for (const { field } of extension.fields) {
@@ -369,9 +369,9 @@ async function checkSchema(config, options = {}) {
369
369
  const database = databases.get(owner.name);
370
370
  if (!models || !database) continue;
371
371
  try {
372
- const crossOwner = await _chunkAWRISO2Hcjs.planCrossOwnerReferences.call(void 0,
372
+ const crossOwner = await _chunkE2ROOWQCcjs.planCrossOwnerReferences.call(void 0,
373
373
  owner,
374
- _chunkAWRISO2Hcjs.findSchemaTableOwners.call(void 0, config),
374
+ _chunkE2ROOWQCcjs.findSchemaTableOwners.call(void 0, config),
375
375
  database.dialect,
376
376
  database.executor
377
377
  );
@@ -384,7 +384,7 @@ async function checkSchema(config, options = {}) {
384
384
  onDelete: reference.onDelete
385
385
  };
386
386
  }
387
- const stepPlan = _optionalChain([owner, 'access', _30 => _30.migrations, 'optionalAccess', _31 => _31.length]) ? await _chunkAWRISO2Hcjs.planOwnerSchemaSteps.call(void 0, {
387
+ const stepPlan = _optionalChain([owner, 'access', _30 => _30.migrations, 'optionalAccess', _31 => _31.length]) ? await _chunkE2ROOWQCcjs.planOwnerSchemaSteps.call(void 0, {
388
388
  owner: owner.name,
389
389
  schema: owner.schema,
390
390
  steps: owner.migrations,
@@ -399,15 +399,15 @@ async function checkSchema(config, options = {}) {
399
399
  const plan = await checkOwnerTables(
400
400
  owner,
401
401
  // What a pending rename will produce is not missing yet.
402
- _chunkAWRISO2Hcjs.withoutRenameTargets.call(void 0, models, stepPlan),
402
+ _chunkE2ROOWQCcjs.withoutRenameTargets.call(void 0, models, stepPlan),
403
403
  database.dialect,
404
404
  database.executor,
405
405
  issues
406
406
  );
407
407
  const pending = plan.statements.length + (_nullishCoalesce(_optionalChain([plan, 'access', _32 => _32.upgrades, 'optionalAccess', _33 => _33.length]), () => ( 0)));
408
- const state = pending > 0 ? await _chunkAWRISO2Hcjs.readSchemaState.call(void 0, database.executor, database.dialect, owner.name) : void 0;
409
- const changes = state ? _chunkAWRISO2Hcjs.diffSchemaSnapshots.call(void 0, state.snapshot, _chunkAWRISO2Hcjs.createSchemaSnapshot.call(void 0, models)) : void 0;
410
- if (state && changes && _chunkAWRISO2Hcjs.hasSchemaChanges.call(void 0, changes)) {
408
+ const state = pending > 0 ? await _chunkE2ROOWQCcjs.readSchemaState.call(void 0, database.executor, database.dialect, owner.name) : void 0;
409
+ const changes = state ? _chunkE2ROOWQCcjs.diffSchemaSnapshots.call(void 0, state.snapshot, _chunkE2ROOWQCcjs.createSchemaSnapshot.call(void 0, models)) : void 0;
410
+ if (state && changes && _chunkE2ROOWQCcjs.hasSchemaChanges.call(void 0, changes)) {
411
411
  const versions = state.version && owner.version && state.version !== owner.version ? `upgraded ${state.version} \u2192 ${owner.version}` : "changed since it was last migrated";
412
412
  issues.push({
413
413
  severity: "warning",
@@ -444,7 +444,7 @@ async function checkSchema(config, options = {}) {
444
444
  }
445
445
  _chunkS3JO3N4Hcjs.__name.call(void 0, checkSchema, "checkSchema");
446
446
  async function checkOwnerTables(owner, models, dialect, executor, issues) {
447
- const plan = await _chunkAWRISO2Hcjs.planSchemaMigration.call(void 0, models, dialect, executor);
447
+ const plan = await _chunkE2ROOWQCcjs.planSchemaMigration.call(void 0, models, dialect, executor);
448
448
  const present = /* @__PURE__ */ new Set([
449
449
  ...plan.upToDate,
450
450
  ...plan.drift.map((drift) => drift.table),
@@ -525,7 +525,7 @@ async function checkOwnerTables(owner, models, dialect, executor, issues) {
525
525
  table: key.table,
526
526
  column: key.column,
527
527
  message: `"${key.table}.${key.column}" has no foreign key to "${key.referencedTable}.${key.referencedColumn}", which ${owner.name} could have.`,
528
- hint: dialect === "sqlite" ? "SQLite can only add a foreign key when it creates the table." : `Allow it with \`${_chunkAWRISO2Hcjs.describeForeignKeyApproval.call(void 0, { owner: owner.name, modelKey: key.modelKey })}\` in farm.config, then run \`farm ${owner.name} migrate --apply\`. Rows that point at nothing are checked first.`
528
+ hint: dialect === "sqlite" ? "SQLite can only add a foreign key when it creates the table." : `Allow it with \`${_chunkE2ROOWQCcjs.describeForeignKeyApproval.call(void 0, { owner: owner.name, modelKey: key.modelKey })}\` in farm.config, then run \`farm ${owner.name} migrate --apply\`. Rows that point at nothing are checked first.`
529
529
  });
530
530
  }
531
531
  return plan;
@@ -609,9 +609,9 @@ async function checkReferences(owner, models, database, databases, resolveTarget
609
609
  continue;
610
610
  }
611
611
  if (database.dialect === "sqlite" || dialect === "sqlite") continue;
612
- const expected = _chunkAWRISO2Hcjs.getSqlColumnType.call(void 0, field, database.dialect);
613
- const mine = _chunkAWRISO2Hcjs.columnTypeFamily.call(void 0, expected);
614
- const theirs = _chunkAWRISO2Hcjs.columnTypeFamily.call(void 0, column.type);
612
+ const expected = _chunkE2ROOWQCcjs.getSqlColumnType.call(void 0, field, database.dialect);
613
+ const mine = _chunkE2ROOWQCcjs.columnTypeFamily.call(void 0, expected);
614
+ const theirs = _chunkE2ROOWQCcjs.columnTypeFamily.call(void 0, column.type);
615
615
  if (mine && theirs && mine !== theirs) {
616
616
  issues.push({
617
617
  severity: "warning",
@@ -630,7 +630,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, checkReferences, "checkReferences");
630
630
  async function checkExtensions(owner, extensions, databaseForTable, ownDatabase, allowExtend, issues) {
631
631
  for (const extension of extensions) {
632
632
  const database = _nullishCoalesce(databaseForTable(extension.table), () => ( ownDatabase));
633
- const table = await _chunkAWRISO2Hcjs.describeSchemaTable.call(void 0, database.executor, database.dialect, extension.table);
633
+ const table = await _chunkE2ROOWQCcjs.describeSchemaTable.call(void 0, database.executor, database.dialect, extension.table);
634
634
  const columns = extension.fields.map(({ field }) => field.name);
635
635
  if (!table) {
636
636
  issues.push({
@@ -643,7 +643,7 @@ async function checkExtensions(owner, extensions, databaseForTable, ownDatabase,
643
643
  });
644
644
  continue;
645
645
  }
646
- const allowed = _chunkAWRISO2Hcjs.isSchemaExtensionAllowed.call(void 0, allowExtend, extension);
646
+ const allowed = _chunkE2ROOWQCcjs.isSchemaExtensionAllowed.call(void 0, allowExtend, extension);
647
647
  for (const { field } of extension.fields) {
648
648
  const existing = table.columns.find(
649
649
  (column) => database.dialect === "postgres" ? column.name === field.name : column.name.toLowerCase() === field.name.toLowerCase()
@@ -657,14 +657,14 @@ async function checkExtensions(owner, extensions, databaseForTable, ownDatabase,
657
657
  table: extension.table,
658
658
  column: field.name,
659
659
  message: `${owner.name} needs "${extension.table}.${field.name}", which does not exist.`,
660
- hint: allowed ? `Add it with ${command}. If your ORM owns "${extension.table}", add the column to its schema instead.` : `Allow it in farm.config with \`${_chunkAWRISO2Hcjs.describeSchemaExtensionApproval.call(void 0, extension)}\`, then add it with ${command}. If your ORM owns "${extension.table}", add the column to its schema instead.`
660
+ hint: allowed ? `Add it with ${command}. If your ORM owns "${extension.table}", add the column to its schema instead.` : `Allow it in farm.config with \`${_chunkE2ROOWQCcjs.describeSchemaExtensionApproval.call(void 0, extension)}\`, then add it with ${command}. If your ORM owns "${extension.table}", add the column to its schema instead.`
661
661
  });
662
662
  continue;
663
663
  }
664
664
  if (database.dialect === "sqlite") continue;
665
- const expected = _chunkAWRISO2Hcjs.getSqlColumnType.call(void 0, field, database.dialect);
666
- const mine = _chunkAWRISO2Hcjs.columnTypeFamily.call(void 0, expected);
667
- const theirs = _chunkAWRISO2Hcjs.columnTypeFamily.call(void 0, existing.type);
665
+ const expected = _chunkE2ROOWQCcjs.getSqlColumnType.call(void 0, field, database.dialect);
666
+ const mine = _chunkE2ROOWQCcjs.columnTypeFamily.call(void 0, expected);
667
+ const theirs = _chunkE2ROOWQCcjs.columnTypeFamily.call(void 0, existing.type);
668
668
  if (mine && theirs && mine !== theirs) {
669
669
  issues.push({
670
670
  severity: "warning",
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
2
- var version = "0.1.18";
2
+ var version = "0.1.20";
3
3
 
4
4
  // src/version.ts
5
5
  var FARM_VERSION = version;
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkTWGMSEHXcjs = require('./chunk-TWGMSEHX.cjs');
3
+ var _chunkBBVSJVBZcjs = require('./chunk-BBVSJVBZ.cjs');
4
4
 
5
5
 
6
6
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
@@ -115,7 +115,7 @@ async function createFarmMarkdownSourceResponse(options) {
115
115
  }
116
116
  const url = new URL(options.request.url);
117
117
  const hasMarkdownExtension = url.pathname.toLowerCase().endsWith(".md");
118
- if (!hasMarkdownExtension && !_chunkTWGMSEHXcjs.requestAcceptsMarkdown.call(void 0, options.request.headers.get("accept"))) {
118
+ if (!hasMarkdownExtension && !_chunkBBVSJVBZcjs.requestAcceptsMarkdown.call(void 0, options.request.headers.get("accept"))) {
119
119
  return null;
120
120
  }
121
121
  const targetPathname = normalizeFarmMarkdownRoutePath(url.pathname);
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkIAMRBF3Zcjs = require('./chunk-IAMRBF3Z.cjs');
3
+ var _chunkN4RLRSWWcjs = require('./chunk-N4RLRSWW.cjs');
4
4
 
5
5
 
6
6
  var _chunk2CQ74SP6cjs = require('./chunk-2CQ74SP6.cjs');
@@ -24,10 +24,11 @@ var _chunk6V4TDWECcjs = require('./chunk-6V4TDWEC.cjs');
24
24
 
25
25
 
26
26
 
27
- var _chunkMKB2EGIRcjs = require('./chunk-MKB2EGIR.cjs');
27
+ var _chunkSOR334EBcjs = require('./chunk-SOR334EB.cjs');
28
28
 
29
29
 
30
- var _chunkVQDBNVOOcjs = require('./chunk-VQDBNVOO.cjs');
30
+
31
+ var _chunkBMWDEBXOcjs = require('./chunk-BMWDEBXO.cjs');
31
32
 
32
33
 
33
34
  var _chunk5QIKR7RRcjs = require('./chunk-5QIKR7RR.cjs');
@@ -152,8 +153,8 @@ var _APIRouteManager = class _APIRouteManager {
152
153
  }
153
154
  }
154
155
  }
155
- const runtimeConfig = _chunkMKB2EGIRcjs.normalizeFarmRouteRuntimeConfig.call(void 0,
156
- _chunkMKB2EGIRcjs.getFarmRouteRuntimeConfig.call(void 0, routeModule),
156
+ const runtimeConfig = _chunkSOR334EBcjs.normalizeFarmRouteRuntimeConfig.call(void 0,
157
+ _chunkSOR334EBcjs.getFarmRouteRuntimeConfig.call(void 0, routeModule),
157
158
  `API route "${routePath}"`
158
159
  );
159
160
  this.registerRouteShape(routePath, filePath, appDir);
@@ -206,7 +207,7 @@ var _APIRouteManager = class _APIRouteManager {
206
207
  async loadProgrammaticApiRoutes(appDir) {
207
208
  const candidateRoots = [path.dirname(appDir), appDir];
208
209
  const routeFiles = Array.from(
209
- new Set(candidateRoots.flatMap((srcRoot) => _chunkIAMRBF3Zcjs.findProgrammaticRouteFilesInDir.call(void 0, srcRoot)))
210
+ new Set(candidateRoots.flatMap((srcRoot) => _chunkN4RLRSWWcjs.findProgrammaticRouteFilesInDir.call(void 0, srcRoot)))
210
211
  );
211
212
  if (routeFiles.length === 0) return;
212
213
  const { getProgrammaticRouteManifest } = await import("./routes.cjs");
@@ -251,11 +252,11 @@ var _APIRouteManager = class _APIRouteManager {
251
252
  }
252
253
  async loadModule(filePath) {
253
254
  if (this.viteServer) {
254
- return await this.viteServer.ssrLoadModule(filePath);
255
+ return await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, this.viteServer, filePath);
255
256
  }
256
257
  return await import(
257
258
  /* @vite-ignore */
258
- _chunkVQDBNVOOcjs.toFileModuleUrl.call(void 0, filePath)
259
+ _chunkBMWDEBXOcjs.toFileModuleUrl.call(void 0, filePath)
259
260
  );
260
261
  }
261
262
  addEndpoint(routePath, filePath, method, endpoint, appDir, runtimeConfig = {}) {
@@ -292,7 +293,7 @@ var _APIRouteManager = class _APIRouteManager {
292
293
  }
293
294
  addProgrammaticApiRoute(filePath, route, appDir) {
294
295
  const modulePath = _chunk6V4TDWECcjs.createProgrammaticRouteModuleId.call(void 0, filePath, "api", route.path);
295
- const runtimeConfig = _chunkMKB2EGIRcjs.normalizeFarmRouteRuntimeConfig.call(void 0, route, `API route "${route.path}"`);
296
+ const runtimeConfig = _chunkSOR334EBcjs.normalizeFarmRouteRuntimeConfig.call(void 0, route, `API route "${route.path}"`);
296
297
  for (const [method, endpoint] of Object.entries(route.methods)) {
297
298
  if (endpoint) {
298
299
  this.addEndpoint(route.path, modulePath, method, endpoint, appDir, runtimeConfig);
@@ -145,9 +145,13 @@ var BLOCK_TAGS = /<\/?(ul|ol|main|section|article|header|footer|nav|aside|div|fo
145
145
  var BOX_TAGS = /<\/?(label|button|input|select|textarea|option|output|meter|progress|td|th)\b[^>]*>/gi;
146
146
  function htmlToMarkdown(html, options = {}) {
147
147
  const title = _nullishCoalesce(options.title, () => ( extractHtmlTitle(html)));
148
+ const streamed = readStreamedBoundaryInstructions(html);
148
149
  let source = extractHtmlBody(
149
150
  removeHiddenElements(
150
- html.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi, "").replace(/<!--[\s\S]*?-->/g, "")
151
+ resolveStreamedBoundaries(
152
+ html.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<noscript\b[^>]*>[\s\S]*?<\/noscript>/gi, ""),
153
+ streamed
154
+ ).replace(/<!--[\s\S]*?-->/g, "")
151
155
  )
152
156
  );
153
157
  const codeBlocks = [];
@@ -422,6 +426,7 @@ var VOID_TAGS = /* @__PURE__ */ new Set([
422
426
  ]);
423
427
  function removeHiddenElements(html) {
424
428
  const openingTag = /<([a-zA-Z][\w:-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>/g;
429
+ let closingTags;
425
430
  let result = "";
426
431
  let cursor = 0;
427
432
  let match;
@@ -431,7 +436,8 @@ function removeHiddenElements(html) {
431
436
  const start = match.index;
432
437
  let end = start + tag.length;
433
438
  if (!VOID_TAGS.has(name.toLowerCase()) && !isSelfClosingTag(tag)) {
434
- const close = findClosingTagEnd(html, name, end);
439
+ _nullishCoalesce(closingTags, () => ( (closingTags = matchClosingTags(html))));
440
+ const close = closingTags.get(start);
435
441
  if (close === void 0) continue;
436
442
  end = close;
437
443
  }
@@ -458,24 +464,93 @@ function isSelfClosingTag(tag) {
458
464
  return /(?:^<[a-zA-Z][\w:-]*|[\s"'])\/>$/.test(tag);
459
465
  }
460
466
  _chunkS3JO3N4Hcjs.__name.call(void 0, isSelfClosingTag, "isSelfClosingTag");
461
- function findClosingTagEnd(html, name, from) {
467
+ function matchClosingTags(html) {
462
468
  const tags = /<(\/?)([a-zA-Z][\w:-]*)(?:[^>"']|"[^"]*"|'[^']*')*>/g;
463
- tags.lastIndex = from;
464
- const target = name.toLowerCase();
465
- let depth = 1;
469
+ const open = /* @__PURE__ */ new Map();
470
+ const closes = /* @__PURE__ */ new Map();
466
471
  let match;
467
472
  while (match = tags.exec(html)) {
468
- if (match[2].toLowerCase() !== target) continue;
473
+ const name = match[2].toLowerCase();
469
474
  if (match[1]) {
470
- depth -= 1;
471
- if (depth === 0) return match.index + match[0].length;
472
- } else if (!isSelfClosingTag(match[0])) {
473
- depth += 1;
475
+ const start = _optionalChain([open, 'access', _19 => _19.get, 'call', _20 => _20(name), 'optionalAccess', _21 => _21.pop, 'call', _22 => _22()]);
476
+ if (start !== void 0) closes.set(start, match.index + match[0].length);
477
+ } else if (!VOID_TAGS.has(name) && !isSelfClosingTag(match[0])) {
478
+ let starts = open.get(name);
479
+ if (!starts) open.set(name, starts = []);
480
+ starts.push(match.index);
474
481
  }
475
482
  }
476
- return void 0;
483
+ return closes;
484
+ }
485
+ _chunkS3JO3N4Hcjs.__name.call(void 0, matchClosingTags, "matchClosingTags");
486
+ function readStreamedBoundaryInstructions(html) {
487
+ const boundaries = /* @__PURE__ */ new Map();
488
+ const placeholders = /* @__PURE__ */ new Map();
489
+ for (const [, script] of html.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script>/gi)) {
490
+ for (const [, kind, first, second] of script.matchAll(
491
+ /\$R([CRS])\("([^"\\]+)","([^"\\]+)"/g
492
+ )) {
493
+ if (kind === "S") placeholders.set(second, first);
494
+ else boundaries.set(first, second);
495
+ }
496
+ }
497
+ return { boundaries, placeholders };
498
+ }
499
+ _chunkS3JO3N4Hcjs.__name.call(void 0, readStreamedBoundaryInstructions, "readStreamedBoundaryInstructions");
500
+ function resolveStreamedBoundaries(html, { boundaries, placeholders }) {
501
+ if (boundaries.size === 0 && placeholders.size === 0) return html;
502
+ const wanted = /* @__PURE__ */ new Set([...boundaries.values(), ...placeholders.values()]);
503
+ const segments = /* @__PURE__ */ new Map();
504
+ const closingTags = matchClosingTags(html);
505
+ const openingTag = /<([a-zA-Z][\w:-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>/g;
506
+ let page = "";
507
+ let cursor = 0;
508
+ let match;
509
+ while (match = openingTag.exec(html)) {
510
+ const id = _optionalChain([/\sid="([^"]*)"/, 'access', _23 => _23.exec, 'call', _24 => _24(match[2]), 'optionalAccess', _25 => _25[1]]);
511
+ if (!id || !wanted.has(id) || segments.has(id)) continue;
512
+ const close = closingTags.get(match.index);
513
+ if (close === void 0) continue;
514
+ const contentStart = match.index + match[0].length;
515
+ segments.set(id, html.slice(contentStart, html.lastIndexOf("<", close - 1)));
516
+ page += html.slice(cursor, match.index);
517
+ cursor = close;
518
+ openingTag.lastIndex = close;
519
+ }
520
+ page += html.slice(cursor);
521
+ const used = /* @__PURE__ */ new Set();
522
+ const expand = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (fragment) => {
523
+ const template = /<template\b[^>]*\sid="([^"]+)"[^>]*>\s*<\/template>/gi;
524
+ let output = "";
525
+ let position = 0;
526
+ let found;
527
+ while (found = template.exec(fragment)) {
528
+ const id = found[1];
529
+ const segmentId = _nullishCoalesce(boundaries.get(id), () => ( placeholders.get(id)));
530
+ const segment = segmentId === void 0 ? void 0 : segments.get(segmentId);
531
+ if (segment === void 0 || used.has(segmentId)) continue;
532
+ used.add(segmentId);
533
+ output += fragment.slice(position, found.index) + expand(segment);
534
+ position = found.index + found[0].length;
535
+ if (boundaries.has(id)) {
536
+ const marker = /<!--(\/?)(?:\$[?!~]?|&)-->/g;
537
+ marker.lastIndex = position;
538
+ let depth = 0;
539
+ let end;
540
+ while (end = marker.exec(fragment)) {
541
+ if (!end[1]) depth += 1;
542
+ else if (depth === 0) break;
543
+ else depth -= 1;
544
+ }
545
+ if (end) position = end.index;
546
+ }
547
+ template.lastIndex = position;
548
+ }
549
+ return output + fragment.slice(position);
550
+ }, "expand");
551
+ return expand(page);
477
552
  }
478
- _chunkS3JO3N4Hcjs.__name.call(void 0, findClosingTagEnd, "findClosingTagEnd");
553
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveStreamedBoundaries, "resolveStreamedBoundaries");
479
554
  function stripTags(input) {
480
555
  return input.replace(/<[^>]+>/g, "");
481
556
  }
@@ -6,10 +6,10 @@ var _chunk4PPEPOZZcjs = require('./chunk-4PPEPOZZ.cjs');
6
6
  var _chunkMQ3H6LT5cjs = require('./chunk-MQ3H6LT5.cjs');
7
7
 
8
8
 
9
- var _chunkAFOD3LYZcjs = require('./chunk-AFOD3LYZ.cjs');
9
+ var _chunkB3WK4DTXcjs = require('./chunk-B3WK4DTX.cjs');
10
10
 
11
11
 
12
- var _chunkIAMRBF3Zcjs = require('./chunk-IAMRBF3Z.cjs');
12
+ var _chunkN4RLRSWWcjs = require('./chunk-N4RLRSWW.cjs');
13
13
 
14
14
 
15
15
  var _chunk2CQ74SP6cjs = require('./chunk-2CQ74SP6.cjs');
@@ -33,6 +33,9 @@ var _chunkEM6SBQKMcjs = require('./chunk-EM6SBQKM.cjs');
33
33
  var _chunkM2L4MYDQcjs = require('./chunk-M2L4MYDQ.cjs');
34
34
 
35
35
 
36
+ var _chunkBMWDEBXOcjs = require('./chunk-BMWDEBXO.cjs');
37
+
38
+
36
39
 
37
40
  var _chunk5QIKR7RRcjs = require('./chunk-5QIKR7RR.cjs');
38
41
 
@@ -102,7 +105,7 @@ function farmApiPlugin(options = {}) {
102
105
  const existing = apiRoutesCache.get(routePath);
103
106
  const existingFile = _optionalChain([endpointSources, 'access', _ => _.get, 'call', _2 => _2(routePath), 'optionalAccess', _3 => _3.get, 'call', _4 => _4(normalizedMethod)]);
104
107
  if (existingFile) {
105
- throw new (0, _chunkAFOD3LYZcjs.APIRouteConflictError)(routePath, normalizedMethod, existingFile, filePath);
108
+ throw new (0, _chunkB3WK4DTXcjs.APIRouteConflictError)(routePath, normalizedMethod, existingFile, filePath);
106
109
  }
107
110
  if (existing) {
108
111
  if (!existing.methods.includes(normalizedMethod)) {
@@ -249,7 +252,7 @@ function farmApiPlugin(options = {}) {
249
252
  try {
250
253
  const relativePath = path.relative(apiDir, path.dirname(filePath));
251
254
  const routePath = "/api/" + (relativePath === "." ? "" : relativePath.replace(/\\/g, "/"));
252
- const routeModule = await server.ssrLoadModule(filePath);
255
+ const routeModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, filePath);
253
256
  const endpoints = {};
254
257
  const availableMethods = [];
255
258
  for (const method of _chunk4PNUXIVUcjs.API_ROUTE_METHODS) {
@@ -265,7 +268,7 @@ function farmApiPlugin(options = {}) {
265
268
  log(`API route discovered: ${availableMethods.join(", ")} ${routePath}`);
266
269
  }
267
270
  } catch (e) {
268
- if (e instanceof _chunkAFOD3LYZcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
271
+ if (e instanceof _chunkB3WK4DTXcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
269
272
  log(`API route load failed at ${filePath}: ${e.message}`);
270
273
  }
271
274
  }
@@ -281,7 +284,7 @@ function farmApiPlugin(options = {}) {
281
284
  for (const routesFile of routesFiles) {
282
285
  if (fs.existsSync(routesFile)) {
283
286
  try {
284
- const routesModule = await server.ssrLoadModule(routesFile);
287
+ const routesModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, routesFile);
285
288
  for (const [exportName, exportValue] of Object.entries(routesModule)) {
286
289
  const endpoint = exportValue;
287
290
  if (endpoint && endpoint.__path) {
@@ -292,7 +295,7 @@ function farmApiPlugin(options = {}) {
292
295
  }
293
296
  }
294
297
  } catch (e) {
295
- if (e instanceof _chunkAFOD3LYZcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
298
+ if (e instanceof _chunkB3WK4DTXcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
296
299
  log(`Root routes.ts load failed: ${e.message}`);
297
300
  }
298
301
  break;
@@ -302,12 +305,13 @@ function farmApiPlugin(options = {}) {
302
305
  const discoverProgrammaticRoutes = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, async () => {
303
306
  const path = await import("path");
304
307
  const srcRoot = path.join(server.config.root, srcDir);
305
- const routeFiles = _chunkIAMRBF3Zcjs.findProgrammaticRouteFilesInDir.call(void 0, srcRoot);
308
+ const routeFiles = _chunkN4RLRSWWcjs.findProgrammaticRouteFilesInDir.call(void 0, srcRoot);
306
309
  if (routeFiles.length === 0) return;
307
310
  const { getProgrammaticRouteManifest } = await import("./routes.cjs");
308
311
  for (const routeFile of routeFiles) {
309
312
  try {
310
- const routesModule = await server.ssrLoadModule(
313
+ const routesModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0,
314
+ server,
311
315
  _chunk5QIKR7RRcjs.toViteModuleId.call(void 0, routeFile, server.config.root)
312
316
  );
313
317
  const manifest = getProgrammaticRouteManifest(routesModule);
@@ -322,7 +326,7 @@ function farmApiPlugin(options = {}) {
322
326
  }
323
327
  }
324
328
  } catch (e) {
325
- if (e instanceof _chunkAFOD3LYZcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
329
+ if (e instanceof _chunkB3WK4DTXcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
326
330
  log(`Programmatic routes file load failed at ${routeFile}: ${e.message}`);
327
331
  }
328
332
  }
@@ -471,7 +475,7 @@ function farmApiPlugin(options = {}) {
471
475
  if (await _optionalChain([recoverFailedDiscovery, 'optionalCall', _9 => _9()])) return [];
472
476
  const previousState = snapshotRouteState();
473
477
  try {
474
- const routesModule = await server.ssrLoadModule(file);
478
+ const routesModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, file);
475
479
  removeEndpointsFromFile(file);
476
480
  for (const [exportName, exportValue] of Object.entries(routesModule)) {
477
481
  const endpoint = exportValue;
@@ -499,7 +503,7 @@ function farmApiPlugin(options = {}) {
499
503
  log(`API router recreated`);
500
504
  } catch (e) {
501
505
  restoreRouteState(previousState);
502
- if (e instanceof _chunkAFOD3LYZcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
506
+ if (e instanceof _chunkB3WK4DTXcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
503
507
  log(`Root routes.ts HMR failed: ${e.message}`);
504
508
  }
505
509
  return [];
@@ -524,7 +528,7 @@ function farmApiPlugin(options = {}) {
524
528
  log(`API route file removed: ${routePath}`);
525
529
  return [];
526
530
  }
527
- const routeModule = await server.ssrLoadModule(file);
531
+ const routeModule = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, server, file);
528
532
  removeEndpointsFromFile(file);
529
533
  const availableMethods = [];
530
534
  for (const method of _chunk4PNUXIVUcjs.API_ROUTE_METHODS) {
@@ -537,7 +541,7 @@ function farmApiPlugin(options = {}) {
537
541
  log(`API router recreated`);
538
542
  } catch (e) {
539
543
  restoreRouteState(previousState);
540
- if (e instanceof _chunkAFOD3LYZcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
544
+ if (e instanceof _chunkB3WK4DTXcjs.APIRouteConflictError || e instanceof _chunkNO3WWW3Ncjs.AmbiguousRouteError) throw e;
541
545
  log(`API route HMR failed: ${e.message}`);
542
546
  }
543
547
  return [];
@@ -0,0 +1,67 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
4
+
5
+ // src/dev-module.ts
6
+ var failedModules = /* @__PURE__ */ new WeakMap();
7
+ var _FarmDevEnvironmentError = class _FarmDevEnvironmentError extends Error {
8
+ };
9
+ _chunkS3JO3N4Hcjs.__name.call(void 0, _FarmDevEnvironmentError, "FarmDevEnvironmentError");
10
+ var FarmDevEnvironmentError = _FarmDevEnvironmentError;
11
+ async function loadFarmDevModule(server, id, environmentName = "ssr") {
12
+ const environment = server.environments[environmentName];
13
+ const runner = _optionalChain([environment, 'optionalAccess', _ => _.runner]);
14
+ if (!environment || !runner || typeof runner.import !== "function") {
15
+ throw new FarmDevEnvironmentError(
16
+ `[Farm.js] Cannot load ${JSON.stringify(id)}: the "${environmentName}" development environment must provide a module runner. Remote runtimes require a request/response adapter.`
17
+ );
18
+ }
19
+ try {
20
+ return await runner.import(id);
21
+ } catch (error) {
22
+ const failures = _nullishCoalesce(failedModules.get(environment), () => ( /* @__PURE__ */ new Map()));
23
+ failedModules.set(environment, failures);
24
+ await Promise.all(
25
+ [..._nullishCoalesce(_optionalChain([runner, 'access', _2 => _2.evaluatedModules, 'optionalAccess', _3 => _3.idToModuleMap, 'access', _4 => _4.values, 'call', _5 => _5()]), () => ( []))].filter((module) => module.evaluated && module.promise).map(async (module) => {
26
+ try {
27
+ await module.promise;
28
+ } catch (e) {
29
+ failures.set(module.id, module.promise);
30
+ }
31
+ })
32
+ );
33
+ throw error;
34
+ }
35
+ }
36
+ _chunkS3JO3N4Hcjs.__name.call(void 0, loadFarmDevModule, "loadFarmDevModule");
37
+ function invalidateFailedFarmDevModules(server) {
38
+ for (const entry of Object.values(server.environments)) {
39
+ const environment = entry;
40
+ const failures = failedModules.get(environment);
41
+ if (!_optionalChain([failures, 'optionalAccess', _6 => _6.size])) continue;
42
+ const runner = environment.runner;
43
+ for (const [id, failed] of failures) {
44
+ const evaluated = runner.evaluatedModules.getModuleById(id);
45
+ if (_optionalChain([evaluated, 'optionalAccess', _7 => _7.promise]) !== failed) continue;
46
+ const transformed = environment.moduleGraph.getModuleById(id);
47
+ if (transformed) environment.moduleGraph.invalidateModule(transformed);
48
+ if (evaluated) runner.evaluatedModules.invalidateModule(evaluated);
49
+ }
50
+ failures.clear();
51
+ }
52
+ }
53
+ _chunkS3JO3N4Hcjs.__name.call(void 0, invalidateFailedFarmDevModules, "invalidateFailedFarmDevModules");
54
+
55
+ // src/utils/file-module.ts
56
+ var _url = require('url');
57
+ function toFileModuleUrl(filePath) {
58
+ return _url.pathToFileURL.call(void 0, filePath).href;
59
+ }
60
+ _chunkS3JO3N4Hcjs.__name.call(void 0, toFileModuleUrl, "toFileModuleUrl");
61
+
62
+
63
+
64
+
65
+
66
+
67
+ exports.FarmDevEnvironmentError = FarmDevEnvironmentError; exports.loadFarmDevModule = loadFarmDevModule; exports.invalidateFailedFarmDevModules = invalidateFailedFarmDevModules; exports.toFileModuleUrl = toFileModuleUrl;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  findProgrammaticRouteFilesInDir
3
- } from "./chunk-BNGS6KJ6.mjs";
3
+ } from "./chunk-YOYF2E4U.mjs";
4
4
  import {
5
5
  isFarmAPIRouteFileName
6
6
  } from "./chunk-CU625VAY.mjs";
@@ -24,10 +24,11 @@ import {
24
24
  import {
25
25
  getFarmRouteRuntimeConfig,
26
26
  normalizeFarmRouteRuntimeConfig
27
- } from "./chunk-FS7FLPOG.mjs";
27
+ } from "./chunk-2J7W2WND.mjs";
28
28
  import {
29
+ loadFarmDevModule,
29
30
  toFileModuleUrl
30
- } from "./chunk-7GNWGLWB.mjs";
31
+ } from "./chunk-43FMW62B.mjs";
31
32
  import {
32
33
  logger
33
34
  } from "./chunk-KI3MESHB.mjs";
@@ -251,7 +252,7 @@ var _APIRouteManager = class _APIRouteManager {
251
252
  }
252
253
  async loadModule(filePath) {
253
254
  if (this.viteServer) {
254
- return await this.viteServer.ssrLoadModule(filePath);
255
+ return await loadFarmDevModule(this.viteServer, filePath);
255
256
  }
256
257
  return await import(
257
258
  /* @vite-ignore */