@farm.js/core 0.1.42 → 0.1.43
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-mcp-ssVy_tea.d.mts → agent-mcp-3KDz4hr9.d.mts} +1 -1
- package/dist/{agent-mcp-SSD6L3VZ.d.ts → agent-mcp-6yRebHk7.d.ts} +1 -1
- package/dist/agent-runtime.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/api/route-manager.d.mts +3 -3
- package/dist/api/route-manager.d.ts +3 -3
- package/dist/api/runtime.d.mts +2 -2
- package/dist/api/runtime.d.ts +2 -2
- package/dist/api.cjs +2 -2
- package/dist/api.d.mts +8 -3
- package/dist/api.d.ts +8 -3
- package/dist/api.mjs +1 -1
- package/dist/{app-KjFzdCqy.d.ts → app-8Db1zR-2.d.ts} +8 -4
- package/dist/{app-1h3lVT4a.d.mts → app-DlTWv4cn.d.mts} +8 -4
- package/dist/{app-manifest-D3RkVNuS.d.mts → app-manifest-TRzS7ZZ9.d.mts} +1 -1
- package/dist/{app-manifest-DaW8-tvX.d.ts → app-manifest-cO2jkG1F.d.ts} +1 -1
- package/dist/app-markdown.d.mts +2 -2
- package/dist/app-markdown.d.ts +2 -2
- package/dist/{chunk-ECKF2BAM.cjs → chunk-2GVF3C2F.cjs} +255 -42
- package/dist/chunk-2NXO5SBY.mjs +57 -0
- package/dist/chunk-3BROEWFY.cjs +39 -0
- package/dist/{chunk-NU25TRIO.mjs → chunk-4MRQ5OKQ.mjs} +11 -7
- package/dist/{chunk-375K2ZVU.mjs → chunk-4OCEMK72.mjs} +259 -48
- package/dist/{chunk-6PKXK4TY.mjs → chunk-53ZV6K65.mjs} +1 -1
- package/dist/{chunk-LYIZHJTK.cjs → chunk-5LPHJZSI.cjs} +14 -14
- package/dist/chunk-5NIWBWDD.mjs +97 -0
- package/dist/{chunk-NRDBW4MP.mjs → chunk-7IQQIPRZ.mjs} +10 -0
- package/dist/{chunk-QTEJGB5A.mjs → chunk-7SCCY6SI.mjs} +79 -176
- package/dist/chunk-APDGOKKE.cjs +148 -0
- package/dist/chunk-AZBSVLRM.cjs +132 -0
- package/dist/{chunk-ZS6HDNOM.cjs → chunk-BKPXWRTT.cjs} +6 -6
- package/dist/chunk-CEDPEDNW.cjs +98 -0
- package/dist/chunk-D5RFPV2H.mjs +148 -0
- package/dist/{chunk-724JLMS4.mjs → chunk-F646BZ4Y.mjs} +4 -2
- package/dist/{chunk-C5KVWHIH.cjs → chunk-G2Z5DGMS.cjs} +5 -3
- package/dist/{chunk-7YHSD3Z6.cjs → chunk-GVNCWSQV.cjs} +83 -29
- package/dist/{chunk-24SP5TGU.mjs → chunk-H4LXPWI2.mjs} +2 -2
- package/dist/chunk-H7BLEEAE.cjs +57 -0
- package/dist/{chunk-QKZMB7LY.cjs → chunk-HUMEHX24.cjs} +2 -2
- package/dist/{chunk-BD3D7EZV.cjs → chunk-IXFOBGLQ.cjs} +9 -3
- package/dist/{chunk-JG3MEQUH.cjs → chunk-JDJAPCR2.cjs} +420 -209
- package/dist/{chunk-MHN4UR5U.cjs → chunk-KFZZFZ7J.cjs} +7 -7
- package/dist/chunk-LRJRXXQZ.cjs +109 -0
- package/dist/{chunk-BXJ5HJTJ.cjs → chunk-LVABUXLA.cjs} +15 -11
- package/dist/{chunk-HCSVR4YZ.mjs → chunk-M3BXTWJM.mjs} +18 -0
- package/dist/{chunk-2JZHQDUY.mjs → chunk-NXO75WY4.mjs} +1 -1
- package/dist/{chunk-TUL355PH.mjs → chunk-OYSGGV6O.mjs} +135 -160
- package/dist/{chunk-JR4QCLJY.cjs → chunk-PDU4P2IC.cjs} +19 -1
- package/dist/chunk-PJEHUSHA.mjs +229 -0
- package/dist/chunk-QGH2RQVF.mjs +132 -0
- package/dist/{chunk-YWMZUGIS.mjs → chunk-R3ZFQJEF.mjs} +247 -34
- package/dist/{chunk-ZATTDMBW.cjs → chunk-RACQTC7K.cjs} +270 -367
- package/dist/{chunk-WSOBCAYO.cjs → chunk-RQYTOFQM.cjs} +23 -23
- package/dist/chunk-S34OBRMZ.mjs +109 -0
- package/dist/{chunk-TS4JHGUJ.mjs → chunk-S3ZEMCE6.mjs} +9 -3
- package/dist/{chunk-WWFTAUFG.cjs → chunk-SBH2JLLF.cjs} +12 -2
- package/dist/{chunk-YSLWRWWP.cjs → chunk-SKK6UF5P.cjs} +200 -46
- package/dist/chunk-T7J7E63D.cjs +144 -0
- package/dist/{chunk-PIZXONIS.mjs → chunk-TESO7EFU.mjs} +55 -1
- package/dist/{chunk-TCJ4A4A2.cjs → chunk-VIVQERJ5.cjs} +318 -344
- package/dist/{chunk-JIYYX7WU.mjs → chunk-VLXNGUKO.mjs} +1 -1
- package/dist/{chunk-OFZUJMCU.mjs → chunk-WPJQN64R.mjs} +195 -41
- package/dist/chunk-XARSG2TG.mjs +144 -0
- package/dist/chunk-XUGFRFD2.mjs +39 -0
- package/dist/{chunk-AHFRQMRX.cjs → chunk-YBDSTNMH.cjs} +1 -1
- package/dist/{chunk-U2UC7UGP.mjs → chunk-YGZH4T2X.mjs} +1 -1
- package/dist/chunk-YKUEJ3MG.cjs +229 -0
- package/dist/{chunk-IVQY6UTY.mjs → chunk-ZYWJIPKQ.mjs} +1 -1
- package/dist/{client-plugins-C9Py_50W.d.mts → client-plugins-Cv0OJtnM.d.mts} +21 -2
- package/dist/{client-plugins-DIem0I0W.d.ts → client-plugins-kwQuZcWq.d.ts} +21 -2
- package/dist/client-plugins.d.mts +1 -1
- package/dist/client-plugins.d.ts +1 -1
- package/dist/client.cjs +4 -3
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/client.mjs +3 -2
- package/dist/config.d.mts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/{devtools-Q3LBNUJ7.mjs → devtools-M22FEFPK.mjs} +3 -3
- package/dist/{devtools-2RY3EKHL.cjs → devtools-MLB3JJMC.cjs} +4 -4
- package/dist/docs.cjs +5 -5
- package/dist/docs.d.mts +2 -2
- package/dist/docs.d.ts +2 -2
- package/dist/docs.mjs +4 -4
- package/dist/index-CQOp8EmB.d.mts +48 -0
- package/dist/index-DAl0QTZS.d.ts +48 -0
- package/dist/index.cjs +40 -23
- package/dist/index.d.mts +15 -15
- package/dist/index.d.ts +15 -15
- package/dist/index.mjs +45 -28
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/internal/app-markdown-runtime.d.mts +2 -2
- package/dist/internal/app-markdown-runtime.d.ts +2 -2
- package/dist/internal/build-runtime.cjs +28 -14
- package/dist/internal/build-runtime.d.mts +12 -16
- package/dist/internal/build-runtime.d.ts +12 -16
- package/dist/internal/build-runtime.mjs +27 -13
- package/dist/internal/cli-runtime.cjs +22 -10
- package/dist/internal/cli-runtime.mjs +22 -10
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/client-runtime.cjs +5 -1
- package/dist/internal/client-runtime.d.mts +1 -0
- package/dist/internal/client-runtime.d.ts +1 -0
- package/dist/internal/client-runtime.mjs +4 -0
- package/dist/internal/compression-runtime.d.mts +1 -1
- package/dist/internal/compression-runtime.d.ts +1 -1
- package/dist/internal/config-runtime.cjs +4 -4
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +3 -3
- package/dist/internal/form-actions-client.cjs +18 -0
- package/dist/internal/form-actions-client.d.mts +5 -0
- package/dist/internal/form-actions-client.d.ts +5 -0
- package/dist/internal/form-actions-client.mjs +18 -0
- package/dist/internal/form-actions.cjs +18 -0
- package/dist/internal/form-actions.d.mts +14 -0
- package/dist/internal/form-actions.d.ts +14 -0
- package/dist/internal/form-actions.mjs +18 -0
- package/dist/internal/island-codec.cjs +22 -0
- package/dist/internal/island-codec.d.mts +29 -0
- package/dist/internal/island-codec.d.ts +29 -0
- package/dist/internal/island-codec.mjs +22 -0
- package/dist/internal/island-value-store.cjs +13 -0
- package/dist/internal/island-value-store.d.mts +6 -0
- package/dist/internal/island-value-store.d.ts +6 -0
- package/dist/internal/island-value-store.mjs +13 -0
- package/dist/internal/islands-runtime.cjs +77 -0
- package/dist/internal/islands-runtime.d.mts +57 -0
- package/dist/internal/islands-runtime.d.ts +57 -0
- package/dist/internal/islands-runtime.mjs +77 -0
- package/dist/internal/islands-server.cjs +19 -0
- package/dist/internal/islands-server.d.mts +3 -0
- package/dist/internal/islands-server.d.ts +3 -0
- package/dist/internal/islands-server.mjs +19 -0
- package/dist/internal/islx-client.cjs +5 -0
- package/dist/internal/islx-client.d.mts +2 -0
- package/dist/internal/islx-client.d.ts +2 -0
- package/dist/internal/islx-client.mjs +3 -0
- package/dist/internal/islx-react.cjs +4 -0
- package/dist/internal/islx-react.d.mts +1 -0
- package/dist/internal/islx-react.d.ts +1 -0
- package/dist/internal/islx-react.mjs +2 -0
- package/dist/internal/islx-server.cjs +5 -0
- package/dist/internal/islx-server.d.mts +2 -0
- package/dist/internal/islx-server.d.ts +2 -0
- package/dist/internal/islx-server.mjs +3 -0
- package/dist/internal/isolated-boundary.cjs +4 -3
- package/dist/internal/isolated-boundary.d.mts +13 -1
- package/dist/internal/isolated-boundary.d.ts +13 -1
- package/dist/internal/isolated-boundary.mjs +3 -2
- package/dist/internal/product-telemetry-runtime.cjs +2 -2
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/internal/production-runtime.cjs +23 -6
- package/dist/internal/production-runtime.d.mts +20 -10
- package/dist/internal/production-runtime.d.ts +20 -10
- package/dist/internal/production-runtime.mjs +23 -6
- package/dist/internal/server-tree.cjs +6 -3
- package/dist/internal/server-tree.d.mts +25 -2
- package/dist/internal/server-tree.d.ts +25 -2
- package/dist/internal/server-tree.mjs +7 -4
- package/dist/island-value-protocol-BRayRghM.d.mts +12 -0
- package/dist/island-value-protocol-BRayRghM.d.ts +12 -0
- package/dist/markdown.d.mts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/middleware.d.mts +3 -3
- package/dist/middleware.d.ts +3 -3
- package/dist/navigation.cjs +5 -4
- package/dist/navigation.d.mts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/navigation.mjs +4 -3
- package/dist/og.d.mts +5 -0
- package/dist/og.d.ts +5 -0
- package/dist/plugin.cjs +17 -11
- package/dist/plugin.d.mts +3 -3
- package/dist/plugin.d.ts +3 -3
- package/dist/plugin.mjs +16 -10
- package/dist/{production-runtime-bjjWq-DA.d.ts → production-runtime-5nArjFpn.d.ts} +1 -1
- package/dist/{production-runtime-CHFKIgpW.d.mts → production-runtime-BzsF2z5F.d.mts} +1 -1
- package/dist/query/client.cjs +6 -5
- package/dist/query/client.mjs +2 -1
- package/dist/{render-plan-DOHg6wdO.d.mts → render-plan-B9yQorV4.d.mts} +4 -2
- package/dist/{render-plan-B2UndB4x.d.ts → render-plan-fg6E_HvL.d.ts} +4 -2
- package/dist/renderer/react/server.cjs +7 -6
- package/dist/renderer/react/server.d.mts +3 -1
- package/dist/renderer/react/server.d.ts +3 -1
- package/dist/renderer/react/server.mjs +5 -4
- package/dist/renderer-client.cjs +5 -4
- package/dist/renderer-client.d.mts +3 -3
- package/dist/renderer-client.d.ts +3 -3
- package/dist/renderer-client.mjs +2 -1
- package/dist/renderer.d.mts +3 -1
- package/dist/renderer.d.ts +3 -1
- package/dist/{request-DQcGfdgQ.d.mts → request-C4j_g-BH.d.mts} +1 -1
- package/dist/{request-DVNXRQrI.d.ts → request-gz8vFK0n.d.ts} +1 -1
- package/dist/request.d.mts +2 -2
- package/dist/request.d.ts +2 -2
- package/dist/{route-rendering-B_6fj-GG.d.ts → route-rendering-DamyKVi3.d.ts} +1 -1
- package/dist/{route-rendering-CEX4mFn-.d.mts → route-rendering-iTTOwz1f.d.mts} +1 -1
- package/dist/{router-CKHPBKXX.d.mts → router-EoSzHlos.d.mts} +1 -1
- package/dist/{router-CHEMHm1P.d.ts → router-OVjDqVo8.d.ts} +1 -1
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/rsc-pipeline-LK4K5JFK.mjs +77 -0
- package/dist/rsc-pipeline-YCDRJME4.cjs +77 -0
- package/dist/{runtime-Br2ZDTAv.d.ts → runtime-CwiuozLd.d.ts} +1 -1
- package/dist/{runtime-jj8TKNsy.d.mts → runtime-DDH4tiuF.d.mts} +1 -1
- package/dist/{schema-dev-notice-5JPE67AI.cjs → schema-dev-notice-77ZL23PL.cjs} +4 -4
- package/dist/{schema-dev-notice-WLPZ6WKU.mjs → schema-dev-notice-BLXOS6U2.mjs} +2 -2
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server.cjs +55 -37
- package/dist/server.d.mts +15 -10
- package/dist/server.d.ts +15 -10
- package/dist/server.mjs +35 -17
- package/dist/{spa-router-BEvS9Erj.d.mts → spa-router-Br4qFCWf.d.mts} +8 -3
- package/dist/{spa-router-DmCuH5B7.d.ts → spa-router-BsWUKH73.d.ts} +8 -3
- package/dist/{ssg-gT093ETk.d.ts → ssg-Csy2vwpi.d.ts} +2 -2
- package/dist/{ssg-57v6cZcW.d.mts → ssg-Donyfcxy.d.mts} +2 -2
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{utils-CCTKvR-P.d.ts → utils-Luk72LXC.d.ts} +1 -1
- package/dist/{utils-raHHQVyL.d.mts → utils-d_k1ZZw0.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +17 -11
- package/dist/vite.d.mts +6 -4
- package/dist/vite.d.ts +6 -4
- package/dist/vite.mjs +16 -10
- package/package.json +53 -1
- package/dist/{chunk-35WS7P2V.mjs → chunk-26CXZR6L.mjs} +3 -3
- package/dist/{chunk-QEILRWVV.cjs → chunk-3XEMGDBF.cjs} +2 -2
- package/dist/{chunk-BPOTSHDO.cjs → chunk-IOAUK4OI.cjs} +2 -2
- package/dist/{chunk-BYR3RQPB.mjs → chunk-T76H22WI.mjs} +4 -4
|
@@ -1,7 +1,14 @@
|
|
|
1
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
2
|
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
var _chunkSBH2JLLFcjs = require('./chunk-SBH2JLLF.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkH7BLEEAEcjs = require('./chunk-H7BLEEAE.cjs');
|
|
5
12
|
|
|
6
13
|
|
|
7
14
|
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
@@ -9,10 +16,12 @@ var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
|
9
16
|
// src/client/server-tree.ts
|
|
10
17
|
var MEMO_TYPE = /* @__PURE__ */ Symbol.for("react.memo");
|
|
11
18
|
var FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for("react.forward_ref");
|
|
12
|
-
var SERVER_HTML_TAG = "
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
19
|
+
var SERVER_HTML_TAG = "f-html";
|
|
20
|
+
var FARM_SERVER_TREE_SCRIPT_TYPE = "f/tree";
|
|
21
|
+
var FARM_NOT_A_MARKER = /* @__PURE__ */ Symbol.for("farm.codec.not-a-marker");
|
|
22
|
+
var SERVER_TREE_CHUNK_SCRIPT_TYPE = "f/chunk";
|
|
23
|
+
var FARM_SERVER_TREE_PAYLOAD_ONLY_ATTRIBUTE = "partial";
|
|
24
|
+
var SERVER_HTML_ATTRIBUTE = "name";
|
|
16
25
|
var PARSER_SENSITIVE_TAGS = /* @__PURE__ */ new Set([
|
|
17
26
|
"caption",
|
|
18
27
|
"colgroup",
|
|
@@ -105,7 +114,7 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, serverHtmlNode, "serverHtmlNode");
|
|
|
105
114
|
async function resolveProps(state, props, context, host) {
|
|
106
115
|
const entries = await Promise.all(
|
|
107
116
|
Object.entries(props).map(async ([name, value]) => {
|
|
108
|
-
if (value === void 0) return null;
|
|
117
|
+
if (value === void 0 && (host || !state.codec)) return null;
|
|
109
118
|
if (name === "ref") {
|
|
110
119
|
if (value === null) return null;
|
|
111
120
|
throw new UnsupportedNode("receives a ref");
|
|
@@ -120,11 +129,21 @@ async function resolveProps(state, props, context, host) {
|
|
|
120
129
|
}
|
|
121
130
|
_chunkS3JO3N4Hcjs.__name.call(void 0, resolveProps, "resolveProps");
|
|
122
131
|
async function resolveValue(state, value, context, seen) {
|
|
132
|
+
const codec = state.codec;
|
|
133
|
+
const leaf = _optionalChain([codec, 'optionalAccess', _9 => _9.encodeLeaf, 'call', _10 => _10(value)]);
|
|
134
|
+
if (leaf) return leaf;
|
|
123
135
|
if (value === null || value === void 0) return null;
|
|
124
136
|
if (typeof value === "string" || typeof value === "boolean") return value;
|
|
125
137
|
if (typeof value === "number") {
|
|
126
138
|
return Number.isFinite(value) ? value : { $: "n", v: String(value) };
|
|
127
139
|
}
|
|
140
|
+
if (typeof value === "function") {
|
|
141
|
+
const actionId = _chunkSBH2JLLFcjs.getFarmActionId.call(void 0, value);
|
|
142
|
+
if (actionId) {
|
|
143
|
+
state.actions.set(actionId, value);
|
|
144
|
+
return { $: "a", v: actionId };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
128
147
|
if (typeof value !== "object") throw new UnsupportedNode(`passes a ${typeof value} value`);
|
|
129
148
|
if (state.ReactRuntime.isValidElement(value)) {
|
|
130
149
|
return resolveElement(state, value, context);
|
|
@@ -143,12 +162,18 @@ async function resolveValue(state, value, context, seen) {
|
|
|
143
162
|
if (Array.isArray(value)) {
|
|
144
163
|
return await Promise.all(value.map((entry) => resolveValue(state, entry, context, seen)));
|
|
145
164
|
}
|
|
165
|
+
if (codec && value instanceof Map) {
|
|
166
|
+
return { $: "M", v: await resolveValue(state, Array.from(value), context, seen) };
|
|
167
|
+
}
|
|
168
|
+
if (codec && value instanceof Set) {
|
|
169
|
+
return { $: "S", v: await resolveValue(state, Array.from(value), context, seen) };
|
|
170
|
+
}
|
|
146
171
|
const prototype = Object.getPrototypeOf(value);
|
|
147
172
|
if (prototype !== Object.prototype && prototype !== null) {
|
|
148
173
|
throw new UnsupportedNode("passes a class instance");
|
|
149
174
|
}
|
|
150
175
|
const entries = await Promise.all(
|
|
151
|
-
Object.entries(value).filter(([, entry]) => entry !== void 0).map(
|
|
176
|
+
Object.entries(value).filter(([, entry]) => entry !== void 0 || codec).map(
|
|
152
177
|
async ([name, entry]) => [
|
|
153
178
|
name,
|
|
154
179
|
await resolveValue(state, entry, context, seen)
|
|
@@ -212,9 +237,9 @@ async function resolveElement(state, element, context) {
|
|
|
212
237
|
encoded.catch(() => {
|
|
213
238
|
});
|
|
214
239
|
state.chunks.set(id, { encoded });
|
|
215
|
-
return withKey({ $: "
|
|
240
|
+
return withKey({ $: "p", f: fallback, i: id });
|
|
216
241
|
}
|
|
217
|
-
const clientReference =
|
|
242
|
+
const clientReference = _chunkSBH2JLLFcjs.getFarmClientReference.call(void 0, type);
|
|
218
243
|
if (clientReference) {
|
|
219
244
|
const { children, ...rest } = props;
|
|
220
245
|
const resolved2 = await resolveProps(state, rest, context, false);
|
|
@@ -237,7 +262,7 @@ async function resolveElement(state, element, context) {
|
|
|
237
262
|
const typeOf = type.$$typeof;
|
|
238
263
|
if (typeOf === MEMO_TYPE) {
|
|
239
264
|
type = type.type;
|
|
240
|
-
if (
|
|
265
|
+
if (_chunkSBH2JLLFcjs.getFarmClientReference.call(void 0, type)) {
|
|
241
266
|
return resolveElement(
|
|
242
267
|
state,
|
|
243
268
|
ReactRuntime.createElement(type, {
|
|
@@ -257,7 +282,7 @@ async function resolveElement(state, element, context) {
|
|
|
257
282
|
throw new UnsupportedNode("is not a function component");
|
|
258
283
|
}
|
|
259
284
|
if (typeof type !== "function") throw new UnsupportedNode("is not a function component");
|
|
260
|
-
if (_optionalChain([type, 'access',
|
|
285
|
+
if (_optionalChain([type, 'access', _11 => _11.prototype, 'optionalAccess', _12 => _12.isReactComponent])) {
|
|
261
286
|
throw new UnsupportedNode("is a class component");
|
|
262
287
|
}
|
|
263
288
|
let rendered = callServerComponent(
|
|
@@ -276,9 +301,13 @@ async function resolveElement(state, element, context) {
|
|
|
276
301
|
}
|
|
277
302
|
_chunkS3JO3N4Hcjs.__name.call(void 0, resolveElement, "resolveElement");
|
|
278
303
|
function serializeTreePayload(value) {
|
|
279
|
-
return JSON.stringify(value)
|
|
304
|
+
return escapeTreeJson(JSON.stringify(value));
|
|
280
305
|
}
|
|
281
306
|
_chunkS3JO3N4Hcjs.__name.call(void 0, serializeTreePayload, "serializeTreePayload");
|
|
307
|
+
function escapeTreeJson(json) {
|
|
308
|
+
return json.replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
309
|
+
}
|
|
310
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, escapeTreeJson, "escapeTreeJson");
|
|
282
311
|
var chunkComponents = /* @__PURE__ */ new WeakMap();
|
|
283
312
|
function getChunkComponent(ReactRuntime) {
|
|
284
313
|
const existing = chunkComponents.get(ReactRuntime.createElement);
|
|
@@ -351,7 +380,7 @@ function createTreeValue(ReactRuntime, value, resolver) {
|
|
|
351
380
|
typeof value.k === "string" ? { key: value.k } : null,
|
|
352
381
|
...createTreeChildren(ReactRuntime, value.c, resolver)
|
|
353
382
|
);
|
|
354
|
-
case "
|
|
383
|
+
case "p":
|
|
355
384
|
return ReactRuntime.createElement(
|
|
356
385
|
ReactRuntime.Suspense,
|
|
357
386
|
{
|
|
@@ -370,6 +399,8 @@ function createTreeValue(ReactRuntime, value, resolver) {
|
|
|
370
399
|
return resolver.serverHtml(value.i, typeof value.k === "string" ? value.k : null);
|
|
371
400
|
case "n":
|
|
372
401
|
return Number(value.v);
|
|
402
|
+
case "a":
|
|
403
|
+
return resolver.action(value.v);
|
|
373
404
|
case "P":
|
|
374
405
|
return fulfilledThenable(createTreeValue(ReactRuntime, value.v, resolver));
|
|
375
406
|
case "o": {
|
|
@@ -381,42 +412,134 @@ function createTreeValue(ReactRuntime, value, resolver) {
|
|
|
381
412
|
])
|
|
382
413
|
);
|
|
383
414
|
}
|
|
384
|
-
default:
|
|
415
|
+
default: {
|
|
416
|
+
if (value.$ !== void 0) {
|
|
417
|
+
if (!resolver.decode) throw new Error("typed props need islands mode");
|
|
418
|
+
const decoded = resolver.decode(
|
|
419
|
+
value,
|
|
420
|
+
(child) => createTreeValue(ReactRuntime, child, resolver)
|
|
421
|
+
);
|
|
422
|
+
if (decoded !== FARM_NOT_A_MARKER) return decoded;
|
|
423
|
+
}
|
|
385
424
|
return Object.fromEntries(
|
|
386
425
|
Object.entries(value).map(([name, entry]) => [
|
|
387
426
|
name,
|
|
388
427
|
createTreeValue(ReactRuntime, entry, resolver)
|
|
389
428
|
])
|
|
390
429
|
);
|
|
430
|
+
}
|
|
391
431
|
}
|
|
392
432
|
}
|
|
393
433
|
_chunkS3JO3N4Hcjs.__name.call(void 0, createTreeValue, "createTreeValue");
|
|
394
|
-
function createTreeScript(ReactRuntime,
|
|
395
|
-
|
|
396
|
-
type
|
|
397
|
-
|
|
434
|
+
function createTreeScript(ReactRuntime, type, name, json, values = [], attributes = {}) {
|
|
435
|
+
const script = ReactRuntime.createElement("script", {
|
|
436
|
+
type,
|
|
437
|
+
...name ? { name } : {},
|
|
438
|
+
...attributes,
|
|
398
439
|
dangerouslySetInnerHTML: { __html: json }
|
|
399
440
|
});
|
|
441
|
+
if (values.length === 0) return script;
|
|
442
|
+
return ReactRuntime.createElement(
|
|
443
|
+
ReactRuntime.Fragment,
|
|
444
|
+
null,
|
|
445
|
+
...values.map(
|
|
446
|
+
([valueKey, valueJson]) => ReactRuntime.createElement("script", {
|
|
447
|
+
key: valueKey,
|
|
448
|
+
type: _chunkH7BLEEAEcjs.FARM_VALUE_SCRIPT_TYPE,
|
|
449
|
+
name: valueKey,
|
|
450
|
+
dangerouslySetInnerHTML: { __html: valueJson }
|
|
451
|
+
})
|
|
452
|
+
),
|
|
453
|
+
script
|
|
454
|
+
);
|
|
400
455
|
}
|
|
401
456
|
_chunkS3JO3N4Hcjs.__name.call(void 0, createTreeScript, "createTreeScript");
|
|
402
|
-
function createTreePage(ReactRuntime, tree, json, resolver, key) {
|
|
457
|
+
function createTreePage(ReactRuntime, tree, json, resolver, key, values = []) {
|
|
403
458
|
return ReactRuntime.createElement(
|
|
404
459
|
ReactRuntime.Fragment,
|
|
405
460
|
key === void 0 ? null : { key },
|
|
406
461
|
createTreeValue(ReactRuntime, tree, resolver),
|
|
407
|
-
createTreeScript(ReactRuntime,
|
|
462
|
+
createTreeScript(ReactRuntime, FARM_SERVER_TREE_SCRIPT_TYPE, "", json, values)
|
|
408
463
|
);
|
|
409
464
|
}
|
|
410
465
|
_chunkS3JO3N4Hcjs.__name.call(void 0, createTreePage, "createTreePage");
|
|
466
|
+
function readTreeValueScripts(script) {
|
|
467
|
+
const values = [];
|
|
468
|
+
for (let node = script.previousElementSibling; _optionalChain([node, 'optionalAccess', _13 => _13.tagName]) === "SCRIPT" && node.getAttribute("type") === _chunkH7BLEEAEcjs.FARM_VALUE_SCRIPT_TYPE; node = node.previousElementSibling) {
|
|
469
|
+
values.unshift([_nullishCoalesce(node.getAttribute("name"), () => ( "")), _nullishCoalesce(node.textContent, () => ( ""))]);
|
|
470
|
+
}
|
|
471
|
+
return values;
|
|
472
|
+
}
|
|
473
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, readTreeValueScripts, "readTreeValueScripts");
|
|
474
|
+
async function createPayloadOnlyPage(state, payload, encode, resolver) {
|
|
475
|
+
const { ReactRuntime } = state;
|
|
476
|
+
const chunks = /* @__PURE__ */ new Map();
|
|
477
|
+
for (let pending = [...state.chunks.keys()]; pending.length > 0; ) {
|
|
478
|
+
const settled = await Promise.allSettled(
|
|
479
|
+
pending.map(async (id) => [id, await state.chunks.get(id).encoded])
|
|
480
|
+
);
|
|
481
|
+
for (const result of settled) {
|
|
482
|
+
if (result.status === "rejected") return null;
|
|
483
|
+
chunks.set(result.value[0], result.value[1]);
|
|
484
|
+
}
|
|
485
|
+
pending = [...state.chunks.keys()].filter((id) => !chunks.has(id));
|
|
486
|
+
}
|
|
487
|
+
return ReactRuntime.createElement(
|
|
488
|
+
ReactRuntime.Fragment,
|
|
489
|
+
null,
|
|
490
|
+
...Array.from(state.serverHtml.keys(), (id) => resolver.serverHtml(id, `h${id}`)),
|
|
491
|
+
ReactRuntime.createElement(
|
|
492
|
+
ReactRuntime.Fragment,
|
|
493
|
+
{ key: "payload" },
|
|
494
|
+
createTreeScript(
|
|
495
|
+
ReactRuntime,
|
|
496
|
+
FARM_SERVER_TREE_SCRIPT_TYPE,
|
|
497
|
+
"",
|
|
498
|
+
payload.json,
|
|
499
|
+
payload.values,
|
|
500
|
+
{
|
|
501
|
+
[FARM_SERVER_TREE_PAYLOAD_ONLY_ATTRIBUTE]: ""
|
|
502
|
+
}
|
|
503
|
+
)
|
|
504
|
+
),
|
|
505
|
+
...Array.from(chunks, ([id, encoded]) => {
|
|
506
|
+
const chunk = encode({ t: encoded });
|
|
507
|
+
return ReactRuntime.createElement(
|
|
508
|
+
ReactRuntime.Fragment,
|
|
509
|
+
{ key: `c${id}` },
|
|
510
|
+
createTreeScript(
|
|
511
|
+
ReactRuntime,
|
|
512
|
+
SERVER_TREE_CHUNK_SCRIPT_TYPE,
|
|
513
|
+
String(id),
|
|
514
|
+
chunk.json,
|
|
515
|
+
chunk.values
|
|
516
|
+
)
|
|
517
|
+
);
|
|
518
|
+
})
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, createPayloadOnlyPage, "createPayloadOnlyPage");
|
|
411
522
|
async function renderFarmServerTreePage(ReactRuntime, element, options) {
|
|
412
523
|
const state = {
|
|
413
524
|
ReactRuntime,
|
|
414
525
|
nextId: 0,
|
|
415
526
|
components: /* @__PURE__ */ new Map(),
|
|
416
527
|
serverHtml: /* @__PURE__ */ new Map(),
|
|
417
|
-
chunks: /* @__PURE__ */ new Map()
|
|
528
|
+
chunks: /* @__PURE__ */ new Map(),
|
|
529
|
+
actions: /* @__PURE__ */ new Map(),
|
|
530
|
+
codec: options.values ? _chunkH7BLEEAEcjs.getFarmIslandValuesServer.call(void 0, ) : void 0
|
|
418
531
|
};
|
|
419
532
|
const tree = await resolveValue(state, element, { parserSensitive: false }, /* @__PURE__ */ new Set());
|
|
533
|
+
const values = options.values ? _chunkH7BLEEAEcjs.getFarmIslandValuesServer.call(void 0, ) : void 0;
|
|
534
|
+
const held = values ? values.held() : null;
|
|
535
|
+
const encode = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (payload2) => {
|
|
536
|
+
if (!values) return { json: serializeTreePayload(payload2), values: [] };
|
|
537
|
+
const addressed = values.address(payload2);
|
|
538
|
+
return {
|
|
539
|
+
json: escapeTreeJson(addressed.json),
|
|
540
|
+
values: values.select(addressed, held).map((value) => [value.key, escapeTreeJson(value.json)])
|
|
541
|
+
};
|
|
542
|
+
}, "encode");
|
|
420
543
|
const resolver = {
|
|
421
544
|
component(reference, exportName) {
|
|
422
545
|
const Component = state.components.get(`${reference}#${exportName}`);
|
|
@@ -435,12 +558,16 @@ async function renderFarmServerTreePage(ReactRuntime, element, options) {
|
|
|
435
558
|
ReactRuntime.Fragment,
|
|
436
559
|
null,
|
|
437
560
|
createTreeValue(ReactRuntime, encoded, resolver),
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
561
|
+
(() => {
|
|
562
|
+
const payload2 = encode({ t: encoded });
|
|
563
|
+
return createTreeScript(
|
|
564
|
+
ReactRuntime,
|
|
565
|
+
SERVER_TREE_CHUNK_SCRIPT_TYPE,
|
|
566
|
+
String(id),
|
|
567
|
+
payload2.json,
|
|
568
|
+
payload2.values
|
|
569
|
+
);
|
|
570
|
+
})()
|
|
444
571
|
);
|
|
445
572
|
chunk.status = "fulfilled";
|
|
446
573
|
return chunk.value;
|
|
@@ -467,14 +594,14 @@ async function renderFarmServerTreePage(ReactRuntime, element, options) {
|
|
|
467
594
|
},
|
|
468
595
|
options.isolate(state.serverHtml.get(id))
|
|
469
596
|
);
|
|
470
|
-
}
|
|
597
|
+
},
|
|
598
|
+
action(id) {
|
|
599
|
+
return state.actions.get(id);
|
|
600
|
+
},
|
|
601
|
+
decode: state.codec ? (object, decodeChild) => _chunkH7BLEEAEcjs.getFarmIslandValuesServer.call(void 0, ).decode(object, decodeChild) : void 0
|
|
471
602
|
};
|
|
472
|
-
const
|
|
473
|
-
|
|
474
|
-
tree,
|
|
475
|
-
serializeTreePayload({ v: 1, t: tree }),
|
|
476
|
-
resolver
|
|
477
|
-
);
|
|
603
|
+
const payload = encode({ v: 1, t: tree });
|
|
604
|
+
const page = options.payloadOnly && await createPayloadOnlyPage(state, payload, encode, resolver) || createTreePage(ReactRuntime, tree, payload.json, resolver, void 0, payload.values);
|
|
478
605
|
return ReactRuntime.createElement(/* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, function FarmServerTreePage() {
|
|
479
606
|
return page;
|
|
480
607
|
}, "FarmServerTreePage"));
|
|
@@ -497,7 +624,7 @@ function parseHtml(html) {
|
|
|
497
624
|
}
|
|
498
625
|
_chunkS3JO3N4Hcjs.__name.call(void 0, parseHtml, "parseHtml");
|
|
499
626
|
function originalExport(module, exportName) {
|
|
500
|
-
const Component = _optionalChain([module, 'access',
|
|
627
|
+
const Component = _optionalChain([module, 'access', _14 => _14.__farm_client_boundary_originals__, 'optionalAccess', _15 => _15[exportName]]);
|
|
501
628
|
if (typeof Component !== "function" && typeof Component !== "object") {
|
|
502
629
|
throw new Error(`compiled original export ${exportName} was not found`);
|
|
503
630
|
}
|
|
@@ -506,19 +633,34 @@ function originalExport(module, exportName) {
|
|
|
506
633
|
_chunkS3JO3N4Hcjs.__name.call(void 0, originalExport, "originalExport");
|
|
507
634
|
async function createFarmServerTreeElement(ReactRuntime, source, options) {
|
|
508
635
|
const root = typeof source === "string" ? parseHtml(source) : source;
|
|
509
|
-
const script = root.querySelector(
|
|
636
|
+
const script = root.querySelector(
|
|
637
|
+
`script[type="${FARM_SERVER_TREE_SCRIPT_TYPE}"]`
|
|
638
|
+
);
|
|
510
639
|
if (!script) return null;
|
|
511
640
|
const json = _nullishCoalesce(script.textContent, () => ( ""));
|
|
512
|
-
|
|
641
|
+
let ingested = false;
|
|
642
|
+
const parsePayload = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (text) => {
|
|
643
|
+
const parsed = JSON.parse(text);
|
|
644
|
+
if (!text.includes(`"${_chunkH7BLEEAEcjs.FARM_TAG}":"${_chunkH7BLEEAEcjs.FARM_REFERENCE_TAG}"`)) return parsed;
|
|
645
|
+
if (!options.values) throw new Error("island values need islands mode");
|
|
646
|
+
if (!ingested) {
|
|
647
|
+
options.values.ingest(root);
|
|
648
|
+
ingested = true;
|
|
649
|
+
}
|
|
650
|
+
return options.values.resolve(parsed);
|
|
651
|
+
}, "parsePayload");
|
|
652
|
+
const payload = parsePayload(json);
|
|
513
653
|
if (payload.v !== 1) throw new Error("unsupported server tree payload version");
|
|
654
|
+
const values = readTreeValueScripts(script);
|
|
514
655
|
const chunks = /* @__PURE__ */ new Map();
|
|
515
656
|
for (const chunkScript of root.querySelectorAll(
|
|
516
|
-
`script[${
|
|
657
|
+
`script[type="${SERVER_TREE_CHUNK_SCRIPT_TYPE}"]`
|
|
517
658
|
)) {
|
|
518
659
|
const chunkJson = _nullishCoalesce(chunkScript.textContent, () => ( ""));
|
|
519
|
-
chunks.set(Number(chunkScript.getAttribute(
|
|
520
|
-
tree:
|
|
521
|
-
json: chunkJson
|
|
660
|
+
chunks.set(Number(chunkScript.getAttribute("name")), {
|
|
661
|
+
tree: parsePayload(chunkJson).t,
|
|
662
|
+
json: chunkJson,
|
|
663
|
+
values: readTreeValueScripts(chunkScript)
|
|
522
664
|
});
|
|
523
665
|
}
|
|
524
666
|
const references = /* @__PURE__ */ new Set();
|
|
@@ -549,7 +691,13 @@ async function createFarmServerTreeElement(ReactRuntime, source, options) {
|
|
|
549
691
|
ReactRuntime.Fragment,
|
|
550
692
|
null,
|
|
551
693
|
createTreeValue(ReactRuntime, chunk.tree, resolver),
|
|
552
|
-
createTreeScript(
|
|
694
|
+
createTreeScript(
|
|
695
|
+
ReactRuntime,
|
|
696
|
+
SERVER_TREE_CHUNK_SCRIPT_TYPE,
|
|
697
|
+
String(id),
|
|
698
|
+
chunk.json,
|
|
699
|
+
chunk.values
|
|
700
|
+
)
|
|
553
701
|
);
|
|
554
702
|
return { status: "fulfilled", value, promise: Promise.resolve(value) };
|
|
555
703
|
},
|
|
@@ -564,9 +712,14 @@ async function createFarmServerTreeElement(ReactRuntime, source, options) {
|
|
|
564
712
|
suppressHydrationWarning: true,
|
|
565
713
|
dangerouslySetInnerHTML: { __html: html }
|
|
566
714
|
});
|
|
567
|
-
}
|
|
715
|
+
},
|
|
716
|
+
action(id) {
|
|
717
|
+
if (!options.actions) throw new Error("server action props need islands mode");
|
|
718
|
+
return options.actions(id);
|
|
719
|
+
},
|
|
720
|
+
decode: options.decode ? (object, decodeChild) => options.decode(object, decodeChild) : void 0
|
|
568
721
|
};
|
|
569
|
-
const build = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => createTreePage(ReactRuntime, payload.t, json, resolver), "build");
|
|
722
|
+
const build = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, () => createTreePage(ReactRuntime, payload.t, json, resolver, void 0, values), "build");
|
|
570
723
|
build();
|
|
571
724
|
function FarmServerTreePage() {
|
|
572
725
|
const [, setVersion] = ReactRuntime.useState(0);
|
|
@@ -582,7 +735,7 @@ async function createFarmServerTreeElement(ReactRuntime, source, options) {
|
|
|
582
735
|
if (changed) setVersion((version) => version + 1);
|
|
583
736
|
return changed;
|
|
584
737
|
}, "listener");
|
|
585
|
-
return
|
|
738
|
+
return _chunkSBH2JLLFcjs.subscribeFarmServerTreeUpdates.call(void 0, listener);
|
|
586
739
|
}, []);
|
|
587
740
|
return build();
|
|
588
741
|
}
|
|
@@ -598,4 +751,5 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmServerTreeElement, "createFarmSe
|
|
|
598
751
|
|
|
599
752
|
|
|
600
753
|
|
|
601
|
-
|
|
754
|
+
|
|
755
|
+
exports.FARM_SERVER_TREE_SCRIPT_TYPE = FARM_SERVER_TREE_SCRIPT_TYPE; exports.FARM_SERVER_TREE_PAYLOAD_ONLY_ATTRIBUTE = FARM_SERVER_TREE_PAYLOAD_ONLY_ATTRIBUTE; exports.renderFarmServerTreePage = renderFarmServerTreePage; exports.createFarmServerTreeElement = createFarmServerTreeElement;
|
|
@@ -0,0 +1,144 @@
|
|
|
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await 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; } async function _asyncOptionalChain(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 = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkAZBSVLRMcjs = require('./chunk-AZBSVLRM.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkLVABUXLAcjs = require('./chunk-LVABUXLA.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkCEDPEDNWcjs = require('./chunk-CEDPEDNW.cjs');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkLRJRXXQZcjs = require('./chunk-LRJRXXQZ.cjs');
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
17
|
+
|
|
18
|
+
// src/rsc-pipeline.ts
|
|
19
|
+
var _fs = require('fs');
|
|
20
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
21
|
+
var _url = require('url');
|
|
22
|
+
var FARM_RSC_ENTRIES = {
|
|
23
|
+
rsc: "./.farm/rsc-entries/entry.rsc.tsx",
|
|
24
|
+
ssr: "./.farm/rsc-entries/entry.ssr.tsx",
|
|
25
|
+
client: "./.farm/rsc-entries/entry.browser.tsx"
|
|
26
|
+
};
|
|
27
|
+
var FARM_RSC_CONFIG_KEYS = [
|
|
28
|
+
"srcDir",
|
|
29
|
+
"extends",
|
|
30
|
+
"basePath",
|
|
31
|
+
"api",
|
|
32
|
+
"server",
|
|
33
|
+
"middleware",
|
|
34
|
+
"images",
|
|
35
|
+
"serverActions",
|
|
36
|
+
"deploymentId",
|
|
37
|
+
"generateBuildId",
|
|
38
|
+
"md",
|
|
39
|
+
"agent",
|
|
40
|
+
"mcp"
|
|
41
|
+
];
|
|
42
|
+
var FARM_RSC_PASSTHROUGH_KEYS = ["i18n", "cache"];
|
|
43
|
+
function pickImportTarget(entry) {
|
|
44
|
+
if (typeof entry === "string") return entry;
|
|
45
|
+
if (!entry || typeof entry !== "object") return void 0;
|
|
46
|
+
for (const condition of ["import", "node", "default"]) {
|
|
47
|
+
const target = pickImportTarget(entry[condition]);
|
|
48
|
+
if (target) return target;
|
|
49
|
+
}
|
|
50
|
+
return void 0;
|
|
51
|
+
}
|
|
52
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, pickImportTarget, "pickImportTarget");
|
|
53
|
+
async function importFromApp(root, packageName, subpath = ".") {
|
|
54
|
+
const packageDir = _chunkAZBSVLRMcjs.findFarmAppPackageDir.call(void 0, root, packageName);
|
|
55
|
+
if (!packageDir) return void 0;
|
|
56
|
+
const manifest = JSON.parse(_fs.readFileSync.call(void 0, _path2.default.join(packageDir, "package.json"), "utf8"));
|
|
57
|
+
const exportsMap = manifest.exports;
|
|
58
|
+
const entry = exportsMap && typeof exportsMap === "object" && !Array.isArray(exportsMap) && subpath in exportsMap ? exportsMap[subpath] : subpath === "." ? _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(exportsMap, () => ( manifest.module)), () => ( manifest.main)), () => ( "index.js")) : void 0;
|
|
59
|
+
const target = pickImportTarget(entry);
|
|
60
|
+
if (!target) return void 0;
|
|
61
|
+
return import(_url.pathToFileURL.call(void 0, _path2.default.join(packageDir, target)).href);
|
|
62
|
+
}
|
|
63
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, importFromApp, "importFromApp");
|
|
64
|
+
function hasPluginNamed(plugins, prefix) {
|
|
65
|
+
if (Array.isArray(plugins)) return plugins.some((plugin) => hasPluginNamed(plugin, prefix));
|
|
66
|
+
const name = _optionalChain([plugins, 'optionalAccess', _ => _.name]);
|
|
67
|
+
return typeof name === "string" && name.startsWith(prefix);
|
|
68
|
+
}
|
|
69
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, hasPluginNamed, "hasPluginNamed");
|
|
70
|
+
async function createFarmRscViteConfig(userConfig, options) {
|
|
71
|
+
const root = _path2.default.resolve(options.root);
|
|
72
|
+
const renderer = userConfig.renderer;
|
|
73
|
+
if (renderer && typeof renderer === "object" && renderer.name && renderer.name !== "react") {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`[Farm.js] experimental.serverComponents needs the React renderer; this app uses "${renderer.name}".`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
const [pluginRsc, viteRsc, viteReact] = await Promise.all([
|
|
79
|
+
importFromApp(root, "@farm.js/plugin", "./rsc"),
|
|
80
|
+
importFromApp(root, "@vitejs/plugin-rsc"),
|
|
81
|
+
importFromApp(root, "@vitejs/plugin-react")
|
|
82
|
+
]);
|
|
83
|
+
if (!pluginRsc || !viteRsc || !_chunkAZBSVLRMcjs.findFarmAppPackageDir.call(void 0, root, "react-server-dom-webpack")) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
`[Farm.js] experimental.serverComponents runs on @farm.js/plugin and the official @vitejs/plugin-rsc. Install them: ${_chunkAZBSVLRMcjs.FARM_RSC_INSTALL_HINT}`
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
const { plugins: vitePlugins = [], ...viteOptions } = _nullishCoalesce(userConfig.vite, () => ( {}));
|
|
89
|
+
const rscConfig = {};
|
|
90
|
+
for (const key of FARM_RSC_CONFIG_KEYS) {
|
|
91
|
+
if (userConfig[key] !== void 0) rscConfig[key] = userConfig[key];
|
|
92
|
+
}
|
|
93
|
+
const createReactPlugin = hasPluginNamed(vitePlugins, "vite:react") ? void 0 : await _asyncNullishCoalesce(await _asyncOptionalChain([viteReact, 'optionalAccess', async _2 => _2.default]), async () => ( (options.command === "serve" ? (await _chunkCEDPEDNWcjs.loadFarmReactPlugin.call(void 0, )).default : void 0)));
|
|
94
|
+
const tailwind = hasPluginNamed(vitePlugins, "@tailwindcss/vite") ? void 0 : await _chunkLRJRXXQZcjs.loadTailwindVitePlugin.call(void 0, );
|
|
95
|
+
const farmConfig = pluginRsc.defineConfig({
|
|
96
|
+
...rscConfig,
|
|
97
|
+
experimental: { ...userConfig.experimental, serverComponents: true },
|
|
98
|
+
port: _nullishCoalesce(options.port, () => ( _optionalChain([userConfig, 'access', _3 => _3.server, 'optionalAccess', _4 => _4.port]))),
|
|
99
|
+
plugins: [
|
|
100
|
+
...tailwind ? [tailwind] : [],
|
|
101
|
+
...vitePlugins,
|
|
102
|
+
viteRsc.default({ serverHandler: false, entries: FARM_RSC_ENTRIES }),
|
|
103
|
+
...typeof createReactPlugin === "function" ? [createReactPlugin()] : [],
|
|
104
|
+
pluginRsc.nitro({
|
|
105
|
+
server: { environmentName: "rsc" },
|
|
106
|
+
config: {
|
|
107
|
+
preset: options.preset,
|
|
108
|
+
outputDir: options.outputDir && _chunkLVABUXLAcjs.resolveDeployOutputPath.call(void 0, root, options.outputDir)
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
for (const key of FARM_RSC_PASSTHROUGH_KEYS) {
|
|
114
|
+
if (userConfig[key] !== void 0) farmConfig[key] = userConfig[key];
|
|
115
|
+
}
|
|
116
|
+
const { mergeConfig } = await import("vite");
|
|
117
|
+
return {
|
|
118
|
+
...mergeConfig(farmConfig, viteOptions),
|
|
119
|
+
root,
|
|
120
|
+
// The Farm config is the app's config; a stray vite.config must not add a second pipeline.
|
|
121
|
+
configFile: false,
|
|
122
|
+
mode: options.command === "build" ? "production" : "development"
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, createFarmRscViteConfig, "createFarmRscViteConfig");
|
|
126
|
+
async function createFarmRscDevServer(userConfig, options) {
|
|
127
|
+
const { createServer } = await import("vite");
|
|
128
|
+
return createServer(await createFarmRscViteConfig(userConfig, { ...options, command: "serve" }));
|
|
129
|
+
}
|
|
130
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, createFarmRscDevServer, "createFarmRscDevServer");
|
|
131
|
+
async function buildFarmRsc(userConfig, options) {
|
|
132
|
+
const { createBuilder } = await import("vite");
|
|
133
|
+
const builder = await createBuilder(
|
|
134
|
+
await createFarmRscViteConfig(userConfig, { ...options, command: "build" })
|
|
135
|
+
);
|
|
136
|
+
await builder.buildApp();
|
|
137
|
+
}
|
|
138
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, buildFarmRsc, "buildFarmRsc");
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
exports.createFarmRscViteConfig = createFarmRscViteConfig; exports.createFarmRscDevServer = createFarmRscDevServer; exports.buildFarmRsc = buildFarmRsc;
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
} from "./chunk-ZZGQD7A4.mjs";
|
|
46
46
|
import {
|
|
47
47
|
FARM_VERSION
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-YGZH4T2X.mjs";
|
|
49
49
|
import {
|
|
50
50
|
localizeFarmPathname
|
|
51
51
|
} from "./chunk-L3KT7IXV.mjs";
|
|
@@ -56,6 +56,56 @@ import {
|
|
|
56
56
|
__name
|
|
57
57
|
} from "./chunk-LPEX4YW6.mjs";
|
|
58
58
|
|
|
59
|
+
// src/navigation/render-plan.ts
|
|
60
|
+
function createFarmRouteRenderPlan(input = {}) {
|
|
61
|
+
const pageShouldHydrate = input.pageShouldHydrate === true;
|
|
62
|
+
const layoutShouldHydrate = input.layoutShouldHydrate === true;
|
|
63
|
+
const hydration = pageShouldHydrate ? layoutShouldHydrate ? "route-and-layout-islands" : "route-island" : layoutShouldHydrate ? "layout-island" : "none";
|
|
64
|
+
const rendering = input.rendering;
|
|
65
|
+
const cache = rendering?.ssg ? typeof rendering.revalidate === "number" && rendering.revalidate > 0 ? { mode: "revalidate", revalidate: rendering.revalidate } : { mode: "static" } : { mode: "dynamic" };
|
|
66
|
+
return {
|
|
67
|
+
version: 1,
|
|
68
|
+
output: "html",
|
|
69
|
+
navigation: "html-fragment",
|
|
70
|
+
hydration,
|
|
71
|
+
islandStrategy: hydration === "none" ? null : input.islandStrategy ?? "load",
|
|
72
|
+
cache
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
__name(createFarmRouteRenderPlan, "createFarmRouteRenderPlan");
|
|
76
|
+
function getFarmFragmentCacheControl(plan) {
|
|
77
|
+
if (plan.cache.mode === "static") {
|
|
78
|
+
return "public, max-age=0, s-maxage=31536000, immutable";
|
|
79
|
+
}
|
|
80
|
+
if (plan.cache.mode === "revalidate") {
|
|
81
|
+
const seconds = Math.max(1, plan.cache.revalidate ?? 1);
|
|
82
|
+
return `public, max-age=0, s-maxage=${seconds}, stale-while-revalidate=${seconds}`;
|
|
83
|
+
}
|
|
84
|
+
return "private, max-age=0";
|
|
85
|
+
}
|
|
86
|
+
__name(getFarmFragmentCacheControl, "getFarmFragmentCacheControl");
|
|
87
|
+
function parseFarmLayoutChainHeader(value) {
|
|
88
|
+
if (!value || value.length > 8192) return [];
|
|
89
|
+
try {
|
|
90
|
+
const parsed = JSON.parse(value);
|
|
91
|
+
if (!Array.isArray(parsed) || parsed.length > 64) return [];
|
|
92
|
+
return parsed.filter(
|
|
93
|
+
(pattern) => typeof pattern === "string" && pattern.startsWith("/") && pattern.length <= 512
|
|
94
|
+
);
|
|
95
|
+
} catch {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
__name(parseFarmLayoutChainHeader, "parseFarmLayoutChainHeader");
|
|
100
|
+
function getSharedLayoutPrefixLength(current, next) {
|
|
101
|
+
let index = 0;
|
|
102
|
+
while (index < current.length && index < next.length && current[index] === next[index]) {
|
|
103
|
+
index++;
|
|
104
|
+
}
|
|
105
|
+
return index;
|
|
106
|
+
}
|
|
107
|
+
__name(getSharedLayoutPrefixLength, "getSharedLayoutPrefixLength");
|
|
108
|
+
|
|
59
109
|
// src/routing/route-groups.ts
|
|
60
110
|
function isRouteGroupSegment(part) {
|
|
61
111
|
return part.startsWith("(") && part.endsWith(")");
|
|
@@ -1116,6 +1166,10 @@ async function createFarmAppManifestResponse(request, input) {
|
|
|
1116
1166
|
__name(createFarmAppManifestResponse, "createFarmAppManifestResponse");
|
|
1117
1167
|
|
|
1118
1168
|
export {
|
|
1169
|
+
createFarmRouteRenderPlan,
|
|
1170
|
+
getFarmFragmentCacheControl,
|
|
1171
|
+
parseFarmLayoutChainHeader,
|
|
1172
|
+
getSharedLayoutPrefixLength,
|
|
1119
1173
|
formatRouteSegment,
|
|
1120
1174
|
createRouteDirectoryPattern,
|
|
1121
1175
|
stripRouteGroups,
|