@farm.js/core 0.1.42 → 0.1.44
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-CWI-awqd.d.mts} +1 -1
- package/dist/{agent-mcp-SSD6L3VZ.d.ts → agent-mcp-EnzWYv_X.d.ts} +1 -1
- package/dist/agent-runtime.cjs +3 -2
- package/dist/agent-runtime.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/agent-runtime.mjs +2 -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-CAN_2Cqo.d.ts} +8 -4
- package/dist/{app-1h3lVT4a.d.mts → app-DG3dE8v5.d.mts} +8 -4
- package/dist/{app-manifest-D3RkVNuS.d.mts → app-manifest-8x5VjZ0L.d.mts} +1 -1
- package/dist/{app-manifest-DaW8-tvX.d.ts → app-manifest-DazjgQya.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-TUL355PH.mjs → chunk-2MKTHHEU.mjs} +136 -161
- package/dist/chunk-2NXO5SBY.mjs +57 -0
- package/dist/{chunk-AX7S67YV.mjs → chunk-37VKVISD.mjs} +9 -173
- package/dist/chunk-3BROEWFY.cjs +39 -0
- package/dist/chunk-3SAWHWDH.cjs +186 -0
- package/dist/{chunk-AHFRQMRX.cjs → chunk-3YJMBQ27.cjs} +1 -1
- package/dist/{chunk-6PKXK4TY.mjs → chunk-53ZV6K65.mjs} +1 -1
- package/dist/{chunk-JG3MEQUH.cjs → chunk-5GBL2LKD.cjs} +430 -217
- 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-TCJ4A4A2.cjs → chunk-AI3WVJNP.cjs} +324 -350
- package/dist/chunk-APDGOKKE.cjs +148 -0
- package/dist/chunk-AZBSVLRM.cjs +132 -0
- package/dist/{chunk-RHGK2JEN.cjs → chunk-B6XAA7V6.cjs} +18 -182
- package/dist/chunk-CEDPEDNW.cjs +98 -0
- package/dist/{chunk-WSOBCAYO.cjs → chunk-CW6SNEN2.cjs} +25 -25
- package/dist/chunk-D5RFPV2H.mjs +148 -0
- package/dist/chunk-E22SWCXB.cjs +144 -0
- package/dist/{chunk-375K2ZVU.mjs → chunk-ERA5RP3L.mjs} +263 -50
- package/dist/{chunk-724JLMS4.mjs → chunk-F646BZ4Y.mjs} +4 -2
- package/dist/{chunk-C5KVWHIH.cjs → chunk-G2Z5DGMS.cjs} +5 -3
- package/dist/{chunk-ZATTDMBW.cjs → chunk-GA6JM4L6.cjs} +279 -376
- package/dist/chunk-GZWHCWLB.mjs +186 -0
- package/dist/{chunk-24SP5TGU.mjs → chunk-H4LXPWI2.mjs} +2 -2
- package/dist/chunk-H7BLEEAE.cjs +57 -0
- package/dist/chunk-IOMVXBLZ.mjs +144 -0
- package/dist/{chunk-BD3D7EZV.cjs → chunk-IXFOBGLQ.cjs} +9 -3
- package/dist/{chunk-JIYYX7WU.mjs → chunk-JVXW76I7.mjs} +2 -2
- package/dist/{chunk-MHN4UR5U.cjs → chunk-KFZZFZ7J.cjs} +7 -7
- package/dist/{chunk-BXJ5HJTJ.cjs → chunk-LPE3ED4R.cjs} +17 -13
- package/dist/chunk-LRJRXXQZ.cjs +109 -0
- package/dist/{chunk-HCSVR4YZ.mjs → chunk-M3BXTWJM.mjs} +18 -0
- package/dist/{chunk-2JZHQDUY.mjs → chunk-OYZGFRPA.mjs} +1 -1
- package/dist/{chunk-JR4QCLJY.cjs → chunk-PDU4P2IC.cjs} +19 -1
- package/dist/chunk-PJEHUSHA.mjs +229 -0
- package/dist/{chunk-QTEJGB5A.mjs → chunk-QGFKXYC7.mjs} +80 -177
- package/dist/chunk-QGH2RQVF.mjs +132 -0
- package/dist/{chunk-YWMZUGIS.mjs → chunk-R3ZFQJEF.mjs} +247 -34
- package/dist/{chunk-U2UC7UGP.mjs → chunk-R4J2UOV4.mjs} +1 -1
- 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-ZS6HDNOM.cjs → chunk-T44ECMEP.cjs} +6 -6
- package/dist/{chunk-OFZUJMCU.mjs → chunk-WPJQN64R.mjs} +195 -41
- package/dist/{chunk-NU25TRIO.mjs → chunk-WWYXIECF.mjs} +12 -8
- package/dist/{chunk-7YHSD3Z6.cjs → chunk-XPSGGECF.cjs} +85 -31
- package/dist/chunk-XUGFRFD2.mjs +39 -0
- package/dist/{chunk-IVQY6UTY.mjs → chunk-XUHIRBXY.mjs} +1 -1
- package/dist/{chunk-PIZXONIS.mjs → chunk-YFLBG2W3.mjs} +56 -2
- package/dist/chunk-YKUEJ3MG.cjs +229 -0
- package/dist/{chunk-QKZMB7LY.cjs → chunk-YN2QEMMO.cjs} +2 -2
- package/dist/{client-plugins-DIem0I0W.d.ts → client-plugins-BGS0wqzc.d.ts} +36 -16
- package/dist/{client-plugins-C9Py_50W.d.mts → client-plugins-nQ0tYt4l.d.mts} +36 -16
- 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-2RY3EKHL.cjs → devtools-5Q7VRKVH.cjs} +6 -5
- package/dist/{devtools-Q3LBNUJ7.mjs → devtools-LJ4IGYGW.mjs} +5 -4
- package/dist/docs.cjs +7 -6
- package/dist/docs.d.mts +2 -2
- package/dist/docs.d.ts +2 -2
- package/dist/docs.mjs +6 -5
- package/dist/index-Cy26isrh.d.ts +48 -0
- package/dist/index-y1jgR74U.d.mts +48 -0
- package/dist/index.cjs +44 -25
- package/dist/index.d.mts +15 -15
- package/dist/index.d.ts +15 -15
- package/dist/index.mjs +51 -32
- package/dist/integrations.cjs +5 -3
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/integrations.mjs +6 -4
- 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 +30 -15
- package/dist/internal/build-runtime.d.mts +12 -16
- package/dist/internal/build-runtime.d.ts +12 -16
- package/dist/internal/build-runtime.mjs +29 -14
- package/dist/internal/cli-runtime.cjs +24 -11
- package/dist/internal/cli-runtime.mjs +24 -11
- 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 +6 -5
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +5 -4
- 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 +24 -13
- package/dist/internal/production-runtime.d.mts +20 -10
- package/dist/internal/production-runtime.d.ts +20 -10
- package/dist/internal/production-runtime.mjs +24 -13
- 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 +19 -12
- package/dist/plugin.d.mts +3 -3
- package/dist/plugin.d.ts +3 -3
- package/dist/plugin.mjs +18 -11
- package/dist/{production-runtime-bjjWq-DA.d.ts → production-runtime-BVMDgHrA.d.ts} +1 -1
- package/dist/{production-runtime-CHFKIgpW.d.mts → production-runtime-ClFA_1KQ.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-CoSovy_O.d.mts} +4 -2
- package/dist/{render-plan-B2UndB4x.d.ts → render-plan-y2DefWf8.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-DVNXRQrI.d.ts → request-aG5Wovm5.d.ts} +1 -1
- package/dist/{request-DQcGfdgQ.d.mts → request-cNM09Q7e.d.mts} +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-B3uQmCWX.d.ts} +1 -1
- package/dist/{route-rendering-CEX4mFn-.d.mts → route-rendering-EyInfsjI.d.mts} +1 -1
- package/dist/{router-CHEMHm1P.d.ts → router-DNUf-Bg1.d.ts} +1 -1
- package/dist/{router-CKHPBKXX.d.mts → router-Devibh4r.d.mts} +1 -1
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/rsc-pipeline-4ZJ6GUVQ.cjs +78 -0
- package/dist/rsc-pipeline-KK6GFDET.mjs +78 -0
- package/dist/{runtime-jj8TKNsy.d.mts → runtime-9KZb8AI5.d.mts} +1 -1
- package/dist/{runtime-Br2ZDTAv.d.ts → runtime-CLr9P5kn.d.ts} +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 +57 -38
- package/dist/server.d.mts +15 -10
- package/dist/server.d.ts +15 -10
- package/dist/server.mjs +37 -18
- package/dist/{spa-router-BEvS9Erj.d.mts → spa-router-BIxh4IY-.d.mts} +8 -3
- package/dist/{spa-router-DmCuH5B7.d.ts → spa-router-Ds6R_oe-.d.ts} +8 -3
- package/dist/{ssg-57v6cZcW.d.mts → ssg-ByrOVYdM.d.mts} +2 -2
- package/dist/{ssg-gT093ETk.d.ts → ssg-XnMHCyEc.d.ts} +2 -2
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{utils-CCTKvR-P.d.ts → utils-BN70ueSN.d.ts} +1 -1
- package/dist/{utils-raHHQVyL.d.mts → utils-BrjR5xRs.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +19 -12
- package/dist/vite.d.mts +6 -4
- package/dist/vite.d.ts +6 -4
- package/dist/vite.mjs +18 -11
- 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,12 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
|
+
getFarmActionId,
|
|
2
3
|
markFarmClientReference,
|
|
3
4
|
updateFarmServerTreeModule
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7IQQIPRZ.mjs";
|
|
6
|
+
import {
|
|
7
|
+
FARM_ACTION_TAG,
|
|
8
|
+
FARM_ISLAND_ELEMENT,
|
|
9
|
+
FARM_OBJECT_TAG,
|
|
10
|
+
FARM_PROPS_SCRIPT_TYPE,
|
|
11
|
+
FARM_REFERENCE_TAG,
|
|
12
|
+
FARM_SLOT_ELEMENT,
|
|
13
|
+
FARM_SLOT_TAG,
|
|
14
|
+
FARM_TAG,
|
|
15
|
+
FARM_TAG_VALUE,
|
|
16
|
+
FARM_VALUE_SCRIPT_TYPE,
|
|
17
|
+
getFarmIslandValuesServer,
|
|
18
|
+
getFarmTag
|
|
19
|
+
} from "./chunk-2NXO5SBY.mjs";
|
|
5
20
|
import {
|
|
6
21
|
__name
|
|
7
22
|
} from "./chunk-LPEX4YW6.mjs";
|
|
8
23
|
|
|
9
24
|
// src/client/isolated-boundary.ts
|
|
25
|
+
var ISLAND_SELECTOR = `${FARM_ISLAND_ELEMENT}[src]`;
|
|
26
|
+
var runtimeTagged = /* @__PURE__ */ new WeakSet();
|
|
10
27
|
var REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.transitional.element");
|
|
11
28
|
var LEGACY_REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for("react.element");
|
|
12
29
|
var BOUNDARY_GRAPH_CONTEXT = /* @__PURE__ */ Symbol.for("farm.isolated-hydration.client-graph-context");
|
|
@@ -23,6 +40,9 @@ function getBoundaryGraphContext(ReactRuntime) {
|
|
|
23
40
|
}
|
|
24
41
|
__name(getBoundaryGraphContext, "getBoundaryGraphContext");
|
|
25
42
|
function serializeBoundaryProps(value, seen = /* @__PURE__ */ new Set()) {
|
|
43
|
+
const codec = getFarmIslandValuesServer();
|
|
44
|
+
const leaf = codec?.encodeLeaf(value);
|
|
45
|
+
if (leaf) return leaf;
|
|
26
46
|
if (value === null || typeof value === "string" || typeof value === "boolean") return value;
|
|
27
47
|
if (typeof value === "number") {
|
|
28
48
|
if (!Number.isFinite(value)) throw new TypeError("non-finite numbers are not serializable");
|
|
@@ -31,6 +51,10 @@ function serializeBoundaryProps(value, seen = /* @__PURE__ */ new Set()) {
|
|
|
31
51
|
if (typeof value === "undefined") {
|
|
32
52
|
throw new TypeError("undefined values are not serializable");
|
|
33
53
|
}
|
|
54
|
+
if (typeof value === "function") {
|
|
55
|
+
const actionId = getFarmActionId(value);
|
|
56
|
+
if (actionId) return { [FARM_TAG]: FARM_ACTION_TAG, [FARM_TAG_VALUE]: actionId };
|
|
57
|
+
}
|
|
34
58
|
if (typeof value !== "object") {
|
|
35
59
|
throw new TypeError(`${typeof value} values are not serializable`);
|
|
36
60
|
}
|
|
@@ -41,22 +65,143 @@ function serializeBoundaryProps(value, seen = /* @__PURE__ */ new Set()) {
|
|
|
41
65
|
seen.add(value);
|
|
42
66
|
try {
|
|
43
67
|
if (Array.isArray(value)) return value.map((entry) => serializeBoundaryProps(entry, seen));
|
|
68
|
+
if (codec && value instanceof Map) {
|
|
69
|
+
return {
|
|
70
|
+
[FARM_TAG]: "M",
|
|
71
|
+
[FARM_TAG_VALUE]: Array.from(value, ([key, entry]) => [
|
|
72
|
+
serializeBoundaryProps(key, seen),
|
|
73
|
+
serializeBoundaryProps(entry, seen)
|
|
74
|
+
])
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (codec && value instanceof Set) {
|
|
78
|
+
return {
|
|
79
|
+
[FARM_TAG]: "S",
|
|
80
|
+
[FARM_TAG_VALUE]: Array.from(value, (entry) => serializeBoundaryProps(entry, seen))
|
|
81
|
+
};
|
|
82
|
+
}
|
|
44
83
|
const prototype = Object.getPrototypeOf(value);
|
|
45
84
|
if (prototype !== Object.prototype && prototype !== null) {
|
|
46
85
|
throw new TypeError("class instances are not serializable");
|
|
47
86
|
}
|
|
48
|
-
|
|
87
|
+
const serialized = Object.fromEntries(
|
|
49
88
|
Object.entries(value).map(([key, entry]) => [key, serializeBoundaryProps(entry, seen)])
|
|
50
89
|
);
|
|
90
|
+
return codec && !runtimeTagged.has(value) && Object.prototype.hasOwnProperty.call(value, FARM_TAG) ? { [FARM_TAG]: FARM_OBJECT_TAG, [FARM_TAG_VALUE]: serialized } : serialized;
|
|
51
91
|
} finally {
|
|
52
92
|
seen.delete(value);
|
|
53
93
|
}
|
|
54
94
|
}
|
|
55
95
|
__name(serializeBoundaryProps, "serializeBoundaryProps");
|
|
56
96
|
function serializeBoundaryPayload(value) {
|
|
57
|
-
return JSON.stringify(serializeBoundaryProps(value))
|
|
97
|
+
return escapeScriptJson(JSON.stringify(serializeBoundaryProps(value)));
|
|
58
98
|
}
|
|
59
99
|
__name(serializeBoundaryPayload, "serializeBoundaryPayload");
|
|
100
|
+
function escapeScriptJson(json) {
|
|
101
|
+
return json.replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
102
|
+
}
|
|
103
|
+
__name(escapeScriptJson, "escapeScriptJson");
|
|
104
|
+
var SLOT_ELEMENT = FARM_SLOT_ELEMENT;
|
|
105
|
+
function isReactElementValue(value) {
|
|
106
|
+
const type = value?.$$typeof;
|
|
107
|
+
return type === REACT_ELEMENT_TYPE || type === LEGACY_REACT_ELEMENT_TYPE;
|
|
108
|
+
}
|
|
109
|
+
__name(isReactElementValue, "isReactElementValue");
|
|
110
|
+
function slotReference(id) {
|
|
111
|
+
const reference = { [FARM_TAG]: FARM_SLOT_TAG, [FARM_TAG_VALUE]: id };
|
|
112
|
+
runtimeTagged.add(reference);
|
|
113
|
+
return reference;
|
|
114
|
+
}
|
|
115
|
+
__name(slotReference, "slotReference");
|
|
116
|
+
function splitSlotProps(ReactRuntime, value, slotPrefix, counter) {
|
|
117
|
+
if (isReactElementValue(value)) {
|
|
118
|
+
const id = `${slotPrefix}${counter.next++}`;
|
|
119
|
+
return {
|
|
120
|
+
render: ReactRuntime.createElement(
|
|
121
|
+
SLOT_ELEMENT,
|
|
122
|
+
{ key: value.key ?? id, name: id, style: { display: "contents" } },
|
|
123
|
+
value
|
|
124
|
+
),
|
|
125
|
+
wire: slotReference(id)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (Array.isArray(value)) {
|
|
129
|
+
const parts = value.map((entry) => splitSlotProps(ReactRuntime, entry, slotPrefix, counter));
|
|
130
|
+
return { render: parts.map((part) => part.render), wire: parts.map((part) => part.wire) };
|
|
131
|
+
}
|
|
132
|
+
if (value && typeof value === "object") {
|
|
133
|
+
const prototype = Object.getPrototypeOf(value);
|
|
134
|
+
if (prototype !== Object.prototype && prototype !== null) return { render: value, wire: value };
|
|
135
|
+
const render = {};
|
|
136
|
+
const wire = {};
|
|
137
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
138
|
+
const part = splitSlotProps(ReactRuntime, entry, slotPrefix, counter);
|
|
139
|
+
render[key] = part.render;
|
|
140
|
+
wire[key] = part.wire;
|
|
141
|
+
}
|
|
142
|
+
return { render, wire };
|
|
143
|
+
}
|
|
144
|
+
return { render: value, wire: value };
|
|
145
|
+
}
|
|
146
|
+
__name(splitSlotProps, "splitSlotProps");
|
|
147
|
+
var FARM_NOT_A_MARKER = /* @__PURE__ */ Symbol.for("farm.codec.not-a-marker");
|
|
148
|
+
function reviveSlotProps(ReactRuntime, value, container, actions, decode) {
|
|
149
|
+
if (Array.isArray(value)) {
|
|
150
|
+
let changed2 = false;
|
|
151
|
+
const revived2 = value.map((entry) => {
|
|
152
|
+
const next = reviveSlotProps(ReactRuntime, entry, container, actions, decode);
|
|
153
|
+
if (next !== entry) changed2 = true;
|
|
154
|
+
return next;
|
|
155
|
+
});
|
|
156
|
+
return changed2 ? revived2 : value;
|
|
157
|
+
}
|
|
158
|
+
if (!value || typeof value !== "object") return value;
|
|
159
|
+
const tag = decode || actions ? getFarmTag(value) : void 0;
|
|
160
|
+
const data = tag === void 0 ? void 0 : value[FARM_TAG_VALUE];
|
|
161
|
+
if (tag === FARM_ACTION_TAG && typeof data === "string") {
|
|
162
|
+
if (!actions) throw new Error("server action props need islands mode");
|
|
163
|
+
return actions(data);
|
|
164
|
+
}
|
|
165
|
+
if (tag === FARM_SLOT_TAG && typeof data === "string") {
|
|
166
|
+
let html = "";
|
|
167
|
+
for (const slot of container.querySelectorAll(SLOT_ELEMENT)) {
|
|
168
|
+
if (slot.getAttribute("name") === data) {
|
|
169
|
+
html = slot.innerHTML;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return ReactRuntime.createElement(SLOT_ELEMENT, {
|
|
174
|
+
key: data,
|
|
175
|
+
name: data,
|
|
176
|
+
style: { display: "contents" },
|
|
177
|
+
suppressHydrationWarning: true,
|
|
178
|
+
dangerouslySetInnerHTML: { __html: html }
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
if (tag === FARM_REFERENCE_TAG) throw new Error(`island value ${String(data)} was not resolved`);
|
|
182
|
+
if (tag !== void 0) {
|
|
183
|
+
if (!decode) throw new Error("typed props need islands mode");
|
|
184
|
+
const decoded = decode(
|
|
185
|
+
value,
|
|
186
|
+
(child) => reviveSlotProps(ReactRuntime, child, container, actions, decode)
|
|
187
|
+
);
|
|
188
|
+
if (decoded !== FARM_NOT_A_MARKER) return decoded;
|
|
189
|
+
}
|
|
190
|
+
let changed = false;
|
|
191
|
+
const revived = {};
|
|
192
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
193
|
+
const next = reviveSlotProps(ReactRuntime, entry, container, actions, decode);
|
|
194
|
+
Object.defineProperty(revived, key, {
|
|
195
|
+
value: next,
|
|
196
|
+
enumerable: true,
|
|
197
|
+
writable: true,
|
|
198
|
+
configurable: true
|
|
199
|
+
});
|
|
200
|
+
if (next !== entry) changed = true;
|
|
201
|
+
}
|
|
202
|
+
return changed ? revived : value;
|
|
203
|
+
}
|
|
204
|
+
__name(reviveSlotProps, "reviveSlotProps");
|
|
60
205
|
function wrapFarmIsolatedClientGraph(ReactRuntime, element) {
|
|
61
206
|
const Context = getBoundaryGraphContext(ReactRuntime);
|
|
62
207
|
return ReactRuntime.createElement(Context.Provider, { value: true }, element);
|
|
@@ -68,7 +213,7 @@ function isolateFarmServerPageGraph(ReactRuntime, element) {
|
|
|
68
213
|
}
|
|
69
214
|
__name(isolateFarmServerPageGraph, "isolateFarmServerPageGraph");
|
|
70
215
|
var warnedUnserializableBoundaries = /* @__PURE__ */ new Set();
|
|
71
|
-
function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReference, exportName, islandStrategy) {
|
|
216
|
+
function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReference, exportName, islandStrategy, boundaryOptions = {}) {
|
|
72
217
|
function FarmIsolatedClientBoundary(props) {
|
|
73
218
|
const Context = getBoundaryGraphContext(ReactRuntime);
|
|
74
219
|
const belongsToParentClientGraph = ReactRuntime.useContext(Context);
|
|
@@ -77,8 +222,30 @@ function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReferen
|
|
|
77
222
|
return ReactRuntime.createElement(Component, props);
|
|
78
223
|
}
|
|
79
224
|
let serializedProps;
|
|
225
|
+
let renderProps = props;
|
|
226
|
+
let valueScripts = [];
|
|
80
227
|
try {
|
|
81
|
-
|
|
228
|
+
if (boundaryOptions.slots) {
|
|
229
|
+
const { render, wire } = splitSlotProps(ReactRuntime, props, `${boundaryId}s`, { next: 0 });
|
|
230
|
+
renderProps = render;
|
|
231
|
+
const values = boundaryOptions.values ? getFarmIslandValuesServer() : void 0;
|
|
232
|
+
if (values) {
|
|
233
|
+
const addressed = values.address(serializeBoundaryProps(wire));
|
|
234
|
+
serializedProps = escapeScriptJson(addressed.json);
|
|
235
|
+
valueScripts = values.select(addressed, values.held()).map(
|
|
236
|
+
(value) => ReactRuntime.createElement("script", {
|
|
237
|
+
key: value.key,
|
|
238
|
+
type: FARM_VALUE_SCRIPT_TYPE,
|
|
239
|
+
name: value.key,
|
|
240
|
+
dangerouslySetInnerHTML: { __html: escapeScriptJson(value.json) }
|
|
241
|
+
})
|
|
242
|
+
);
|
|
243
|
+
} else {
|
|
244
|
+
serializedProps = serializeBoundaryPayload(wire);
|
|
245
|
+
}
|
|
246
|
+
} else {
|
|
247
|
+
serializedProps = serializeBoundaryPayload(props);
|
|
248
|
+
}
|
|
82
249
|
} catch (error) {
|
|
83
250
|
const message = error instanceof Error ? error.message : String(error);
|
|
84
251
|
const warningKey = `${moduleReference}#${exportName}:${message}`;
|
|
@@ -93,24 +260,25 @@ function createFarmIsolatedClientBoundary(ReactRuntime, Component, moduleReferen
|
|
|
93
260
|
return ReactRuntime.createElement(
|
|
94
261
|
ReactRuntime.Fragment,
|
|
95
262
|
null,
|
|
263
|
+
...valueScripts,
|
|
96
264
|
ReactRuntime.createElement(
|
|
97
|
-
|
|
265
|
+
FARM_ISLAND_ELEMENT,
|
|
98
266
|
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
267
|
+
src: moduleReference,
|
|
268
|
+
export: exportName,
|
|
269
|
+
props: boundaryId,
|
|
270
|
+
strategy: islandStrategy,
|
|
103
271
|
style: { display: "contents" }
|
|
104
272
|
},
|
|
105
273
|
ReactRuntime.createElement(
|
|
106
274
|
Context.Provider,
|
|
107
275
|
{ value: true },
|
|
108
|
-
ReactRuntime.createElement(Component,
|
|
276
|
+
ReactRuntime.createElement(Component, renderProps)
|
|
109
277
|
)
|
|
110
278
|
),
|
|
111
279
|
ReactRuntime.createElement("script", {
|
|
112
|
-
type:
|
|
113
|
-
|
|
280
|
+
type: FARM_PROPS_SCRIPT_TYPE,
|
|
281
|
+
htmlFor: boundaryId,
|
|
114
282
|
dangerouslySetInnerHTML: { __html: serializedProps }
|
|
115
283
|
})
|
|
116
284
|
);
|
|
@@ -131,13 +299,13 @@ function isEarlyHydrationUpdate(error) {
|
|
|
131
299
|
__name(isEarlyHydrationUpdate, "isEarlyHydrationUpdate");
|
|
132
300
|
function findBoundaryPayload(container, boundaryId) {
|
|
133
301
|
const sibling = container.nextElementSibling;
|
|
134
|
-
if (sibling instanceof HTMLScriptElement && sibling.type ===
|
|
302
|
+
if (sibling instanceof HTMLScriptElement && sibling.type === FARM_PROPS_SCRIPT_TYPE && sibling.getAttribute("for") === boundaryId) {
|
|
135
303
|
return sibling;
|
|
136
304
|
}
|
|
137
305
|
for (const candidate of container.ownerDocument.querySelectorAll(
|
|
138
|
-
|
|
306
|
+
`script[type="${FARM_PROPS_SCRIPT_TYPE}"]`
|
|
139
307
|
)) {
|
|
140
|
-
if (candidate.getAttribute("
|
|
308
|
+
if (candidate.getAttribute("for") === boundaryId) return candidate;
|
|
141
309
|
}
|
|
142
310
|
return null;
|
|
143
311
|
}
|
|
@@ -191,23 +359,73 @@ function createFarmIsolatedHydrationRuntime(options) {
|
|
|
191
359
|
)
|
|
192
360
|
);
|
|
193
361
|
}, "createBoundaryGraph");
|
|
194
|
-
|
|
195
|
-
const
|
|
196
|
-
|
|
362
|
+
function readBoundaryProps(container, boundaryId) {
|
|
363
|
+
const payload = findBoundaryPayload(container, boundaryId);
|
|
364
|
+
if (!payload) throw new Error(`serialized props ${boundaryId} were not found`);
|
|
365
|
+
const parsedProps = JSON.parse(payload.textContent || "{}");
|
|
366
|
+
if (!parsedProps || typeof parsedProps !== "object" || Array.isArray(parsedProps)) {
|
|
367
|
+
throw new Error("serialized props must be an object");
|
|
368
|
+
}
|
|
369
|
+
let resolvedProps = parsedProps;
|
|
370
|
+
if (payload.textContent?.includes(`"${FARM_TAG}":"${FARM_REFERENCE_TAG}"`)) {
|
|
371
|
+
if (!options.values) throw new Error("island values need islands mode");
|
|
372
|
+
options.values.ingest(container.ownerDocument);
|
|
373
|
+
resolvedProps = options.values.resolve(parsedProps);
|
|
374
|
+
}
|
|
375
|
+
return reviveSlotProps(
|
|
376
|
+
options.ReactRuntime,
|
|
377
|
+
resolvedProps,
|
|
378
|
+
container,
|
|
379
|
+
options.actions,
|
|
380
|
+
options.decode
|
|
197
381
|
);
|
|
198
|
-
|
|
382
|
+
}
|
|
383
|
+
__name(readBoundaryProps, "readBoundaryProps");
|
|
384
|
+
const topLevelBoundaries = /* @__PURE__ */ __name((scope) => Array.from(scope.querySelectorAll(ISLAND_SELECTOR)).filter(
|
|
385
|
+
(container) => !container.parentElement?.closest(ISLAND_SELECTOR)
|
|
386
|
+
), "topLevelBoundaries");
|
|
387
|
+
const boundaryKey = /* @__PURE__ */ __name((container) => `${container.getAttribute("src")}#${container.getAttribute("export") || "default"}`, "boundaryKey");
|
|
388
|
+
function carryOver(current, next) {
|
|
389
|
+
const live = /* @__PURE__ */ new Map();
|
|
390
|
+
for (const container of topLevelBoundaries(current)) {
|
|
391
|
+
if (!roots.has(container)) continue;
|
|
392
|
+
const key = boundaryKey(container);
|
|
393
|
+
live.set(key, [...live.get(key) ?? [], container]);
|
|
394
|
+
}
|
|
395
|
+
let carried = 0;
|
|
396
|
+
for (const container of topLevelBoundaries(next)) {
|
|
397
|
+
const previous = live.get(boundaryKey(container))?.shift();
|
|
398
|
+
const record = previous && roots.get(previous);
|
|
399
|
+
const boundaryId = container.getAttribute("props");
|
|
400
|
+
if (!previous || !record || !boundaryId) continue;
|
|
401
|
+
try {
|
|
402
|
+
const props = readBoundaryProps(container, boundaryId);
|
|
403
|
+
record.root.render(createBoundaryGraph(record.Component, props, record.restore));
|
|
404
|
+
record.props = props;
|
|
405
|
+
container.replaceWith(previous);
|
|
406
|
+
carried++;
|
|
407
|
+
} catch (error) {
|
|
408
|
+
report(`Could not keep ${boundaryKey(container)} across the refresh.`, error);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
return carried;
|
|
412
|
+
}
|
|
413
|
+
__name(carryOver, "carryOver");
|
|
414
|
+
async function hydrate(scope = document, signal) {
|
|
415
|
+
const candidates = Array.from(scope.querySelectorAll(ISLAND_SELECTOR));
|
|
416
|
+
if (scope instanceof Element && scope.matches(ISLAND_SELECTOR)) {
|
|
199
417
|
candidates.unshift(scope);
|
|
200
418
|
}
|
|
201
419
|
const boundaries = candidates.filter((container) => {
|
|
202
420
|
if (roots.has(container) || pending.has(container)) return false;
|
|
203
|
-
return !container.parentElement?.closest(
|
|
421
|
+
return !container.parentElement?.closest(ISLAND_SELECTOR);
|
|
204
422
|
});
|
|
205
423
|
await Promise.all(
|
|
206
424
|
boundaries.map(async (container) => {
|
|
207
|
-
const reference = container.getAttribute("
|
|
208
|
-
const boundaryId = container.getAttribute("
|
|
209
|
-
const exportName = container.getAttribute("
|
|
210
|
-
const strategy = container.getAttribute("
|
|
425
|
+
const reference = container.getAttribute("src");
|
|
426
|
+
const boundaryId = container.getAttribute("props");
|
|
427
|
+
const exportName = container.getAttribute("export") || "default";
|
|
428
|
+
const strategy = container.getAttribute("strategy") ?? "load";
|
|
211
429
|
if (!reference || !boundaryId) {
|
|
212
430
|
report("An isolated client boundary is missing its module reference or payload ID.");
|
|
213
431
|
return;
|
|
@@ -242,12 +460,7 @@ function createFarmIsolatedHydrationRuntime(options) {
|
|
|
242
460
|
if (typeof Component !== "function" && typeof Component !== "object") {
|
|
243
461
|
throw new Error("compiled original export was not found");
|
|
244
462
|
}
|
|
245
|
-
const
|
|
246
|
-
if (!payload) throw new Error(`serialized props ${boundaryId} were not found`);
|
|
247
|
-
const props = JSON.parse(payload.textContent || "{}");
|
|
248
|
-
if (!props || typeof props !== "object" || Array.isArray(props)) {
|
|
249
|
-
throw new Error("serialized props must be an object");
|
|
250
|
-
}
|
|
463
|
+
const props = readBoundaryProps(container, boundaryId);
|
|
251
464
|
let rootFailure;
|
|
252
465
|
const restore = /* @__PURE__ */ __name((error) => {
|
|
253
466
|
if (rootFailure !== void 0) return;
|
|
@@ -271,6 +484,7 @@ function createFarmIsolatedHydrationRuntime(options) {
|
|
|
271
484
|
});
|
|
272
485
|
roots.set(container, {
|
|
273
486
|
root,
|
|
487
|
+
Component,
|
|
274
488
|
dispose() {
|
|
275
489
|
disposing = true;
|
|
276
490
|
try {
|
|
@@ -361,6 +575,7 @@ function createFarmIsolatedHydrationRuntime(options) {
|
|
|
361
575
|
__name(dispose, "dispose");
|
|
362
576
|
return {
|
|
363
577
|
hydrate,
|
|
578
|
+
carryOver,
|
|
364
579
|
updateModule,
|
|
365
580
|
dispose,
|
|
366
581
|
rootCount: /* @__PURE__ */ __name(() => roots.size, "rootCount")
|
|
@@ -374,9 +589,7 @@ function createFarmServerPageBoundary(ReactRuntime, runtime) {
|
|
|
374
589
|
ReactRuntime.useLayoutEffect(() => {
|
|
375
590
|
const page = ref.current;
|
|
376
591
|
if (!page) return;
|
|
377
|
-
const islands = Array.from(
|
|
378
|
-
page.querySelectorAll("farm-client-boundary[data-farm-client-boundary]")
|
|
379
|
-
);
|
|
592
|
+
const islands = Array.from(page.querySelectorAll(ISLAND_SELECTOR));
|
|
380
593
|
if (islands.length === 0) return;
|
|
381
594
|
const controller = new AbortController();
|
|
382
595
|
runtime.hydrate(page, controller.signal).catch((error) => {
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatOptionalPeerInstallHint,
|
|
3
|
+
isMissingPackageError
|
|
4
|
+
} from "./chunk-YOZYCI6Z.mjs";
|
|
5
|
+
import {
|
|
6
|
+
logger
|
|
7
|
+
} from "./chunk-KI3MESHB.mjs";
|
|
8
|
+
import {
|
|
9
|
+
__name
|
|
10
|
+
} from "./chunk-LPEX4YW6.mjs";
|
|
11
|
+
|
|
12
|
+
// src/build/tailwind.ts
|
|
13
|
+
import path from "path";
|
|
14
|
+
|
|
15
|
+
// src/build/vite-plugin-compat.ts
|
|
16
|
+
function adaptTailwindVitePlugin(pluginOption, builder) {
|
|
17
|
+
if (builder !== "rolldown") return pluginOption;
|
|
18
|
+
return adaptPluginOption(pluginOption);
|
|
19
|
+
}
|
|
20
|
+
__name(adaptTailwindVitePlugin, "adaptTailwindVitePlugin");
|
|
21
|
+
function adaptPluginOption(pluginOption) {
|
|
22
|
+
if (Array.isArray(pluginOption)) return pluginOption.map(adaptPluginOption);
|
|
23
|
+
if (!pluginOption || typeof pluginOption !== "object") return pluginOption;
|
|
24
|
+
const plugin = pluginOption;
|
|
25
|
+
if (!plugin.name?.startsWith("@tailwindcss/vite:generate:")) return pluginOption;
|
|
26
|
+
if (isVitePluginHook(plugin.transform)) {
|
|
27
|
+
return {
|
|
28
|
+
...plugin,
|
|
29
|
+
transform: withVite5TransformContext(plugin.transform)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (plugin.transform && typeof plugin.transform === "object" && "handler" in plugin.transform && isVitePluginHook(plugin.transform.handler)) {
|
|
33
|
+
return {
|
|
34
|
+
...plugin,
|
|
35
|
+
transform: {
|
|
36
|
+
...plugin.transform,
|
|
37
|
+
handler: withVite5TransformContext(plugin.transform.handler)
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return pluginOption;
|
|
42
|
+
}
|
|
43
|
+
__name(adaptPluginOption, "adaptPluginOption");
|
|
44
|
+
function isVitePluginHook(value) {
|
|
45
|
+
return typeof value === "function";
|
|
46
|
+
}
|
|
47
|
+
__name(isVitePluginHook, "isVitePluginHook");
|
|
48
|
+
function withVite5TransformContext(handler) {
|
|
49
|
+
return function(...args) {
|
|
50
|
+
const context = new Proxy(this, {
|
|
51
|
+
get(target, property, receiver) {
|
|
52
|
+
if (property === "environment") return void 0;
|
|
53
|
+
return Reflect.get(target, property, receiver);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return handler.apply(context, args);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
__name(withVite5TransformContext, "withVite5TransformContext");
|
|
60
|
+
|
|
61
|
+
// src/build/tailwind.ts
|
|
62
|
+
var TAILWIND_CSS_IMPORT = /@import\s+["']tailwindcss["']/;
|
|
63
|
+
var TAILWIND_VITE_INSTALL_HINT = formatOptionalPeerInstallHint(
|
|
64
|
+
"@tailwindcss/vite",
|
|
65
|
+
"enable built-in Tailwind CSS support",
|
|
66
|
+
{ dev: true }
|
|
67
|
+
);
|
|
68
|
+
var warnedMissingTailwind = false;
|
|
69
|
+
async function loadTailwindVitePlugin(options = {}, importTailwind = () => import("@tailwindcss/vite")) {
|
|
70
|
+
try {
|
|
71
|
+
const tailwindVite = (await importTailwind()).default;
|
|
72
|
+
const plugin = options.builder ? adaptTailwindVitePlugin(tailwindVite(), options.builder) : tailwindVite();
|
|
73
|
+
if (options.announce) logger.info("\u{1F4E6} Enabled built-in Tailwind support (@tailwindcss/vite)");
|
|
74
|
+
return plugin;
|
|
75
|
+
} catch (error) {
|
|
76
|
+
if (isMissingPackageError(error, "@tailwindcss/vite")) return createMissingTailwindPlugin();
|
|
77
|
+
logger.warn(
|
|
78
|
+
`Tailwind plugin auto-enable failed${options.label ? ` ${options.label}` : ""}; continuing without it: ${error.message}`
|
|
79
|
+
);
|
|
80
|
+
return void 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
__name(loadTailwindVitePlugin, "loadTailwindVitePlugin");
|
|
84
|
+
function createMissingTailwindPlugin() {
|
|
85
|
+
let root = process.cwd();
|
|
86
|
+
return {
|
|
87
|
+
name: "farm:tailwind-missing",
|
|
88
|
+
enforce: "pre",
|
|
89
|
+
configResolved(config) {
|
|
90
|
+
root = config.root;
|
|
91
|
+
},
|
|
92
|
+
transform(code, id) {
|
|
93
|
+
if (warnedMissingTailwind || !/\.css(?:\?.*)?$/.test(id) || !TAILWIND_CSS_IMPORT.test(code)) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
warnedMissingTailwind = true;
|
|
97
|
+
const file = path.relative(root, id.split("?", 1)[0]).replace(/\\/g, "/");
|
|
98
|
+
logger.warn(
|
|
99
|
+
`${file} imports Tailwind CSS, but @tailwindcss/vite is not installed; continuing without Tailwind. ${TAILWIND_VITE_INSTALL_HINT}`
|
|
100
|
+
);
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
__name(createMissingTailwindPlugin, "createMissingTailwindPlugin");
|
|
106
|
+
|
|
107
|
+
export {
|
|
108
|
+
loadTailwindVitePlugin
|
|
109
|
+
};
|
|
@@ -18,6 +18,9 @@ import {
|
|
|
18
18
|
renderMetadataHead,
|
|
19
19
|
resolveMetadataTitle
|
|
20
20
|
} from "./chunk-73WX6PRY.mjs";
|
|
21
|
+
import {
|
|
22
|
+
getFarmIslandValueHeaders
|
|
23
|
+
} from "./chunk-2NXO5SBY.mjs";
|
|
21
24
|
import {
|
|
22
25
|
createFarmDeploymentMismatchError,
|
|
23
26
|
createFarmDeploymentRequestHeaders,
|
|
@@ -300,7 +303,8 @@ var _SPARouter = class _SPARouter {
|
|
|
300
303
|
replace,
|
|
301
304
|
scroll,
|
|
302
305
|
state,
|
|
303
|
-
url
|
|
306
|
+
url,
|
|
307
|
+
refresh
|
|
304
308
|
}) : Promise.resolve()
|
|
305
309
|
);
|
|
306
310
|
if (!this.isCurrentNavigation(navigation, clientNavigation)) return;
|
|
@@ -527,7 +531,7 @@ var _SPARouter = class _SPARouter {
|
|
|
527
531
|
this.updateDocumentMetadata(options.pageData.metadata);
|
|
528
532
|
_hydrateFarmI18n(options.pageData.i18n);
|
|
529
533
|
if (this.onNavigate) {
|
|
530
|
-
await this.onNavigate(options.pageData);
|
|
534
|
+
await this.onNavigate(options.pageData, { refresh: options.refresh === true });
|
|
531
535
|
}
|
|
532
536
|
if (options.scroll) {
|
|
533
537
|
if (options.url.hash) {
|
|
@@ -629,7 +633,9 @@ var _SPARouter = class _SPARouter {
|
|
|
629
633
|
Accept: "application/x-farm-deferred+json, application/json",
|
|
630
634
|
"X-Farm-SPA": "1",
|
|
631
635
|
...activeLayoutChain ? { "X-Farm-Layout-Chain": activeLayoutChain } : {},
|
|
632
|
-
...interceptFrom ? { "X-Farm-Intercept-From": interceptFrom } : {}
|
|
636
|
+
...interceptFrom ? { "X-Farm-Intercept-From": interceptFrom } : {},
|
|
637
|
+
// Islands mode: the server leaves out island values this browser holds.
|
|
638
|
+
...getFarmIslandValueHeaders()
|
|
633
639
|
})
|
|
634
640
|
});
|
|
635
641
|
if (isFarmDeploymentMismatchResponse(response, this.options.deploymentId)) {
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
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
|
var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
|
|
4
4
|
|
|
5
|
+
// src/client/action-reference.ts
|
|
6
|
+
var ACTION_IDS_KEY = /* @__PURE__ */ Symbol.for("farm.form-actions.ids");
|
|
7
|
+
function getFarmActionId(value) {
|
|
8
|
+
if (typeof value !== "function") return void 0;
|
|
9
|
+
const scope = globalThis;
|
|
10
|
+
return _optionalChain([scope, 'access', _ => _[ACTION_IDS_KEY], 'optionalAccess', _2 => _2.get, 'call', _3 => _3(value)]);
|
|
11
|
+
}
|
|
12
|
+
_chunkS3JO3N4Hcjs.__name.call(void 0, getFarmActionId, "getFarmActionId");
|
|
13
|
+
|
|
5
14
|
// src/client/client-reference.ts
|
|
6
15
|
var CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("farm.isolated-hydration.client-reference");
|
|
7
16
|
function markFarmClientReference(boundary, reference) {
|
|
@@ -42,4 +51,5 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, updateFarmServerTreeModule, "updateFarmSer
|
|
|
42
51
|
|
|
43
52
|
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
|
|
55
|
+
exports.getFarmActionId = getFarmActionId; exports.markFarmClientReference = markFarmClientReference; exports.getFarmClientReference = getFarmClientReference; exports.subscribeFarmServerTreeUpdates = subscribeFarmServerTreeUpdates; exports.updateFarmServerTreeModule = updateFarmServerTreeModule;
|