@farm.js/core 0.1.0-beta.3 → 0.1.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-runtime.d.mts +2 -1
- package/dist/agent-runtime.d.ts +2 -1
- package/dist/api/route-manager.cjs +313 -10
- package/dist/api/route-manager.cjs.map +1 -1
- package/dist/api/route-manager.d.mts +3 -2
- package/dist/api/route-manager.d.ts +3 -2
- package/dist/api/route-manager.mjs +6 -5
- package/dist/api/runtime.cjs +313 -10
- package/dist/api/runtime.cjs.map +1 -1
- package/dist/api/runtime.d.mts +2 -1
- package/dist/api/runtime.d.ts +2 -1
- package/dist/api/runtime.mjs +4 -3
- package/dist/api.cjs +642 -57
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.mts +3 -2
- package/dist/api.d.ts +3 -2
- package/dist/api.mjs +29 -9
- package/dist/{app-DOKxo-LH.d.ts → app-BjN-da13.d.ts} +38 -3
- package/dist/{app-BB3Iu3xh.d.mts → app-CakAr8Be.d.mts} +38 -3
- package/dist/app-markdown.d.mts +2 -1
- package/dist/app-markdown.d.ts +2 -1
- package/dist/cache.cjs +395 -12
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.mts +100 -6
- package/dist/cache.d.ts +100 -6
- package/dist/cache.mjs +8 -2
- package/dist/{chunk-XUBZ7JI4.mjs → chunk-2CUKEMVR.mjs} +187 -16
- package/dist/chunk-2CUKEMVR.mjs.map +1 -0
- package/dist/{chunk-OHC6VCDI.mjs → chunk-2NHCNRF6.mjs} +521 -42
- package/dist/chunk-2NHCNRF6.mjs.map +1 -0
- package/dist/{chunk-6WXJ54TC.mjs → chunk-65A7QIKI.mjs} +5 -5
- package/dist/{chunk-6WXJ54TC.mjs.map → chunk-65A7QIKI.mjs.map} +1 -1
- package/dist/{chunk-5QH4IKY3.mjs → chunk-7N62DNSO.mjs} +2 -2
- package/dist/{chunk-XJSHJN4M.mjs → chunk-A2LUXHD2.mjs} +593 -49
- package/dist/chunk-A2LUXHD2.mjs.map +1 -0
- package/dist/chunk-ALCLXXTY.mjs +187 -0
- package/dist/chunk-ALCLXXTY.mjs.map +1 -0
- package/dist/{chunk-CSU4KJJF.mjs → chunk-C2ROET2V.mjs} +2 -2
- package/dist/{chunk-JNYVN7YP.mjs → chunk-EEABSBKK.mjs} +2 -2
- package/dist/{chunk-JNYVN7YP.mjs.map → chunk-EEABSBKK.mjs.map} +1 -1
- package/dist/{chunk-BIOIOWXZ.mjs → chunk-HNIQFZKB.mjs} +2 -2
- package/dist/{chunk-MH6FKW2I.mjs → chunk-J5YWQVI5.mjs} +4 -4
- package/dist/chunk-J5YWQVI5.mjs.map +1 -0
- package/dist/{chunk-G5I34UA6.mjs → chunk-JDEOUK5V.mjs} +4 -4
- package/dist/{chunk-T543TMFY.mjs → chunk-NM3CRAAL.mjs} +3 -2
- package/dist/chunk-NM3CRAAL.mjs.map +1 -0
- package/dist/{chunk-LWMGIEJA.mjs → chunk-PFE6GMNE.mjs} +47 -37
- package/dist/chunk-PFE6GMNE.mjs.map +1 -0
- package/dist/{chunk-6VS6CKAV.mjs → chunk-QM746KUO.mjs} +8 -1
- package/dist/chunk-QM746KUO.mjs.map +1 -0
- package/dist/{chunk-5FW6PQ3J.mjs → chunk-QTZZ2ISQ.mjs} +41 -16
- package/dist/chunk-QTZZ2ISQ.mjs.map +1 -0
- package/dist/{chunk-SHRJG6OG.mjs → chunk-RBRLLZL5.mjs} +18 -3
- package/dist/chunk-RBRLLZL5.mjs.map +1 -0
- package/dist/{chunk-NRRFGX45.mjs → chunk-TQAEEJB4.mjs} +3 -3
- package/dist/{chunk-45LKHSHJ.mjs → chunk-UB5UOSHB.mjs} +24 -12
- package/dist/chunk-UB5UOSHB.mjs.map +1 -0
- package/dist/chunk-V3XURYJO.mjs +756 -0
- package/dist/chunk-V3XURYJO.mjs.map +1 -0
- package/dist/{chunk-HZYXGV4K.mjs → chunk-VY2UYN5R.mjs} +24 -4
- package/dist/chunk-VY2UYN5R.mjs.map +1 -0
- package/dist/{chunk-C33RALN7.mjs → chunk-W2CRQFF6.mjs} +79 -15
- package/dist/chunk-W2CRQFF6.mjs.map +1 -0
- package/dist/{chunk-LG3YINQN.mjs → chunk-Z5CQMP54.mjs} +3 -3
- package/dist/{client-DiViK9yK.d.mts → client-BT1mFQas.d.mts} +23 -4
- package/dist/{client-DpEBJbts.d.ts → client-Nn0q4eO4.d.ts} +23 -4
- package/dist/{client-plugins-CTnsZz_A.d.ts → client-plugins-Cw4qUGsw.d.ts} +6 -0
- package/dist/{client-plugins-Cnr0D3kk.d.mts → client-plugins-DQQ1adXM.d.mts} +6 -0
- package/dist/client-plugins.d.mts +2 -1
- package/dist/client-plugins.d.ts +2 -1
- package/dist/client.cjs +665 -82
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.mts +71 -5
- package/dist/client.d.ts +71 -5
- package/dist/client.mjs +10 -7
- package/dist/config.d.mts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/{devtools-HE4FTUDN.mjs → devtools-LVC3VB5P.mjs} +4 -4
- package/dist/docs.cjs +11 -1
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.mjs +4 -4
- package/dist/index.cjs +2113 -198
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +16 -16
- package/dist/index.d.ts +16 -16
- package/dist/index.mjs +49 -21
- package/dist/index.mjs.map +1 -1
- package/dist/integrations.d.mts +2 -1
- package/dist/integrations.d.ts +2 -1
- package/dist/internal/build-runtime.cjs +1455 -90
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +4 -3
- package/dist/internal/build-runtime.d.ts +4 -3
- package/dist/internal/build-runtime.mjs +15 -14
- package/dist/internal/config-runtime.cjs +12 -1
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +3 -2
- package/dist/internal/config-runtime.d.ts +3 -2
- package/dist/internal/config-runtime.mjs +3 -3
- package/dist/internal/production-runtime.cjs +282 -6
- package/dist/internal/production-runtime.cjs.map +1 -1
- package/dist/internal/production-runtime.d.mts +4 -4
- package/dist/internal/production-runtime.d.ts +4 -4
- package/dist/internal/production-runtime.mjs +4 -2
- package/dist/{metadata-eoVmHoyv.d.ts → metadata-BAPg_Nmo.d.ts} +1 -1
- package/dist/{metadata-Dp8AdvsB.d.mts → metadata-_6i9oFG3.d.mts} +1 -1
- package/dist/middleware.d.mts +4 -3
- package/dist/middleware.d.ts +4 -3
- package/dist/navigation.cjs +40 -15
- package/dist/navigation.cjs.map +1 -1
- package/dist/navigation.mjs +2 -2
- package/dist/plugin.cjs +913 -53
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +2 -1
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.mjs +11 -10
- package/dist/{production-runtime-BqTnUTai.d.ts → production-runtime-BoJDc5mc.d.ts} +1 -1
- package/dist/{production-runtime-DtDdG9fc.d.mts → production-runtime-DPfgMV9Y.d.mts} +1 -1
- package/dist/routes.cjs +276 -6
- package/dist/routes.cjs.map +1 -1
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/routes.mjs +3 -3
- package/dist/{runtime-C1B7pSGT.d.mts → runtime-9nQjVM7X.d.mts} +8 -9
- package/dist/{runtime-CdPHt0bv.d.ts → runtime-DgeS2skB.d.ts} +8 -9
- package/dist/server-action-security.cjs +28 -10
- package/dist/server-action-security.cjs.map +1 -1
- package/dist/server-action-security.d.mts +2 -1
- package/dist/server-action-security.d.ts +2 -1
- package/dist/server-action-security.mjs +2 -2
- package/dist/server-fn-client.d.mts +1 -0
- package/dist/server-fn-client.d.ts +1 -0
- package/dist/server-fn.cjs +785 -3
- package/dist/server-fn.cjs.map +1 -1
- package/dist/server-fn.d.mts +10 -1
- package/dist/server-fn.d.ts +10 -1
- package/dist/server-fn.mjs +6 -3
- package/dist/server-plugins.d.mts +3 -2
- package/dist/server-plugins.d.ts +3 -2
- package/dist/server-query-client.cjs +279 -8
- package/dist/server-query-client.cjs.map +1 -1
- package/dist/server-query-client.mjs +4 -4
- package/dist/server-query.cjs +381 -10
- package/dist/server-query.cjs.map +1 -1
- package/dist/server-query.mjs +5 -5
- package/dist/server.cjs +1086 -76
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +8 -7
- package/dist/server.d.ts +8 -7
- package/dist/server.mjs +31 -16
- package/dist/server.mjs.map +1 -1
- package/dist/testing.cjs +341 -20
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.mts +3 -2
- package/dist/testing.d.ts +3 -2
- package/dist/testing.mjs +7 -6
- package/dist/testing.mjs.map +1 -1
- package/dist/transport-BmbGTXA5.d.mts +49 -0
- package/dist/transport-BmbGTXA5.d.ts +49 -0
- package/dist/{utils-8USa5BiY.d.mts → utils-CHXlMDkg.d.mts} +1 -1
- package/dist/{utils-DKJb6K6G.d.ts → utils-Drsyz1Vj.d.ts} +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +914 -54
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +2 -1
- package/dist/vite.d.ts +2 -1
- package/dist/vite.mjs +11 -10
- package/package.json +1 -1
- package/types/api.d.ts +44 -0
- package/types/client.d.ts +85 -4
- package/dist/chunk-45LKHSHJ.mjs.map +0 -1
- package/dist/chunk-5FW6PQ3J.mjs.map +0 -1
- package/dist/chunk-6VS6CKAV.mjs.map +0 -1
- package/dist/chunk-C33RALN7.mjs.map +0 -1
- package/dist/chunk-GZWT6VI5.mjs +0 -382
- package/dist/chunk-GZWT6VI5.mjs.map +0 -1
- package/dist/chunk-HZYXGV4K.mjs.map +0 -1
- package/dist/chunk-LWMGIEJA.mjs.map +0 -1
- package/dist/chunk-MH6FKW2I.mjs.map +0 -1
- package/dist/chunk-OHC6VCDI.mjs.map +0 -1
- package/dist/chunk-SHRJG6OG.mjs.map +0 -1
- package/dist/chunk-T543TMFY.mjs.map +0 -1
- package/dist/chunk-XJSHJN4M.mjs.map +0 -1
- package/dist/chunk-XUBZ7JI4.mjs.map +0 -1
- /package/dist/{chunk-5QH4IKY3.mjs.map → chunk-7N62DNSO.mjs.map} +0 -0
- /package/dist/{chunk-CSU4KJJF.mjs.map → chunk-C2ROET2V.mjs.map} +0 -0
- /package/dist/{chunk-BIOIOWXZ.mjs.map → chunk-HNIQFZKB.mjs.map} +0 -0
- /package/dist/{chunk-G5I34UA6.mjs.map → chunk-JDEOUK5V.mjs.map} +0 -0
- /package/dist/{chunk-NRRFGX45.mjs.map → chunk-TQAEEJB4.mjs.map} +0 -0
- /package/dist/{chunk-LG3YINQN.mjs.map → chunk-Z5CQMP54.mjs.map} +0 -0
- /package/dist/{devtools-HE4FTUDN.mjs.map → devtools-LVC3VB5P.mjs.map} +0 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-CGILA3WO.mjs";
|
|
4
|
+
|
|
5
|
+
// src/api/transport.ts
|
|
6
|
+
function multipart(schema) {
|
|
7
|
+
if (!Object.isExtensible(schema) && !isMultipartSchema(schema)) {
|
|
8
|
+
throw new TypeError("multipart() requires an extensible schema object");
|
|
9
|
+
}
|
|
10
|
+
if (!isMultipartSchema(schema)) {
|
|
11
|
+
Object.defineProperty(schema, "__farmMultipartSchema", {
|
|
12
|
+
value: true,
|
|
13
|
+
configurable: false,
|
|
14
|
+
enumerable: false,
|
|
15
|
+
writable: false
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return schema;
|
|
19
|
+
}
|
|
20
|
+
__name(multipart, "multipart");
|
|
21
|
+
function isMultipartSchema(value) {
|
|
22
|
+
return typeof value === "object" && value !== null && value.__farmMultipartSchema === true && typeof value.parse === "function";
|
|
23
|
+
}
|
|
24
|
+
__name(isMultipartSchema, "isMultipartSchema");
|
|
25
|
+
function toFormData(values) {
|
|
26
|
+
const formData = new FormData();
|
|
27
|
+
for (const [key, value] of Object.entries(values)) {
|
|
28
|
+
if (isUnsafeFormKey(key)) continue;
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
for (const entry of value) appendFormValue(formData, key, entry);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
appendFormValue(formData, key, value);
|
|
34
|
+
}
|
|
35
|
+
return formData;
|
|
36
|
+
}
|
|
37
|
+
__name(toFormData, "toFormData");
|
|
38
|
+
function jsonStream(source, init = {}) {
|
|
39
|
+
const iterator = toAsyncIterator(source);
|
|
40
|
+
const encoder = new TextEncoder();
|
|
41
|
+
let finished = false;
|
|
42
|
+
const body = new ReadableStream(
|
|
43
|
+
{
|
|
44
|
+
async pull(controller) {
|
|
45
|
+
if (finished) return;
|
|
46
|
+
try {
|
|
47
|
+
const next = await iterator.next();
|
|
48
|
+
if (next.done) {
|
|
49
|
+
finished = true;
|
|
50
|
+
controller.close();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}
|
|
54
|
+
`));
|
|
55
|
+
} catch (error) {
|
|
56
|
+
finished = true;
|
|
57
|
+
controller.error(error);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
async cancel(reason) {
|
|
61
|
+
finished = true;
|
|
62
|
+
await iterator.return?.(reason);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
// Do not read the next application event until the response consumer
|
|
67
|
+
// requests another chunk.
|
|
68
|
+
highWaterMark: 0
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
const headers = new Headers(init.headers);
|
|
72
|
+
if (!headers.has("content-type")) {
|
|
73
|
+
headers.set("content-type", "application/x-ndjson; charset=utf-8");
|
|
74
|
+
}
|
|
75
|
+
headers.set("cache-control", headers.get("cache-control") ?? "no-store");
|
|
76
|
+
return new Response(body, {
|
|
77
|
+
...init,
|
|
78
|
+
headers
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
__name(jsonStream, "jsonStream");
|
|
82
|
+
function isJSONStreamResponse(response) {
|
|
83
|
+
const contentType = response.headers?.get?.("content-type")?.toLowerCase() ?? "";
|
|
84
|
+
return contentType.includes("application/x-ndjson") || contentType.includes("application/ndjson");
|
|
85
|
+
}
|
|
86
|
+
__name(isJSONStreamResponse, "isJSONStreamResponse");
|
|
87
|
+
function readJSONStream(response) {
|
|
88
|
+
if (!response.body) {
|
|
89
|
+
throw new TypeError("Cannot read a JSON stream response without a body");
|
|
90
|
+
}
|
|
91
|
+
const reader = response.body.getReader();
|
|
92
|
+
const decoder = new TextDecoder();
|
|
93
|
+
let buffer = "";
|
|
94
|
+
let completed = false;
|
|
95
|
+
let claimed = false;
|
|
96
|
+
const iterator = {
|
|
97
|
+
async next() {
|
|
98
|
+
while (true) {
|
|
99
|
+
const lineEnd = buffer.indexOf("\n");
|
|
100
|
+
if (lineEnd >= 0) {
|
|
101
|
+
const line = buffer.slice(0, lineEnd).trim();
|
|
102
|
+
buffer = buffer.slice(lineEnd + 1);
|
|
103
|
+
if (!line) continue;
|
|
104
|
+
return { done: false, value: JSON.parse(line) };
|
|
105
|
+
}
|
|
106
|
+
if (completed) {
|
|
107
|
+
const line = buffer.trim();
|
|
108
|
+
buffer = "";
|
|
109
|
+
if (!line) return { done: true, value: void 0 };
|
|
110
|
+
return { done: false, value: JSON.parse(line) };
|
|
111
|
+
}
|
|
112
|
+
const chunk = await reader.read();
|
|
113
|
+
completed = chunk.done;
|
|
114
|
+
buffer += decoder.decode(chunk.value, { stream: !chunk.done });
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
async return() {
|
|
118
|
+
completed = true;
|
|
119
|
+
buffer = "";
|
|
120
|
+
await reader.cancel();
|
|
121
|
+
return { done: true, value: void 0 };
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
response,
|
|
126
|
+
async cancel(reason) {
|
|
127
|
+
completed = true;
|
|
128
|
+
buffer = "";
|
|
129
|
+
await reader.cancel(reason);
|
|
130
|
+
},
|
|
131
|
+
[Symbol.asyncIterator]() {
|
|
132
|
+
if (claimed) {
|
|
133
|
+
throw new TypeError("Farm API streams can only be consumed once");
|
|
134
|
+
}
|
|
135
|
+
claimed = true;
|
|
136
|
+
return iterator;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
__name(readJSONStream, "readJSONStream");
|
|
141
|
+
function isFarmAPIStream(value) {
|
|
142
|
+
return typeof value === "object" && value !== null && "response" in value && typeof value.cancel === "function" && typeof value[Symbol.asyncIterator] === "function";
|
|
143
|
+
}
|
|
144
|
+
__name(isFarmAPIStream, "isFarmAPIStream");
|
|
145
|
+
function appendFormValue(formData, key, value) {
|
|
146
|
+
if (value === void 0) return;
|
|
147
|
+
if (value === null) {
|
|
148
|
+
formData.append(key, "");
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (value instanceof Blob) {
|
|
152
|
+
formData.append(key, value);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (value instanceof Date) {
|
|
156
|
+
formData.append(key, value.toISOString());
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
formData.append(key, String(value));
|
|
160
|
+
}
|
|
161
|
+
__name(appendFormValue, "appendFormValue");
|
|
162
|
+
function isUnsafeFormKey(key) {
|
|
163
|
+
return key === "__proto__" || key === "constructor" || key === "prototype";
|
|
164
|
+
}
|
|
165
|
+
__name(isUnsafeFormKey, "isUnsafeFormKey");
|
|
166
|
+
function toAsyncIterator(source) {
|
|
167
|
+
if (Symbol.asyncIterator in Object(source)) {
|
|
168
|
+
return source[Symbol.asyncIterator]();
|
|
169
|
+
}
|
|
170
|
+
const iterator = source[Symbol.iterator]();
|
|
171
|
+
return {
|
|
172
|
+
next: /* @__PURE__ */ __name(async () => iterator.next(), "next"),
|
|
173
|
+
return: iterator.return ? async (value) => iterator.return(value) : void 0
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
__name(toAsyncIterator, "toAsyncIterator");
|
|
177
|
+
|
|
178
|
+
export {
|
|
179
|
+
multipart,
|
|
180
|
+
isMultipartSchema,
|
|
181
|
+
toFormData,
|
|
182
|
+
jsonStream,
|
|
183
|
+
isJSONStreamResponse,
|
|
184
|
+
readJSONStream,
|
|
185
|
+
isFarmAPIStream
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=chunk-ALCLXXTY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/transport.ts"],"sourcesContent":["export type MultipartField = string | number | boolean | bigint | Blob | Date | null | undefined;\n\nexport type MultipartValues = Record<string, MultipartField | readonly MultipartField[]>;\n\n/**\n * A real FormData value that retains the submitted value shape for generated\n * API-client inference.\n */\nexport type TypedFormData<TValues> = FormData & {\n readonly __farmMultipartInput: TValues;\n};\n\nexport type MultipartSchema<TSchema> = TSchema & {\n readonly __farmMultipartSchema: true;\n};\n\nexport type FarmStreamResponse<TItem> = Response & {\n readonly __farmStreamItem: TItem;\n};\n\nexport interface FarmAPIStream<TItem> extends AsyncIterable<TItem> {\n readonly response: Response;\n cancel(reason?: unknown): Promise<void>;\n}\n\ntype SchemaLike = {\n parse(data: unknown): unknown;\n};\n\n/**\n * Mark a body schema as multipart. The handler still receives the schema's\n * parsed object; generated clients require `toFormData(...)` for the request.\n */\nexport function multipart<TSchema extends SchemaLike>(schema: TSchema): MultipartSchema<TSchema> {\n if (!Object.isExtensible(schema) && !isMultipartSchema(schema)) {\n throw new TypeError(\"multipart() requires an extensible schema object\");\n }\n\n if (!isMultipartSchema(schema)) {\n Object.defineProperty(schema, \"__farmMultipartSchema\", {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n }\n\n return schema as MultipartSchema<TSchema>;\n}\n\nexport function isMultipartSchema(value: unknown): value is MultipartSchema<SchemaLike> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { __farmMultipartSchema?: unknown }).__farmMultipartSchema === true &&\n typeof (value as SchemaLike).parse === \"function\"\n );\n}\n\n/**\n * Encode a typed object as multipart FormData without converting File or Blob\n * values to JSON or base64.\n */\nexport function toFormData<TValues extends MultipartValues>(\n values: TValues,\n): TypedFormData<TValues> {\n const formData = new FormData();\n\n for (const [key, value] of Object.entries(values)) {\n if (isUnsafeFormKey(key)) continue;\n if (Array.isArray(value)) {\n for (const entry of value) appendFormValue(formData, key, entry);\n continue;\n }\n appendFormValue(formData, key, value as MultipartField);\n }\n\n return formData as TypedFormData<TValues>;\n}\n\n/**\n * Stream JSON values as newline-delimited JSON. Each source value becomes one\n * independently decodable item instead of buffering the whole response.\n */\nexport function jsonStream<TItem>(\n source: AsyncIterable<TItem> | Iterable<TItem>,\n init: ResponseInit = {},\n): FarmStreamResponse<TItem> {\n const iterator = toAsyncIterator(source);\n const encoder = new TextEncoder();\n let finished = false;\n\n const body = new ReadableStream<Uint8Array>(\n {\n async pull(controller) {\n if (finished) return;\n\n try {\n const next = await iterator.next();\n if (next.done) {\n finished = true;\n controller.close();\n return;\n }\n controller.enqueue(encoder.encode(`${JSON.stringify(next.value)}\\n`));\n } catch (error) {\n finished = true;\n controller.error(error);\n }\n },\n async cancel(reason) {\n finished = true;\n await iterator.return?.(reason);\n },\n },\n {\n // Do not read the next application event until the response consumer\n // requests another chunk.\n highWaterMark: 0,\n },\n );\n const headers = new Headers(init.headers);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/x-ndjson; charset=utf-8\");\n }\n headers.set(\"cache-control\", headers.get(\"cache-control\") ?? \"no-store\");\n\n return new Response(body, {\n ...init,\n headers,\n }) as FarmStreamResponse<TItem>;\n}\n\nexport function isJSONStreamResponse(response: { headers?: Pick<Headers, \"get\"> | null }): boolean {\n const contentType = response.headers?.get?.(\"content-type\")?.toLowerCase() ?? \"\";\n return contentType.includes(\"application/x-ndjson\") || contentType.includes(\"application/ndjson\");\n}\n\n/**\n * Decode a Farm JSON stream lazily. The response body is read only as the\n * consumer advances the async iterator, preserving fetch backpressure.\n */\nexport function readJSONStream<TItem>(response: Response): FarmAPIStream<TItem> {\n if (!response.body) {\n throw new TypeError(\"Cannot read a JSON stream response without a body\");\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let completed = false;\n let claimed = false;\n\n const iterator: AsyncIterator<TItem> = {\n async next() {\n while (true) {\n const lineEnd = buffer.indexOf(\"\\n\");\n if (lineEnd >= 0) {\n const line = buffer.slice(0, lineEnd).trim();\n buffer = buffer.slice(lineEnd + 1);\n if (!line) continue;\n return { done: false, value: JSON.parse(line) as TItem };\n }\n\n if (completed) {\n const line = buffer.trim();\n buffer = \"\";\n if (!line) return { done: true, value: undefined };\n return { done: false, value: JSON.parse(line) as TItem };\n }\n\n const chunk = await reader.read();\n completed = chunk.done;\n buffer += decoder.decode(chunk.value, { stream: !chunk.done });\n }\n },\n async return() {\n completed = true;\n buffer = \"\";\n await reader.cancel();\n return { done: true, value: undefined };\n },\n };\n\n return {\n response,\n async cancel(reason) {\n completed = true;\n buffer = \"\";\n await reader.cancel(reason);\n },\n [Symbol.asyncIterator]() {\n if (claimed) {\n throw new TypeError(\"Farm API streams can only be consumed once\");\n }\n claimed = true;\n return iterator;\n },\n };\n}\n\nexport function isFarmAPIStream(value: unknown): value is FarmAPIStream<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"response\" in value &&\n typeof (value as FarmAPIStream<unknown>).cancel === \"function\" &&\n typeof (value as FarmAPIStream<unknown>)[Symbol.asyncIterator] === \"function\"\n );\n}\n\nfunction appendFormValue(formData: FormData, key: string, value: MultipartField): void {\n if (value === undefined) return;\n if (value === null) {\n formData.append(key, \"\");\n return;\n }\n if (value instanceof Blob) {\n formData.append(key, value);\n return;\n }\n if (value instanceof Date) {\n formData.append(key, value.toISOString());\n return;\n }\n formData.append(key, String(value));\n}\n\nfunction isUnsafeFormKey(key: string): boolean {\n return key === \"__proto__\" || key === \"constructor\" || key === \"prototype\";\n}\n\nfunction toAsyncIterator<TItem>(\n source: AsyncIterable<TItem> | Iterable<TItem>,\n): AsyncIterator<TItem> {\n if (Symbol.asyncIterator in Object(source)) {\n return (source as AsyncIterable<TItem>)[Symbol.asyncIterator]();\n }\n\n const iterator = (source as Iterable<TItem>)[Symbol.iterator]();\n return {\n next: async () => iterator.next(),\n return: iterator.return ? async (value?: unknown) => iterator.return!(value) : undefined,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
createFarmCacheKey,
|
|
9
9
|
createRouteDataCacheTag,
|
|
10
10
|
getFarmDataCache
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-V3XURYJO.mjs";
|
|
12
12
|
import {
|
|
13
13
|
__name
|
|
14
14
|
} from "./chunk-CGILA3WO.mjs";
|
|
@@ -715,4 +715,4 @@ export {
|
|
|
715
715
|
createLayoutModuleFromProgrammaticLayout,
|
|
716
716
|
scanProgrammaticPagePaths
|
|
717
717
|
};
|
|
718
|
-
//# sourceMappingURL=chunk-
|
|
718
|
+
//# sourceMappingURL=chunk-C2ROET2V.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// package.json
|
|
2
|
-
var version = "0.1.0-beta.
|
|
2
|
+
var version = "0.1.0-beta.5";
|
|
3
3
|
|
|
4
4
|
// src/version.ts
|
|
5
5
|
var FARM_VERSION = version;
|
|
@@ -7,4 +7,4 @@ var FARM_VERSION = version;
|
|
|
7
7
|
export {
|
|
8
8
|
FARM_VERSION
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
10
|
+
//# sourceMappingURL=chunk-EEABSBKK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/version.ts"],"sourcesContent":["{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.3\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./dist/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":";AAEE,cAAW;;;ACAN,IAAM,eAAe;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/version.ts"],"sourcesContent":["{\n \"name\": \"@farm.js/core\",\n \"version\": \"0.1.0-beta.5\",\n \"description\": \"Core Farm.js framework for modern integrated apps\",\n \"keywords\": [\n \"@farm.js/core\",\n \"framework\",\n \"react\",\n \"rsc\",\n \"server-components\",\n \"ssr\",\n \"vite\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/farming-labs/farm.js\",\n \"directory\": \"packages/farm\"\n },\n \"files\": [\n \"dist\",\n \"types\"\n ],\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"typesVersions\": {\n \"*\": {\n \"middleware\": [\n \"./types/middleware.d.ts\",\n \"./dist/middleware.d.ts\"\n ],\n \"version\": [\n \"./dist/version.d.ts\"\n ],\n \"router\": [\n \"./dist/router.d.ts\"\n ],\n \"routes\": [\n \"./dist/routes.d.ts\"\n ],\n \"storage\": [\n \"./dist/storage.d.ts\"\n ],\n \"integrations\": [\n \"./dist/integrations.d.ts\"\n ],\n \"cache\": [\n \"./dist/cache.d.ts\"\n ],\n \"deferred\": [\n \"./dist/deferred.d.ts\"\n ],\n \"after\": [\n \"./dist/after.d.ts\"\n ],\n \"navigation\": [\n \"./dist/navigation.d.ts\"\n ],\n \"headers\": [\n \"./dist/headers.d.ts\"\n ],\n \"docs\": [\n \"./dist/docs.d.ts\"\n ],\n \"markdown\": [\n \"./dist/markdown.d.ts\"\n ],\n \"app-markdown\": [\n \"./dist/app-markdown.d.ts\"\n ],\n \"observability\": [\n \"./dist/observability.d.ts\"\n ],\n \"workflows\": [\n \"./dist/workflows.d.ts\"\n ],\n \"cron\": [\n \"./dist/cron.d.ts\"\n ],\n \"server-fn\": [\n \"./dist/server-fn.d.ts\"\n ],\n \"server-fn/client\": [\n \"./dist/server-fn-client.d.ts\"\n ],\n \"server-action-security\": [\n \"./dist/server-action-security.d.ts\"\n ],\n \"deployment\": [\n \"./dist/deployment.d.ts\"\n ],\n \"env\": [\n \"./dist/env.d.ts\"\n ],\n \"env-types\": [\n \"./dist/env-types.d.ts\"\n ],\n \"environment\": [\n \"./dist/environment.d.ts\"\n ],\n \"environment/vite\": [\n \"./dist/environment/vite.d.ts\"\n ],\n \"testing\": [\n \"./dist/testing.d.ts\"\n ],\n \"agent-runtime\": [\n \"./dist/agent-runtime.d.ts\"\n ],\n \"image\": [\n \"./dist/image.d.ts\"\n ],\n \"image/server\": [\n \"./dist/image/server.d.ts\"\n ],\n \"image/sharp\": [\n \"./dist/image/sharp.d.ts\"\n ],\n \"i18n\": [\n \"./dist/i18n/index.d.ts\"\n ],\n \"i18n/server\": [\n \"./dist/i18n/server.d.ts\"\n ],\n \"i18n/client\": [\n \"./dist/i18n/client.d.ts\"\n ],\n \"internal/production-runtime\": [\n \"./dist/internal/production-runtime.d.ts\"\n ],\n \"internal/client-runtime\": [\n \"./dist/internal/client-runtime.d.ts\"\n ],\n \"internal/build-runtime\": [\n \"./dist/internal/build-runtime.d.ts\"\n ],\n \"internal/config-runtime\": [\n \"./dist/internal/config-runtime.d.ts\"\n ],\n \"internal/production-node-env\": [\n \"./dist/internal/production-node-env.d.ts\"\n ],\n \"config\": [\n \"./dist/config.d.ts\"\n ],\n \"api\": [\n \"./types/api.d.ts\",\n \"./dist/api.d.ts\"\n ],\n \"api/route-manager\": [\n \"./dist/api/route-manager.d.ts\"\n ],\n \"api/runtime\": [\n \"./dist/api/runtime.d.ts\"\n ],\n \"request\": [\n \"./dist/request.d.ts\"\n ],\n \"client\": [\n \"./types/client.d.ts\",\n \"./dist/client.d.ts\"\n ],\n \"server\": [\n \"./dist/server.d.ts\"\n ],\n \"vite\": [\n \"./dist/vite.d.ts\"\n ],\n \"plugin\": [\n \"./dist/plugin.d.ts\"\n ],\n \"query\": [\n \"./dist/query/index.d.ts\"\n ],\n \"*\": [\n \"./dist/*.d.ts\"\n ]\n }\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./version\": {\n \"types\": \"./dist/version.d.ts\",\n \"import\": \"./dist/version.mjs\",\n \"require\": \"./dist/version.cjs\"\n },\n \"./config\": {\n \"types\": \"./dist/config.d.ts\",\n \"import\": \"./dist/config.mjs\",\n \"require\": \"./dist/config.cjs\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"import\": \"./dist/server.mjs\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./client\": {\n \"types\": \"./types/client.d.ts\",\n \"import\": \"./dist/client.mjs\",\n \"require\": \"./dist/client.cjs\"\n },\n \"./storage\": {\n \"types\": \"./dist/storage.d.ts\",\n \"import\": \"./dist/storage.mjs\",\n \"require\": \"./dist/storage.cjs\"\n },\n \"./integrations\": {\n \"types\": \"./dist/integrations.d.ts\",\n \"import\": \"./dist/integrations.mjs\",\n \"require\": \"./dist/integrations.cjs\"\n },\n \"./cache\": {\n \"types\": \"./dist/cache.d.ts\",\n \"import\": \"./dist/cache.mjs\",\n \"require\": \"./dist/cache.cjs\"\n },\n \"./deferred\": {\n \"types\": \"./dist/deferred.d.ts\",\n \"import\": \"./dist/deferred.mjs\",\n \"require\": \"./dist/deferred.cjs\"\n },\n \"./after\": {\n \"types\": \"./dist/after.d.ts\",\n \"import\": \"./dist/after.mjs\",\n \"require\": \"./dist/after.cjs\"\n },\n \"./navigation\": {\n \"types\": \"./dist/navigation.d.ts\",\n \"import\": \"./dist/navigation.mjs\",\n \"require\": \"./dist/navigation.cjs\"\n },\n \"./headers\": {\n \"types\": \"./dist/headers.d.ts\",\n \"import\": \"./dist/headers.mjs\",\n \"require\": \"./dist/headers.cjs\"\n },\n \"./docs\": {\n \"types\": \"./dist/docs.d.ts\",\n \"import\": \"./dist/docs.mjs\",\n \"require\": \"./dist/docs.cjs\"\n },\n \"./markdown\": {\n \"types\": \"./dist/markdown.d.ts\",\n \"import\": \"./dist/markdown.mjs\",\n \"require\": \"./dist/markdown.cjs\"\n },\n \"./app-markdown\": {\n \"types\": \"./dist/app-markdown.d.ts\",\n \"import\": \"./dist/app-markdown.mjs\",\n \"require\": \"./dist/app-markdown.cjs\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability.d.ts\",\n \"import\": \"./dist/observability.mjs\",\n \"require\": \"./dist/observability.cjs\"\n },\n \"./workflows\": {\n \"types\": \"./dist/workflows.d.ts\",\n \"import\": \"./dist/workflows.mjs\",\n \"require\": \"./dist/workflows.cjs\"\n },\n \"./cron\": {\n \"types\": \"./dist/cron.d.ts\",\n \"import\": \"./dist/cron.mjs\",\n \"require\": \"./dist/cron.cjs\"\n },\n \"./server-fn\": {\n \"types\": \"./dist/server-fn.d.ts\",\n \"import\": \"./dist/server-fn.mjs\",\n \"require\": \"./dist/server-fn.cjs\"\n },\n \"./server-fn/client\": {\n \"types\": \"./dist/server-fn-client.d.ts\",\n \"import\": \"./dist/server-fn-client.mjs\",\n \"require\": \"./dist/server-fn-client.cjs\"\n },\n \"./server-query\": {\n \"types\": \"./dist/server-query.d.ts\",\n \"import\": \"./dist/server-query.mjs\",\n \"require\": \"./dist/server-query.cjs\"\n },\n \"./server-query/client\": {\n \"types\": \"./dist/server-query-client.d.ts\",\n \"import\": \"./dist/server-query-client.mjs\",\n \"require\": \"./dist/server-query-client.cjs\"\n },\n \"./server-action-security\": {\n \"types\": \"./dist/server-action-security.d.ts\",\n \"import\": \"./dist/server-action-security.mjs\",\n \"require\": \"./dist/server-action-security.cjs\"\n },\n \"./deployment\": {\n \"types\": \"./dist/deployment.d.ts\",\n \"import\": \"./dist/deployment.mjs\",\n \"require\": \"./dist/deployment.cjs\"\n },\n \"./env\": {\n \"types\": \"./dist/env.d.ts\",\n \"import\": \"./dist/env.mjs\",\n \"require\": \"./dist/env.cjs\"\n },\n \"./env-types\": {\n \"types\": \"./dist/env-types.d.ts\",\n \"import\": \"./dist/env-types.mjs\",\n \"require\": \"./dist/env-types.cjs\"\n },\n \"./environment\": {\n \"types\": \"./dist/environment.d.ts\",\n \"import\": \"./dist/environment.mjs\",\n \"require\": \"./dist/environment.cjs\"\n },\n \"./environment/vite\": {\n \"types\": \"./dist/environment/vite.d.ts\",\n \"import\": \"./dist/environment/vite.mjs\",\n \"require\": \"./dist/environment/vite.cjs\"\n },\n \"./vite\": {\n \"types\": \"./dist/vite.d.ts\",\n \"import\": \"./dist/vite.mjs\",\n \"require\": \"./dist/vite.cjs\"\n },\n \"./plugin\": {\n \"types\": \"./dist/plugin.d.ts\",\n \"import\": \"./dist/plugin.mjs\",\n \"require\": \"./dist/plugin.cjs\"\n },\n \"./plugin/server\": {\n \"types\": \"./dist/server-plugins.d.ts\",\n \"import\": \"./dist/server-plugins.mjs\",\n \"require\": \"./dist/server-plugins.cjs\"\n },\n \"./plugin/client\": {\n \"types\": \"./dist/client-plugins.d.ts\",\n \"import\": \"./dist/client-plugins.mjs\",\n \"require\": \"./dist/client-plugins.cjs\"\n },\n \"./query\": {\n \"types\": \"./dist/query/index.d.ts\",\n \"import\": \"./dist/query/index.mjs\",\n \"require\": \"./dist/query/index.cjs\"\n },\n \"./query/parsers\": {\n \"types\": \"./dist/query/parsers.d.ts\",\n \"import\": \"./dist/query/parsers.mjs\",\n \"require\": \"./dist/query/parsers.cjs\"\n },\n \"./query/client\": {\n \"types\": \"./dist/query/client.d.ts\",\n \"import\": \"./dist/query/client.mjs\",\n \"require\": \"./dist/query/client.cjs\"\n },\n \"./query/server\": {\n \"types\": \"./dist/query/server.d.ts\",\n \"import\": \"./dist/query/server.mjs\",\n \"require\": \"./dist/query/server.cjs\"\n },\n \"./middleware\": {\n \"types\": \"./dist/middleware.d.ts\",\n \"import\": \"./dist/middleware.mjs\",\n \"require\": \"./dist/middleware.cjs\"\n },\n \"./api\": {\n \"types\": \"./dist/api.d.ts\",\n \"import\": \"./dist/api.mjs\",\n \"require\": \"./dist/api.cjs\"\n },\n \"./api/route-manager\": {\n \"types\": \"./dist/api/route-manager.d.ts\",\n \"import\": \"./dist/api/route-manager.mjs\",\n \"require\": \"./dist/api/route-manager.cjs\"\n },\n \"./api/runtime\": {\n \"types\": \"./dist/api/runtime.d.ts\",\n \"import\": \"./dist/api/runtime.mjs\",\n \"require\": \"./dist/api/runtime.cjs\"\n },\n \"./request\": {\n \"types\": \"./dist/request.d.ts\",\n \"import\": \"./dist/request.mjs\",\n \"require\": \"./dist/request.cjs\"\n },\n \"./router\": {\n \"types\": \"./dist/router.d.ts\",\n \"import\": \"./dist/router.mjs\",\n \"require\": \"./dist/router.cjs\"\n },\n \"./routes\": {\n \"types\": \"./dist/routes.d.ts\",\n \"import\": \"./dist/routes.mjs\",\n \"require\": \"./dist/routes.cjs\"\n },\n \"./testing\": {\n \"types\": \"./dist/testing.d.ts\",\n \"import\": \"./dist/testing.mjs\",\n \"require\": \"./dist/testing.cjs\"\n },\n \"./agent-runtime\": {\n \"types\": \"./dist/agent-runtime.d.ts\",\n \"import\": \"./dist/agent-runtime.mjs\",\n \"require\": \"./dist/agent-runtime.cjs\"\n },\n \"./image\": {\n \"types\": \"./dist/image.d.ts\",\n \"import\": \"./dist/image.mjs\",\n \"require\": \"./dist/image.cjs\"\n },\n \"./image/server\": {\n \"types\": \"./dist/image/server.d.ts\",\n \"import\": \"./dist/image/server.mjs\",\n \"require\": \"./dist/image/server.cjs\"\n },\n \"./image/sharp\": {\n \"types\": \"./dist/image/sharp.d.ts\",\n \"import\": \"./dist/image/sharp.mjs\",\n \"require\": \"./dist/image/sharp.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.mjs\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./i18n/server\": {\n \"types\": \"./dist/i18n/server.d.ts\",\n \"import\": \"./dist/i18n/server.mjs\",\n \"require\": \"./dist/i18n/server.cjs\"\n },\n \"./i18n/client\": {\n \"types\": \"./dist/i18n/client.d.ts\",\n \"import\": \"./dist/i18n/client.mjs\",\n \"require\": \"./dist/i18n/client.cjs\"\n },\n \"./internal/production-runtime\": {\n \"types\": \"./dist/internal/production-runtime.d.ts\",\n \"import\": \"./dist/internal/production-runtime.mjs\",\n \"require\": \"./dist/internal/production-runtime.cjs\"\n },\n \"./internal/client-runtime\": {\n \"types\": \"./dist/internal/client-runtime.d.ts\",\n \"import\": \"./dist/internal/client-runtime.mjs\",\n \"require\": \"./dist/internal/client-runtime.cjs\"\n },\n \"./internal/build-runtime\": {\n \"types\": \"./dist/internal/build-runtime.d.ts\",\n \"import\": \"./dist/internal/build-runtime.mjs\",\n \"require\": \"./dist/internal/build-runtime.cjs\"\n },\n \"./internal/config-runtime\": {\n \"types\": \"./dist/internal/config-runtime.d.ts\",\n \"import\": \"./dist/internal/config-runtime.mjs\",\n \"require\": \"./dist/internal/config-runtime.cjs\"\n },\n \"./internal/production-node-env\": {\n \"types\": \"./dist/internal/production-node-env.d.ts\",\n \"import\": \"./dist/internal/production-node-env.mjs\",\n \"require\": \"./dist/internal/production-node-env.cjs\"\n }\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:runtime\": \"tsup --config tsup.runtime.config.ts\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:coverage\": \"vitest --coverage\",\n \"lint\": \"biome lint .\",\n \"lint:fix\": \"biome lint --write .\",\n \"format\": \"biome format --write .\",\n \"type-check\": \"tsc --noEmit\",\n \"clean\": \"rm -rf dist\"\n },\n \"dependencies\": {\n \"@farming-labs/docs\": \"^0.2.44\",\n \"@farming-labs/orm\": \"0.0.62\",\n \"@farming-labs/orm-runtime\": \"0.0.62\",\n \"@formatjs/icu-messageformat-parser\": \"3.5.15\",\n \"@mdx-js/mdx\": \"^3.1.1\",\n \"@scalar/api-reference\": \"^1.38.1\",\n \"@scalar/openapi-parser\": \"^0.22.3\",\n \"@tailwindcss/vite\": \"4.1.18\",\n \"@vitejs/plugin-react\": \"^4.2.1\",\n \"better-call\": \"^1.0.19\",\n \"db0\": \"^0.3.4\",\n \"esbuild\": \"^0.28.0\",\n \"fast-glob\": \"^3.3.2\",\n \"h3\": \"2.0.1-rc.5\",\n \"image-size\": \"^2.0.2\",\n \"intl-messageformat\": \"11.2.12\",\n \"marked\": \"^12.0.2\",\n \"nitro\": \"3.0.1-alpha.0\",\n \"pg\": \"^8.20.0\",\n \"picocolors\": \"^1.0.0\",\n \"remark-gfm\": \"^4.0.1\",\n \"sirv\": \"^2.0.4\",\n \"sugar-high\": \"^0.9.5\",\n \"supports-color\": \"^10.2.2\",\n \"tailwindcss\": \"4.1.18\",\n \"unstorage\": \"^2.0.0-alpha.3\",\n \"vite\": \"^5.0.10\",\n \"zod\": \"^4.1.12\"\n },\n \"devDependencies\": {\n \"@clerk/react\": \"^6.1.0\",\n \"@types/react\": \"^18.2.45\",\n \"@types/react-dom\": \"^18.2.18\",\n \"@vitest/coverage-v8\": \"^1.1.0\",\n \"jsdom\": \"^25.0.0\",\n \"react\": \"19.2.8\",\n \"react-dom\": \"19.2.8\",\n \"tsup\": \"^8.3.5\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^1.1.0\"\n },\n \"peerDependencies\": {\n \"react\": \"^18.2.0 || ^19.0.0\",\n \"react-dom\": \"^18.2.0 || ^19.0.0\"\n },\n \"optionalDependencies\": {\n \"rolldown\": \"1.2.0\",\n \"sharp\": \"^0.34.5\",\n \"vite-rolldown\": \"npm:vite@8.1.5\"\n }\n}\n","import { version } from \"../package.json\";\n\nexport const FARM_VERSION = version;\n"],"mappings":";AAEE,cAAW;;;ACAN,IAAM,eAAe;","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-V7RBCSDJ.mjs";
|
|
5
5
|
import {
|
|
6
6
|
resolveDocsConfig
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-NM3CRAAL.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__name
|
|
10
10
|
} from "./chunk-CGILA3WO.mjs";
|
|
@@ -3547,4 +3547,4 @@ export {
|
|
|
3547
3547
|
createDocsAPI,
|
|
3548
3548
|
createFarmDocsAPIHandler
|
|
3549
3549
|
};
|
|
3550
|
-
//# sourceMappingURL=chunk-
|
|
3550
|
+
//# sourceMappingURL=chunk-HNIQFZKB.mjs.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getFarmClientDataCache
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TQAEEJB4.mjs";
|
|
4
4
|
import {
|
|
5
5
|
isFarmServerQueryResult
|
|
6
6
|
} from "./chunk-SCFX4UTD.mjs";
|
|
7
7
|
import {
|
|
8
8
|
createFarmCacheKey
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-V3XURYJO.mjs";
|
|
10
10
|
import {
|
|
11
11
|
__name
|
|
12
12
|
} from "./chunk-CGILA3WO.mjs";
|
|
@@ -73,7 +73,7 @@ function useServerQuery(query, input, options = {}) {
|
|
|
73
73
|
const key = createServerQueryCallKey(query, input);
|
|
74
74
|
const inputRef = useRef(input);
|
|
75
75
|
const optionsRef = useRef(options);
|
|
76
|
-
const mountedKeyRef = useRef();
|
|
76
|
+
const mountedKeyRef = useRef(void 0);
|
|
77
77
|
inputRef.current = input;
|
|
78
78
|
optionsRef.current = options;
|
|
79
79
|
const subscribe = useCallback(
|
|
@@ -208,4 +208,4 @@ export {
|
|
|
208
208
|
prefetchServerQuery,
|
|
209
209
|
useServerQuery
|
|
210
210
|
};
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
//# sourceMappingURL=chunk-J5YWQVI5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server-query-client.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useRef, useSyncExternalStore } from \"react\";\nimport { createFarmCacheKey } from \"./cache\";\nimport {\n getFarmClientDataCache,\n type FarmClientCacheEntry,\n type FarmClientCacheStatus,\n} from \"./client-cache\";\nimport type { ServerQuery } from \"./server-query\";\nimport { isFarmServerQueryResult, type FarmServerQueryResult } from \"./server-query-protocol\";\n\nexport type ServerQueryFetchOptions = {\n /** Used only when a non-Farm transport returns plain data. Farm transports use the declaration. */\n staleTime?: number | false;\n /** Return stale data immediately while refreshing it in the background. Default true. */\n swr?: boolean;\n /** Always wait for a new result. */\n force?: boolean;\n};\n\nexport type UseServerQueryOptions = ServerQueryFetchOptions & {\n enabled?: boolean;\n refetchOnWindowFocus?: boolean;\n refetchOnReconnect?: boolean;\n};\n\nexport type UseServerQueryResult<TData> = {\n data: TData | undefined;\n error: Error | null;\n status: FarmClientCacheStatus;\n pending: boolean;\n fetching: boolean;\n stale: boolean;\n refetch: () => Promise<TData>;\n};\n\nexport type FarmServerQueryActionInvocation = {\n actionId: string;\n args: readonly unknown[];\n provisionalKey?: string;\n};\n\ntype ActiveServerQueryInvocation = {\n provisionalKey: string;\n};\n\ntype ServerQueryClientState = {\n functionIds: WeakMap<Function, number>;\n nextFunctionId: number;\n active: ActiveServerQueryInvocation[];\n};\n\nconst FARM_SERVER_QUERY_CLIENT_STATE = Symbol.for(\"farm.serverQueryClientState\");\nconst serverQueryClientGlobal = globalThis as typeof globalThis & {\n [FARM_SERVER_QUERY_CLIENT_STATE]?: ServerQueryClientState;\n};\nconst serverQueryClientState = (serverQueryClientGlobal[FARM_SERVER_QUERY_CLIENT_STATE] ??= {\n functionIds: new WeakMap(),\n nextFunctionId: 0,\n active: [],\n});\n\nexport function beginFarmServerQueryAction(\n actionId: string,\n args: readonly unknown[],\n): FarmServerQueryActionInvocation {\n const active = serverQueryClientState.active.at(-1);\n return {\n actionId,\n args,\n provisionalKey: active?.provisionalKey,\n };\n}\n\nexport function completeFarmServerQueryAction<TData>(\n invocation: FarmServerQueryActionInvocation,\n value: TData | FarmServerQueryResult<TData>,\n): TData {\n if (!isFarmServerQueryResult(value)) return value as TData;\n\n const cache = getFarmClientDataCache();\n const metadata = value.__farmServerQuery;\n if (invocation.provisionalKey) {\n cache.alias(invocation.provisionalKey, metadata.key);\n }\n\n cache.set(metadata.key, {\n data: value.data,\n updatedAt: metadata.updatedAt,\n staleAt:\n metadata.staleTime === false\n ? Number.POSITIVE_INFINITY\n : metadata.updatedAt + metadata.staleTime,\n status: \"success\",\n error: null,\n fetching: false,\n });\n\n return value.data as TData;\n}\n\nexport async function fetchServerQuery<TInput, TData>(\n query: ServerQuery<TInput, TData>,\n input: TInput,\n options: ServerQueryFetchOptions = {},\n): Promise<TData> {\n const cache = getFarmClientDataCache();\n const provisionalKey = createServerQueryCallKey(query, input);\n const entry = cache.get<TData>(provisionalKey);\n const stale = cache.isStale(provisionalKey);\n const inflight = cache.getInflight<TData>(provisionalKey);\n\n if (inflight) return inflight;\n\n if (!options.force && entry && !stale && entry.status !== \"error\") {\n return entry.data;\n }\n\n if (\n !options.force &&\n entry &&\n stale &&\n entry.status !== \"pending\" &&\n entry.status !== \"error\" &&\n (options.swr ?? true)\n ) {\n void executeServerQuery(query, input, provisionalKey, options).catch(() => undefined);\n return entry.data;\n }\n\n return executeServerQuery(query, input, provisionalKey, options);\n}\n\nexport function prefetchServerQuery<TInput, TData>(\n query: ServerQuery<TInput, TData>,\n input: TInput,\n options: Omit<ServerQueryFetchOptions, \"force\"> = {},\n): Promise<TData> {\n return fetchServerQuery(query, input, options);\n}\n\nexport function useServerQuery<TInput, TData>(\n query: ServerQuery<TInput, TData>,\n input: TInput,\n options: UseServerQueryOptions = {},\n): UseServerQueryResult<TData> {\n const cache = getFarmClientDataCache();\n const key = createServerQueryCallKey(query, input);\n const inputRef = useRef(input);\n const optionsRef = useRef(options);\n const mountedKeyRef = useRef<string | undefined>(undefined);\n inputRef.current = input;\n optionsRef.current = options;\n\n const subscribe = useCallback(\n (listener: () => void) => cache.subscribe(key, listener),\n [cache, key],\n );\n const getSnapshot = useCallback(() => cache.get<TData>(key), [cache, key]);\n const entry = useSyncExternalStore(subscribe, getSnapshot, () => undefined);\n\n const run = useCallback(\n (force = false) =>\n fetchServerQuery(query, inputRef.current, {\n ...optionsRef.current,\n force,\n }),\n [query],\n );\n\n useEffect(() => {\n if (options.enabled === false) return;\n\n const firstReadForKey = mountedKeyRef.current !== key;\n if (firstReadForKey) mountedKeyRef.current = key;\n\n if (\n (firstReadForKey && (!entry || cache.isStale(key))) ||\n (entry?.invalidatedAt !== undefined && !entry.fetching)\n ) {\n void run().catch(() => undefined);\n }\n }, [cache, entry, key, options.enabled, run]);\n\n useEffect(() => {\n if (options.enabled === false || typeof window === \"undefined\") return;\n\n const refreshIfStale = () => {\n if (cache.isStale(key)) void run().catch(() => undefined);\n };\n const onFocus = options.refetchOnWindowFocus === false ? undefined : refreshIfStale;\n const onOnline = options.refetchOnReconnect === false ? undefined : refreshIfStale;\n\n if (onFocus) window.addEventListener(\"focus\", onFocus);\n if (onOnline) window.addEventListener(\"online\", onOnline);\n return () => {\n if (onFocus) window.removeEventListener(\"focus\", onFocus);\n if (onOnline) window.removeEventListener(\"online\", onOnline);\n };\n }, [cache, key, options.enabled, options.refetchOnReconnect, options.refetchOnWindowFocus, run]);\n\n const status = entry?.status ?? (entry ? \"success\" : \"idle\");\n const fetching = entry?.fetching ?? false;\n\n return {\n data: entry?.data,\n error: entry?.error ?? null,\n status,\n pending: status === \"pending\" && (entry?.updatedAt ?? 0) === 0,\n fetching,\n stale: cache.isStale(key),\n refetch: () => run(true),\n };\n}\n\nfunction createServerQueryCallKey<TInput, TData>(\n query: ServerQuery<TInput, TData>,\n input: TInput,\n): string {\n let id = serverQueryClientState.functionIds.get(query);\n if (!id) {\n id = ++serverQueryClientState.nextFunctionId;\n serverQueryClientState.functionIds.set(query, id);\n }\n return createFarmCacheKey([\"server-query-call\", id, input]);\n}\n\nasync function executeServerQuery<TInput, TData>(\n query: ServerQuery<TInput, TData>,\n input: TInput,\n provisionalKey: string,\n options: ServerQueryFetchOptions,\n): Promise<TData> {\n const cache = getFarmClientDataCache();\n const inflight = cache.getInflight<TData>(provisionalKey);\n if (inflight) return inflight;\n\n const previous = cache.get<TData>(provisionalKey);\n cache.set(provisionalKey, {\n data: previous?.data as TData,\n updatedAt: previous?.updatedAt ?? 0,\n staleAt: previous?.staleAt ?? 0,\n gcAt: previous?.gcAt,\n invalidatedAt: previous?.invalidatedAt,\n status: \"pending\",\n error: null,\n fetching: true,\n });\n\n const promise = (async () => {\n try {\n serverQueryClientState.active.push({ provisionalKey });\n let pending: Promise<TData>;\n try {\n pending = query(input);\n } finally {\n serverQueryClientState.active.pop();\n }\n\n const data = await pending;\n const transported = cache.get<TData>(provisionalKey);\n if (!transported || transported.fetching) {\n const updatedAt = Date.now();\n cache.set(provisionalKey, {\n data,\n updatedAt,\n staleAt:\n options.staleTime === false\n ? Number.POSITIVE_INFINITY\n : updatedAt + (options.staleTime ?? 0),\n status: \"success\",\n error: null,\n fetching: false,\n });\n }\n return data;\n } catch (cause) {\n const error = normalizeServerQueryError(cause);\n const current = cache.get<TData>(provisionalKey);\n cache.set(provisionalKey, {\n data: current?.data as TData,\n updatedAt: current?.updatedAt ?? 0,\n staleAt: current?.staleAt ?? 0,\n gcAt: current?.gcAt,\n invalidatedAt: current?.invalidatedAt,\n status: \"error\",\n error,\n fetching: false,\n });\n throw error;\n } finally {\n cache.deleteInflight(provisionalKey);\n }\n })();\n\n cache.setInflight(provisionalKey, promise);\n return promise;\n}\n\nfunction normalizeServerQueryError(cause: unknown): Error {\n if (cause instanceof Error) return cause;\n const error = new Error(typeof cause === \"string\" ? cause : \"Server query failed\");\n (error as Error & { cause?: unknown }).cause = cause;\n return error;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
API_ROUTE_METHODS,
|
|
9
9
|
findProgrammaticRouteFilesInDir
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Z5CQMP54.mjs";
|
|
11
11
|
import {
|
|
12
12
|
getProgrammaticRouteManifest,
|
|
13
13
|
isProgrammaticRoutesFileName
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-C2ROET2V.mjs";
|
|
15
15
|
import {
|
|
16
16
|
toViteModuleId
|
|
17
17
|
} from "./chunk-J4FNJ5IU.mjs";
|
|
18
18
|
import {
|
|
19
19
|
invokeAPIRouteEndpoint,
|
|
20
20
|
matchAPIRoute
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-PFE6GMNE.mjs";
|
|
22
22
|
import {
|
|
23
23
|
__name,
|
|
24
24
|
__require
|
|
@@ -424,4 +424,4 @@ __name(farmApiPlugin, "farmApiPlugin");
|
|
|
424
424
|
export {
|
|
425
425
|
farmApiPlugin
|
|
426
426
|
};
|
|
427
|
-
//# sourceMappingURL=chunk-
|
|
427
|
+
//# sourceMappingURL=chunk-JDEOUK5V.mjs.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-GY2STC2S.mjs";
|
|
20
20
|
import {
|
|
21
21
|
resolveServerActionsConfig
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UB5UOSHB.mjs";
|
|
23
23
|
import {
|
|
24
24
|
resolveMarkdownConfig
|
|
25
25
|
} from "./chunk-LLC7BNXW.mjs";
|
|
@@ -360,6 +360,7 @@ async function resolveConfig(userConfig, mode) {
|
|
|
360
360
|
observability: userConfig.observability ?? false,
|
|
361
361
|
devtools: resolveFarmDevtoolsConfig(userConfig.devtools, mode),
|
|
362
362
|
storage: userConfig.storage || {},
|
|
363
|
+
cache: userConfig.cache || {},
|
|
363
364
|
suppressLintOnLink: userConfig.suppressLintOnLink ?? false,
|
|
364
365
|
experimental: {
|
|
365
366
|
serverComponents: false,
|
|
@@ -463,4 +464,4 @@ export {
|
|
|
463
464
|
resolveConfig,
|
|
464
465
|
loadConfig
|
|
465
466
|
};
|
|
466
|
-
//# sourceMappingURL=chunk-
|
|
467
|
+
//# sourceMappingURL=chunk-NM3CRAAL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts"],"sourcesContent":["import type {\n FarmConfig as BaseFarmConfig,\n FarmMigrationCommand,\n FarmMigrationsConfig,\n FarmMigrationsUserConfig,\n ResolvedFarmMigrationsConfig,\n} from \"./types\";\nimport type { DocsConfig } from \"@farming-labs/docs\";\nimport type { FarmDocsResolvedConfig, FarmDocsUserConfig } from \"./docs/types\";\nimport type { FarmIntegrationsUserConfig } from \"./integrations\";\nimport type { FarmMarkdownResolvedConfig, FarmMarkdownUserConfig } from \"./markdown\";\nimport type { FarmObservabilityUserConfig } from \"./observability\";\nimport type { FarmMiddlewareConfig } from \"./middleware/types\";\nimport type { FarmPlugin } from \"./plugin\";\nimport type { FarmWorkflowsResolvedConfig, FarmWorkflowsUserConfig } from \"./workflows\";\nimport type { FarmCronResolvedConfig, FarmCronUserConfig } from \"./cron\";\nimport type { FarmEnvConfig, ResolvedFarmEnv } from \"./env\";\nimport type { UserConfig as ViteUserConfig } from \"vite\";\nimport { resolveIntegrationPlugins } from \"./integrations\";\nimport { resolveMarkdownConfig } from \"./markdown\";\nimport { resolveWorkflowsConfig } from \"./workflows\";\nimport { resolveCronConfig } from \"./cron\";\nimport { resolveEnv, setEnv } from \"./env\";\nimport {\n resolveMdxConfig,\n type FarmMdxResolvedConfig,\n type FarmMdxUserConfig,\n} from \"./app-markdown\";\nimport {\n normalizeRouteRules,\n routeRulesToHeaders,\n routeRulesToRedirects,\n type FarmRouteRules,\n} from \"./route-rules\";\nimport {\n resolveServerActionsConfig,\n type FarmServerActionsConfig,\n type ResolvedFarmServerActionsConfig,\n} from \"./server-action-security\";\nimport {\n loadFarmConfigFile,\n resolveFarmLayers,\n type FarmLayerEntry,\n type ResolvedFarmLayer,\n} from \"./layers\";\nimport path from \"path\";\nimport { normalizeFarmDeploymentId } from \"./deployment\";\nimport { resolveFarmDevtoolsConfig, type ResolvedFarmDevtoolsConfig } from \"./devtools-config\";\nimport {\n resolveFarmImageConfig,\n type FarmImageConfig,\n type ResolvedFarmImageConfig,\n} from \"./image-config\";\nimport { resolveFarmI18nConfig } from \"./i18n/config\";\nimport type { FarmI18nUserConfig, ResolvedFarmI18nConfig } from \"./i18n/types\";\nimport type { FarmCacheUserConfig } from \"./cache\";\n\nconst FARM_RESOLVED_CUSTOM_CONTEXT = Symbol.for(\"farm.resolvedCustomContext\");\n\nexport type {\n FarmDocsConfigInput,\n FarmDocsNavigationConfig,\n FarmDocsResolvedConfig,\n FarmDocsSidebarItem,\n FarmDocsUserConfig,\n} from \"./docs/types\";\nexport type {\n FarmMarkdownResolvedConfig,\n FarmMarkdownRouteInput,\n FarmMarkdownUserConfig,\n} from \"./markdown\";\nexport type { FarmMdxComponents, FarmMdxResolvedConfig, FarmMdxUserConfig } from \"./app-markdown\";\nexport type {\n FarmMigrationCommand,\n FarmMigrationsConfig,\n FarmMigrationsUserConfig,\n ResolvedFarmMigrationsConfig,\n} from \"./types\";\nexport type { FarmWorkflowsResolvedConfig, FarmWorkflowsUserConfig } from \"./workflows\";\nexport type { FarmCronJobConfig, FarmCronResolvedConfig, FarmCronUserConfig } from \"./cron\";\nexport type {\n FarmRouteRule,\n FarmRouteRuleCors,\n FarmRouteRuleRedirect,\n FarmRouteRuleRenderMode,\n FarmRouteRules,\n} from \"./route-rules\";\nexport type {\n FarmServerActionsConfig,\n ResolvedFarmServerActionsConfig,\n} from \"./server-action-security\";\nexport type { FarmLayerEntry, ResolvedFarmLayer } from \"./layers\";\nexport type {\n FarmDevtoolsConfig,\n FarmDevtoolsUserConfig,\n ResolvedFarmDevtoolsConfig,\n} from \"./devtools-config\";\nexport type {\n FarmImageConfig,\n FarmImageFormat,\n FarmImageLocalPattern,\n FarmImageProvider,\n FarmImageRemotePattern,\n ResolvedFarmImageConfig,\n} from \"./image-config\";\nexport type {\n FarmI18nCookieConfig,\n FarmI18nDetectionSignal,\n FarmI18nDirection,\n FarmI18nRouting,\n FarmI18nUserConfig,\n ResolvedFarmI18nConfig,\n} from \"./i18n/types\";\n\nexport interface RedirectConfig {\n source: string;\n destination: string;\n permanent?: boolean;\n statusCode?: number;\n}\n\nexport interface HeaderConfig {\n source: string;\n headers: Array<{\n key: string;\n value: string;\n }>;\n}\n\nexport interface RewriteConfig {\n source: string;\n destination: string;\n}\n\n/** @deprecated Use FarmImageConfig. */\nexport type ImageConfig = FarmImageConfig;\n\n/** @deprecated Use FarmI18nUserConfig. */\nexport type I18nConfig = FarmI18nUserConfig;\n\nexport interface OpenAPIConfig {\n enabled?: boolean;\n route?: string;\n title?: string;\n description?: string;\n version?: string;\n servers?: Array<{\n url: string;\n description?: string;\n }>;\n contact?: {\n name?: string;\n email?: string;\n url?: string;\n };\n license?: {\n name: string;\n url?: string;\n };\n}\n\nexport type MiddlewareConfig = FarmMiddlewareConfig;\n\nexport interface NotFoundConfig {\n /** Path to a custom 404 page component (e.g., \"./src/app/not-found.tsx\") */\n component?: string;\n}\n\nexport type FarmDeployTarget = \"vercel\" | \"cloudflare\" | \"netlify\" | \"node\" | string;\n\nexport interface FarmDeployConfig {\n /**\n * Deployment platform. When present, Farm picks the matching Nitro preset and\n * output directory unless explicitly overridden.\n */\n target?: FarmDeployTarget;\n /** Nitro preset override. Usually inferred from target. */\n preset?: BaseFarmConfig[\"preset\"];\n /** Deployable output directory, relative to project root unless absolute. */\n outputDir?: string;\n /** Alias for outputDir for terser config. */\n output?: string;\n /** Cloudflare Pages project name used by `farm deploy --cloudflare`. */\n projectName?: string;\n vercel?: {\n outputDirectory?: string;\n buildCommand?: string;\n installCommand?: string;\n framework?: string | null;\n };\n cloudflare?: {\n outputDir?: string;\n projectName?: string;\n };\n netlify?: {\n outputDir?: string;\n site?: string;\n };\n}\n\nexport interface ResolvedFarmDeployConfig extends Omit<FarmDeployConfig, \"output\"> {\n target?: FarmDeployTarget;\n preset: BaseFarmConfig[\"preset\"];\n outputDir: string;\n}\n\nexport interface FarmUserConfig extends Omit<BaseFarmConfig, \"vite\" | \"docs\" | \"env\" | \"layers\"> {\n /** Reusable Farm directories or installed packages, applied from left to right. */\n extends?: readonly FarmLayerEntry[];\n plugins?: FarmPlugin[];\n integrations?: FarmIntegrationsUserConfig;\n /** Shared application data, route, ISR, and PPR cache. */\n cache?: FarmCacheUserConfig;\n migrations?: FarmMigrationsUserConfig;\n /** Map portable cron schedules to ordinary GET API routes. */\n cron?: FarmCronUserConfig | FarmCronResolvedConfig | false;\n workflows?: FarmWorkflowsUserConfig | boolean;\n preset?: BaseFarmConfig[\"preset\"];\n deploy?: FarmDeployConfig;\n docs?: FarmDocsUserConfig;\n md?: FarmMarkdownUserConfig | boolean;\n mdx?: FarmMdxUserConfig;\n observability?: FarmObservabilityUserConfig;\n\n trailingSlash?: boolean;\n redirects?: () => Promise<RedirectConfig[]> | RedirectConfig[];\n rewrites?: () => Promise<RewriteConfig[]> | RewriteConfig[];\n headers?: () => Promise<HeaderConfig[]> | HeaderConfig[];\n\n images?: ImageConfig;\n publicDir?: string;\n\n i18n?: FarmI18nUserConfig | false;\n openapi?: OpenAPIConfig;\n\n middleware?: FarmMiddlewareConfig;\n routeRules?: FarmRouteRules;\n context?: BaseFarmConfig[\"context\"];\n serverActions?: FarmServerActionsConfig;\n /** Build identifier used to detect and recover from deployment version skew. */\n deploymentId?: string;\n\n notFound?: NotFoundConfig;\n\n output?: \"standalone\" | \"static\" | \"export\";\n distDir?: string;\n generateBuildId?: () => string | Promise<string>;\n compress?: boolean;\n\n devIndicators?: {\n buildActivity?: boolean;\n buildActivityPosition?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\";\n };\n\n serverRuntimeConfig?: Record<string, any>;\n publicRuntimeConfig?: Record<string, any>;\n\n env?: FarmEnvConfig<any, any>;\n\n typescript?: {\n tsconfigPath?: string;\n ignoreBuildErrors?: boolean;\n };\n\n vite?: ViteUserConfig | ((config: ViteUserConfig) => ViteUserConfig);\n\n [key: string]: any;\n}\n\nexport interface ResolvedFarmConfig extends Required<\n Omit<\n FarmUserConfig,\n | \"extends\"\n | \"plugins\"\n | \"vite\"\n | \"deploy\"\n | \"docs\"\n | \"md\"\n | \"mdx\"\n | \"migrations\"\n | \"cron\"\n | \"workflows\"\n | \"env\"\n | \"serverActions\"\n | \"devtools\"\n | \"images\"\n | \"i18n\"\n >\n> {\n /** @internal Tracks whether `context` came from user/layer config instead of the default noop. */\n [FARM_RESOLVED_CUSTOM_CONTEXT]?: boolean;\n extends: readonly FarmLayerEntry[];\n layers: ResolvedFarmLayer[];\n plugins: FarmPlugin[];\n vite: ViteUserConfig;\n deploy: ResolvedFarmDeployConfig;\n docs: FarmDocsResolvedConfig;\n md: FarmMarkdownResolvedConfig;\n mdx: FarmMdxResolvedConfig;\n migrations: ResolvedFarmMigrationsConfig;\n cron: FarmCronResolvedConfig;\n workflows: FarmWorkflowsResolvedConfig;\n env: ResolvedFarmEnv;\n serverActions: ResolvedFarmServerActionsConfig;\n devtools: ResolvedFarmDevtoolsConfig;\n images: ResolvedFarmImageConfig;\n i18n: ResolvedFarmI18nConfig;\n routeRules: FarmRouteRules;\n}\n\nexport function hasCustomFarmRouteContext(config: ResolvedFarmConfig): boolean {\n return config[FARM_RESOLVED_CUSTOM_CONTEXT] === true;\n}\n\nexport type FarmLayerConfig = Omit<\n FarmUserConfig,\n | \"root\"\n | \"outDir\"\n | \"distDir\"\n | \"deploy\"\n | \"output\"\n | \"preset\"\n | \"publicDir\"\n | \"generateBuildId\"\n | \"deploymentId\"\n>;\n\nexport { defineConfig, defineFarmConfig } from \"./config-entry\";\n\nexport function normalizeDeployTarget(target?: FarmDeployTarget): FarmDeployTarget | undefined {\n if (!target) return undefined;\n if (target === \"cloudflare-pages\" || target === \"cloudflare_pages\") return \"cloudflare\";\n if (target === \"node-server\" || target === \"nitro\") return \"node\";\n return target;\n}\n\nexport function getPresetForDeployTarget(\n target?: FarmDeployTarget,\n): BaseFarmConfig[\"preset\"] | undefined {\n switch (normalizeDeployTarget(target)) {\n case \"vercel\":\n return \"vercel\";\n case \"cloudflare\":\n return \"cloudflare-pages\";\n case \"netlify\":\n return \"netlify\";\n case \"node\":\n return \"node-server\";\n default:\n return undefined;\n }\n}\n\nexport function getDeployTargetForPreset(preset?: string): FarmDeployTarget | undefined {\n if (!preset) return undefined;\n if (preset === \"vercel\" || preset === \"vercel-edge\") return \"vercel\";\n if (preset === \"cloudflare\" || preset === \"cloudflare-pages\" || preset === \"cloudflare-module\") {\n return \"cloudflare\";\n }\n if (preset === \"netlify\" || preset === \"netlify-edge\") return \"netlify\";\n if (preset === \"node-server\") return \"node\";\n return undefined;\n}\n\nexport function getDefaultDeployOutputDir(\n target: FarmDeployTarget | undefined,\n preset: string | undefined,\n distDir: string,\n): string {\n const normalizedTarget = normalizeDeployTarget(target) || getDeployTargetForPreset(preset);\n if (normalizedTarget === \"vercel\") return \".vercel/output\";\n return `${distDir}/.output`;\n}\n\nexport function resolveDeployOutputPath(root: string, outputDir: string): string {\n return path.isAbsolute(outputDir) ? outputDir : path.join(root, outputDir);\n}\n\nexport function resolveDeployConfig(\n config: Pick<FarmUserConfig, \"deploy\" | \"preset\" | \"distDir\">,\n overrides: {\n target?: FarmDeployTarget;\n preset?: BaseFarmConfig[\"preset\"];\n outputDir?: string;\n } = {},\n): ResolvedFarmDeployConfig {\n const deploy = config.deploy || {};\n const distDir = config.distDir || \".farm\";\n const target = normalizeDeployTarget(overrides.target || deploy.target);\n const preset =\n overrides.preset ||\n deploy.preset ||\n config.preset ||\n getPresetForDeployTarget(target) ||\n \"node-server\";\n const resolvedTarget = target || getDeployTargetForPreset(preset);\n const platformOutput =\n resolvedTarget === \"vercel\"\n ? deploy.vercel?.outputDirectory\n : resolvedTarget === \"cloudflare\"\n ? deploy.cloudflare?.outputDir\n : resolvedTarget === \"netlify\"\n ? deploy.netlify?.outputDir\n : undefined;\n const outputDir =\n overrides.outputDir ||\n deploy.outputDir ||\n deploy.output ||\n platformOutput ||\n getDefaultDeployOutputDir(resolvedTarget, preset, distDir);\n\n return {\n ...deploy,\n target: resolvedTarget,\n preset,\n outputDir,\n };\n}\n\nexport function resolveMigrationsConfig(\n migrations: FarmMigrationsUserConfig | undefined,\n): ResolvedFarmMigrationsConfig {\n if (!migrations) return { commands: [] };\n if (Array.isArray(migrations)) return { commands: migrations };\n return { commands: migrations.commands || [] };\n}\n\nexport const DOCS_CONFIG_FILENAMES = [\n \"docs.config.ts\",\n \"docs.config.tsx\",\n \"docs.config.mts\",\n \"docs.config.cts\",\n \"docs.config.js\",\n \"docs.config.jsx\",\n \"docs.config.mjs\",\n \"docs.config.cjs\",\n \"docs.json\",\n];\n\nfunction normalizeDocsRoute(value: string | undefined, fallback = \"/docs\"): string {\n const raw = (value || fallback).trim();\n if (!raw || raw === \"/\") return \"/\";\n const normalized = raw\n .replace(/\\\\/g, \"/\")\n .replace(/\\/+/g, \"/\")\n .replace(/^\\/?/, \"/\")\n .replace(/\\/+$/, \"\");\n return normalized || \"/\";\n}\n\nfunction docsRouteToEntry(route: string): string {\n const entry = route.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n return entry || \"docs\";\n}\n\nfunction normalizeDocsContentDir(value: string | undefined): string | undefined {\n if (!value) return undefined;\n const normalized = value.replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n return normalized || undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, any> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction cloneSerializable(value: unknown, seen = new WeakSet<object>()): any {\n if (value === null) return null;\n\n const valueType = typeof value;\n if (valueType === \"string\" || valueType === \"number\" || valueType === \"boolean\") {\n return value;\n }\n if (valueType === \"undefined\" || valueType === \"function\" || valueType === \"symbol\") {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map((item) => cloneSerializable(item, seen)).filter((item) => item !== undefined);\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n if (isRecord(value)) {\n if (seen.has(value)) return undefined;\n seen.add(value);\n\n const output: Record<string, any> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n const clonedValue = cloneSerializable(nestedValue, seen);\n if (clonedValue !== undefined) {\n output[key] = clonedValue;\n }\n }\n return output;\n }\n\n return undefined;\n}\n\nfunction sanitizeDocsConfig(config: Partial<DocsConfig>): Partial<DocsConfig> {\n return cloneSerializable(config) || {};\n}\n\nexport async function findDocsConfigPath(\n rootDir: string,\n configPath?: string,\n): Promise<string | undefined> {\n const { existsSync } = await import(\"fs\");\n const root = path.resolve(rootDir || process.cwd());\n\n if (configPath) {\n const resolvedPath = path.isAbsolute(configPath) ? configPath : path.join(root, configPath);\n if (!existsSync(resolvedPath)) {\n throw new Error(`Could not find docs config at ${configPath}.`);\n }\n return path.resolve(resolvedPath);\n }\n\n for (const filename of DOCS_CONFIG_FILENAMES) {\n const resolvedPath = path.join(root, filename);\n if (existsSync(resolvedPath)) {\n return resolvedPath;\n }\n }\n\n return undefined;\n}\n\nexport async function loadDocsConfig(\n rootDir: string,\n configPath?: string,\n): Promise<{ config: Partial<DocsConfig>; configPath: string } | undefined> {\n const fs = await import(\"fs/promises\");\n const { pathToFileURL } = await import(\"url\");\n const root = path.resolve(rootDir || process.cwd());\n const resolvedPath = await findDocsConfigPath(root, configPath);\n\n if (!resolvedPath) return undefined;\n\n try {\n if (resolvedPath.endsWith(\".json\")) {\n const content = await fs.readFile(resolvedPath, \"utf8\");\n return { config: JSON.parse(content), configPath: resolvedPath };\n }\n\n const { build } = await import(\"esbuild\");\n const configCacheDir = path.join(root, \".farm\", \".config-loader\");\n await fs.mkdir(configCacheDir, { recursive: true });\n const modulePath = path.join(\n configCacheDir,\n `docs-config-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`,\n );\n\n await build({\n absWorkingDir: root,\n entryPoints: [resolvedPath],\n outfile: modulePath,\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: `node${process.versions.node.split(\".\")[0]}`,\n packages: \"external\",\n jsx: \"automatic\",\n logLevel: \"silent\",\n sourcemap: \"inline\",\n });\n\n const moduleUrl = pathToFileURL(modulePath).href + `?t=${Date.now()}`;\n let importedConfig: any;\n\n try {\n importedConfig = await import(/* @vite-ignore */ moduleUrl);\n } finally {\n await fs.unlink(modulePath).catch(() => undefined);\n }\n\n return {\n config: importedConfig.default || importedConfig,\n configPath: resolvedPath,\n };\n } catch (error: any) {\n const relativePath = path.relative(root, resolvedPath) || resolvedPath;\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to load docs config from ${relativePath}: ${message}`);\n }\n}\n\nexport async function resolveDocsConfig(\n userDocs: FarmDocsUserConfig | undefined,\n options: {\n root?: string;\n srcDir?: string;\n } = {},\n): Promise<FarmDocsResolvedConfig> {\n const root = options.root || process.cwd();\n\n if (userDocs === false) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const docsOptions = isRecord(userDocs) ? userDocs : {};\n if (docsOptions.enabled === false) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const loadedConfig = await loadDocsConfig(root, docsOptions.configPath);\n const hasExplicitDocsConfig = userDocs === true || isRecord(userDocs);\n\n if (!hasExplicitDocsConfig && !loadedConfig) {\n return {\n enabled: false,\n entry: \"/docs\",\n config: { entry: \"docs\", docsPath: \"/docs\" },\n };\n }\n\n const inlineDocsConfig = sanitizeDocsConfig(docsOptions.config || {});\n const directDocsConfig = sanitizeDocsConfig({\n ...docsOptions,\n enabled: undefined,\n config: undefined,\n configPath: undefined,\n } as Partial<DocsConfig>);\n const loadedDocsConfig = sanitizeDocsConfig(loadedConfig?.config || {});\n const mergedDocsConfig: Partial<DocsConfig> = {\n ...loadedDocsConfig,\n ...inlineDocsConfig,\n ...directDocsConfig,\n };\n\n const explicitRoute = typeof docsOptions.entry === \"string\" ? docsOptions.entry : undefined;\n const configuredDocsPath =\n typeof mergedDocsConfig.docsPath === \"string\" ? mergedDocsConfig.docsPath : undefined;\n const configuredEntry =\n typeof mergedDocsConfig.entry === \"string\" ? mergedDocsConfig.entry : undefined;\n const entryRoute = normalizeDocsRoute(\n configuredDocsPath || explicitRoute || (configuredEntry ? `/${configuredEntry}` : undefined),\n );\n const docsEntry =\n explicitRoute && explicitRoute.startsWith(\"/\")\n ? docsRouteToEntry(explicitRoute)\n : docsRouteToEntry(configuredEntry || entryRoute);\n const contentDir = normalizeDocsContentDir(docsOptions.contentDir || mergedDocsConfig.contentDir);\n\n return {\n enabled: true,\n entry: entryRoute,\n contentDir,\n configPath: loadedConfig?.configPath,\n config: {\n ...mergedDocsConfig,\n entry: docsEntry,\n docsPath: entryRoute,\n ...(contentDir ? { contentDir } : {}),\n },\n };\n}\n\nexport async function resolveConfig(\n userConfig: FarmUserConfig,\n mode: \"development\" | \"production\",\n): Promise<ResolvedFarmConfig> {\n const projectRoot = userConfig.root || process.cwd();\n const layerResolution = await resolveFarmLayers(userConfig, {\n root: projectRoot,\n mode,\n });\n userConfig = layerResolution.config;\n\n const redirects =\n typeof userConfig.redirects === \"function\"\n ? await userConfig.redirects()\n : userConfig.redirects || [];\n\n const rewrites =\n typeof userConfig.rewrites === \"function\"\n ? await userConfig.rewrites()\n : userConfig.rewrites || [];\n\n const headers =\n typeof userConfig.headers === \"function\"\n ? await userConfig.headers()\n : userConfig.headers || [];\n const routeRules = normalizeRouteRules(userConfig.routeRules);\n const routeRuleRedirects = routeRulesToRedirects(routeRules);\n const routeRuleHeaders = routeRulesToHeaders(routeRules);\n\n const deploy = resolveDeployConfig(userConfig);\n const root = userConfig.root || process.cwd();\n const srcDir = userConfig.srcDir || \"src\";\n const docs = await resolveDocsConfig(userConfig.docs, { root, srcDir });\n const md = resolveMarkdownConfig(userConfig.md);\n const mdx = resolveMdxConfig(userConfig.mdx);\n const env = resolveEnv(userConfig.env, process.env);\n setEnv(env);\n const generateBuildId = userConfig.generateBuildId || (() => `build-${Date.now()}`);\n const deploymentId = normalizeFarmDeploymentId(\n userConfig.deploymentId ||\n process.env.FARM_DEPLOYMENT_ID ||\n process.env.VERCEL_GIT_COMMIT_SHA ||\n process.env.CF_PAGES_COMMIT_SHA ||\n (mode === \"production\" ? await generateBuildId() : \"development\"),\n );\n\n const resolved: ResolvedFarmConfig = {\n [FARM_RESOLVED_CUSTOM_CONTEXT]: typeof userConfig.context === \"function\",\n root,\n srcDir,\n extends: userConfig.extends || [],\n layers: layerResolution.layers,\n outDir: userConfig.outDir || \"dist\",\n basePath: userConfig.basePath || \"/\",\n preset: deploy.preset || \"node-server\",\n deploy,\n docs,\n md,\n mdx,\n migrations: resolveMigrationsConfig(userConfig.migrations),\n cron: resolveCronConfig(userConfig.cron),\n workflows: resolveWorkflowsConfig(userConfig.workflows),\n observability: userConfig.observability ?? false,\n devtools: resolveFarmDevtoolsConfig(userConfig.devtools, mode),\n storage: userConfig.storage || {},\n cache: userConfig.cache || {},\n suppressLintOnLink: userConfig.suppressLintOnLink ?? false,\n experimental: {\n serverComponents: false,\n serverActions: false,\n ...userConfig.experimental,\n },\n plugins: [...resolveIntegrationPlugins(userConfig.integrations), ...(userConfig.plugins || [])],\n integrations: userConfig.integrations || {},\n trailingSlash: userConfig.trailingSlash ?? false,\n redirects: () => [...redirects, ...routeRuleRedirects],\n rewrites: () => rewrites,\n headers: () => [...headers, ...routeRuleHeaders],\n routeRules,\n images: resolveFarmImageConfig(userConfig.images),\n publicDir: userConfig.publicDir || \"public\",\n i18n: resolveFarmI18nConfig(userConfig.i18n, { root, mode }),\n openapi: {\n enabled: false,\n route: \"/docs/reference\",\n title: \"API Documentation\",\n description: \"Auto-generated API documentation\",\n version: \"1.0.0\",\n servers: [{ url: \"http://localhost:3000\", description: \"Development server\" }],\n ...userConfig.openapi,\n },\n middleware: userConfig.middleware || {},\n notFound: userConfig.notFound || {},\n context: userConfig.context || (() => undefined),\n serverActions: resolveServerActionsConfig(userConfig.serverActions),\n deploymentId,\n output: userConfig.output || \"standalone\",\n distDir: userConfig.distDir || \".farm\",\n generateBuildId,\n compress: userConfig.compress ?? true,\n devIndicators: {\n buildActivity: true,\n buildActivityPosition: \"bottom-right\",\n ...userConfig.devIndicators,\n },\n serverRuntimeConfig: userConfig.serverRuntimeConfig || {},\n publicRuntimeConfig: userConfig.publicRuntimeConfig || {},\n env,\n typescript: {\n tsconfigPath: \"tsconfig.json\",\n ignoreBuildErrors: false,\n ...userConfig.typescript,\n },\n vite: typeof userConfig.vite === \"function\" ? userConfig.vite({}) : userConfig.vite || {},\n };\n\n return resolved;\n}\n\nexport async function loadConfig(\n rootDir?: string,\n configPath?: string,\n mode = process.env.NODE_ENV === \"production\" ? \"production\" : \"development\",\n loadEnvironment?: (typeof import(\"vite\"))[\"loadEnv\"],\n): Promise<FarmUserConfig | undefined> {\n const { existsSync } = await import(\"fs\");\n const loadEnv = loadEnvironment || (await import(\"vite\")).loadEnv;\n\n const root = rootDir || process.cwd();\n const loadedEnv = loadEnv(mode, root, \"\");\n for (const [key, value] of Object.entries(loadedEnv)) {\n if (process.env[key] === undefined) {\n process.env[key] = value;\n }\n }\n const searchPaths = [\n configPath,\n \"farm.config.ts\",\n \"farm.config.mts\",\n \"farm.config.js\",\n \"farm.config.mjs\",\n \"config.ts\",\n \"config.mts\",\n \"config.js\",\n \"config.mjs\",\n ].filter(Boolean) as string[];\n\n for (const relativePath of searchPaths) {\n try {\n // Use path.join for proper path construction\n const absolutePath = relativePath.startsWith(\"/\")\n ? relativePath\n : path.join(root, relativePath);\n\n // Normalize the path to handle any issues\n const normalizedPath = path.resolve(absolutePath);\n\n // Check if file exists before trying to import\n if (!existsSync(normalizedPath)) {\n continue;\n }\n\n const loadedConfig = await loadFarmConfigFile<FarmUserConfig>(normalizedPath, { root });\n return loadedConfig.root === undefined ? { ...loadedConfig, root } : loadedConfig;\n } catch (error: any) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Failed to load config from ${relativePath}: ${message}`);\n }\n }\n return undefined;\n}\n"],"mappings":"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","names":[]}
|