@farm.js/core 0.1.30 → 0.1.34
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/README.md +1 -1
- package/dist/agent-runtime.cjs +69 -14
- package/dist/agent-runtime.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/agent-runtime.mjs +58 -3
- package/dist/api/route-manager.cjs +16 -13
- package/dist/api/route-manager.d.mts +1 -1
- package/dist/api/route-manager.d.ts +1 -1
- package/dist/api/route-manager.mjs +15 -12
- package/dist/api/runtime.cjs +9 -7
- package/dist/api/runtime.d.mts +1 -1
- package/dist/api/runtime.d.ts +1 -1
- package/dist/api/runtime.mjs +8 -6
- package/dist/api.cjs +19 -16
- package/dist/api.d.mts +2 -2
- package/dist/api.d.ts +2 -2
- package/dist/api.mjs +18 -15
- package/dist/{app-sUJ3jnTZ.d.ts → app-DgotYGbq.d.ts} +3 -3
- package/dist/app-markdown.cjs +8 -6
- package/dist/app-markdown.d.mts +3 -3
- package/dist/app-markdown.d.ts +3 -3
- package/dist/app-markdown.mjs +7 -5
- package/dist/{app-DAuUTIZf.d.mts → app-q4rmZlXK.d.mts} +3 -3
- package/dist/cache.cjs +2 -2
- package/dist/cache.d.mts +10 -1
- package/dist/cache.d.ts +10 -1
- package/dist/cache.mjs +1 -1
- package/dist/{chunk-YZTASLPQ.cjs → chunk-27ZWSI3W.cjs} +2 -2
- package/dist/{chunk-WBIH66JK.mjs → chunk-2ELDTQRN.mjs} +5 -2
- package/dist/{chunk-K7CELQLK.cjs → chunk-2F2ER724.cjs} +54 -29
- package/dist/{chunk-NRVGEI5I.mjs → chunk-2NNMOPDN.mjs} +4 -210
- package/dist/chunk-2NQQ5H5G.cjs +86 -0
- package/dist/{chunk-HPQC2LHF.cjs → chunk-36MK5YCW.cjs} +342 -163
- package/dist/chunk-3BU22U3M.cjs +237 -0
- package/dist/{chunk-MM5D6VLP.mjs → chunk-3KZS4SUS.mjs} +33 -14
- package/dist/chunk-3SDFA7UF.cjs +701 -0
- package/dist/{chunk-4IEPYMHF.mjs → chunk-3UEVPCGW.mjs} +1 -1
- package/dist/{chunk-6G3ZZ2IE.mjs → chunk-3VSKDFAT.mjs} +1 -1
- package/dist/{chunk-5HGR3W6O.mjs → chunk-5SJWVY6R.mjs} +8 -0
- package/dist/{chunk-X7WVQMIB.mjs → chunk-657WJNRY.mjs} +10 -4
- package/dist/{chunk-MKMBQSNQ.mjs → chunk-6VVL3MHY.mjs} +3 -3
- package/dist/{chunk-QZRVZSPN.cjs → chunk-77GNHH2Z.cjs} +3 -3
- package/dist/{chunk-KZLND3D2.cjs → chunk-7BT4H4P7.cjs} +7 -5
- package/dist/{chunk-A777V5WU.cjs → chunk-7M52YUMY.cjs} +2 -2
- package/dist/{chunk-VUMAE7NC.mjs → chunk-7Y6ZNFPX.mjs} +81 -30
- package/dist/{chunk-ZDILFMWN.cjs → chunk-A5FGU2WU.cjs} +74 -23
- package/dist/{chunk-BZ3CHOFX.mjs → chunk-AGC75XAE.mjs} +37 -1
- package/dist/{chunk-4ZQQL4IU.mjs → chunk-AHGECQEW.mjs} +1 -1
- package/dist/{chunk-RG3ZOTG5.cjs → chunk-AI7QMY7O.cjs} +10 -3
- package/dist/{chunk-O3DTUAX2.mjs → chunk-AQZFOP7S.mjs} +6 -77
- package/dist/{chunk-WNLBF77X.cjs → chunk-ATK2R4CH.cjs} +14 -12
- package/dist/{chunk-SORB3MAR.cjs → chunk-AWC4VUZL.cjs} +17 -17
- package/dist/{chunk-YMCXWPWK.mjs → chunk-BCMSYSN2.mjs} +4 -1
- package/dist/{chunk-BZAGKCKB.cjs → chunk-BTAG7LI7.cjs} +2 -2
- package/dist/{chunk-I6XDAKWQ.mjs → chunk-BTHHUD7Q.mjs} +14 -0
- package/dist/chunk-C4SPBWFM.cjs +26 -0
- package/dist/{chunk-JATSG2ZO.mjs → chunk-CLJYVZAD.mjs} +4 -2
- package/dist/{chunk-J3LOGE4T.cjs → chunk-DQQOKWYA.cjs} +5 -5
- package/dist/{chunk-JLRDISQL.cjs → chunk-DZ4DTRJ5.cjs} +7 -7
- package/dist/chunk-E5GNDG5F.mjs +701 -0
- package/dist/{chunk-E76XC6ZG.mjs → chunk-EZDQRNQ7.mjs} +2 -2
- package/dist/{chunk-TOVMYGYW.mjs → chunk-F2SE2VDO.mjs} +1 -1
- package/dist/{chunk-BSPQVJ4A.mjs → chunk-FDR64H6B.mjs} +13 -0
- package/dist/{chunk-5OVTOKGH.cjs → chunk-FFFW3OQ7.cjs} +2 -2
- package/dist/{chunk-D4JE5NNV.cjs → chunk-FNO7A7CM.cjs} +5 -5
- package/dist/chunk-FZ6YYU2W.mjs +65 -0
- package/dist/{chunk-PZNCMPJF.cjs → chunk-G26MUMKL.cjs} +14 -8
- package/dist/{chunk-IXUY2F5U.mjs → chunk-GCXWJJKH.mjs} +4 -7
- package/dist/{chunk-JLCQGPXE.mjs → chunk-GNSDTTWZ.mjs} +50 -61
- package/dist/{chunk-D234YWNA.mjs → chunk-GOABMOX3.mjs} +151 -3
- package/dist/{chunk-HBTUGXHS.cjs → chunk-HLJ6MBUZ.cjs} +7 -4
- package/dist/{chunk-GZYH4OER.mjs → chunk-HR5KPHC2.mjs} +1 -1
- package/dist/{chunk-ZCU4NZ3M.cjs → chunk-IE7XCHH3.cjs} +4 -4
- package/dist/{chunk-I26CZYPV.cjs → chunk-IHNIDL6H.cjs} +50 -7
- package/dist/{chunk-2FQHH5SC.mjs → chunk-IHNMMXHV.mjs} +49 -24
- package/dist/{chunk-VHJGDMCG.cjs → chunk-IWZKTWHZ.cjs} +2 -2
- package/dist/{chunk-DGXN3L4D.mjs → chunk-JDPAKVS4.mjs} +4 -4
- package/dist/chunk-JG6DJF5A.mjs +238 -0
- package/dist/{chunk-5TISYEQF.mjs → chunk-JM5XPKWH.mjs} +10 -3
- package/dist/{chunk-BJJATPEC.mjs → chunk-KN7K4VQN.mjs} +1 -1
- package/dist/{chunk-WPYFSQKK.cjs → chunk-KNBBQHO2.cjs} +15 -1
- package/dist/{chunk-XWAWFQFS.cjs → chunk-KXWRO25S.cjs} +7 -4
- package/dist/{chunk-QG5HNS7P.mjs → chunk-LHODW25H.mjs} +2 -2
- package/dist/{chunk-BXFWA23T.mjs → chunk-LMJ7VRHZ.mjs} +3 -3
- package/dist/{chunk-IVLUJUT4.mjs → chunk-LR5QSC2P.mjs} +388 -209
- package/dist/chunk-LSKZMJMP.cjs +65 -0
- package/dist/{chunk-2N5PX3LS.mjs → chunk-LYV44OIR.mjs} +7 -1
- package/dist/{chunk-5MKEDGLD.cjs → chunk-M64YUMA4.cjs} +11 -6
- package/dist/{chunk-EXLKRR4U.cjs → chunk-MIDIZJZC.cjs} +12 -12
- package/dist/{chunk-ES4B2IXW.cjs → chunk-MOKLYNHV.cjs} +2 -2
- package/dist/{chunk-IV6CQY7O.mjs → chunk-MSSFIQGM.mjs} +63 -13
- package/dist/{chunk-KH7BN726.cjs → chunk-N4UOK6ZI.cjs} +8 -2
- package/dist/{chunk-YMUE7L3D.mjs → chunk-NGVORZVZ.mjs} +1 -1
- package/dist/{chunk-JNGIWIY6.mjs → chunk-NPC7VWJE.mjs} +2 -2
- package/dist/{chunk-ILWLPEVO.mjs → chunk-NRSN7G7E.mjs} +2 -2
- package/dist/{chunk-PQD2AI3B.mjs → chunk-O27L4YAA.mjs} +1 -1
- package/dist/{chunk-X5TXZFMN.cjs → chunk-ODBZYBAB.cjs} +1 -1
- package/dist/{chunk-NPPL5YDT.cjs → chunk-P64MIF5B.cjs} +154 -6
- package/dist/{chunk-JFHKNFEO.cjs → chunk-PQDFUSXD.cjs} +14 -14
- package/dist/{chunk-F6XEGFHO.mjs → chunk-PXKIEXZD.mjs} +10 -0
- package/dist/{chunk-S5GDHOE4.mjs → chunk-PZNL3WEG.mjs} +48 -5
- package/dist/{chunk-FV45CKBC.mjs → chunk-QCFBDFRS.mjs} +1 -1
- package/dist/{chunk-75BRBIFP.cjs → chunk-QCVE2OCI.cjs} +5 -8
- package/dist/{chunk-6ZCMSZ5U.mjs → chunk-QE6VAKLT.mjs} +1 -1
- package/dist/{chunk-75DYEVXI.cjs → chunk-QGYRXFU2.cjs} +9 -9
- package/dist/{chunk-CTV2TTNP.cjs → chunk-QJ3J6MZT.cjs} +16 -87
- package/dist/{chunk-O6XNAMBV.mjs → chunk-QLQ32WC4.mjs} +8 -3
- package/dist/{chunk-GIWC4CFJ.cjs → chunk-SJVKK4JE.cjs} +839 -420
- package/dist/{chunk-3FCFQP5V.cjs → chunk-TA5G2HWD.cjs} +21 -21
- package/dist/{chunk-Z5HIWVDP.cjs → chunk-TDFPACVX.cjs} +62 -73
- package/dist/{chunk-ND224OE2.cjs → chunk-TKSCR644.cjs} +34 -15
- package/dist/{chunk-2UABTL3Y.mjs → chunk-U4PTAHW3.mjs} +64 -13
- package/dist/{chunk-ZHVYQL3H.cjs → chunk-U74I55WB.cjs} +86 -35
- package/dist/chunk-UBO4SGH4.mjs +86 -0
- package/dist/{chunk-IQXFRNY2.cjs → chunk-UFDAAQFX.cjs} +2 -2
- package/dist/{chunk-NXG66MR7.cjs → chunk-UX5S4JEO.cjs} +40 -4
- package/dist/{chunk-5ZSWG4UX.cjs → chunk-UXFQ3UDA.cjs} +14 -1
- package/dist/{chunk-L4DVIHOC.mjs → chunk-VCCUOMQN.mjs} +1 -1
- package/dist/{chunk-4V7GIE2U.mjs → chunk-VHANUNEG.mjs} +2 -2
- package/dist/{chunk-FXUUWYAX.cjs → chunk-VKNHTSAP.cjs} +10 -0
- package/dist/{chunk-2AKFKCHA.mjs → chunk-W7LF2J2S.mjs} +1 -1
- package/dist/{chunk-MNUGPHLN.mjs → chunk-WNNYOOIB.mjs} +5 -3
- package/dist/{chunk-K6V52QMI.mjs → chunk-X242HVD5.mjs} +1 -1
- package/dist/{chunk-UJ2C4ICS.cjs → chunk-XJXBIP67.cjs} +4 -4
- package/dist/{chunk-S4K74WI4.mjs → chunk-XV5DJTBX.mjs} +539 -121
- package/dist/{chunk-6CNX6Q3K.cjs → chunk-XXJU7FCC.cjs} +9 -5
- package/dist/{chunk-DYEJQTDN.cjs → chunk-YSCV4SJF.cjs} +4 -4
- package/dist/{chunk-2SDO73HK.cjs → chunk-YWN746US.cjs} +64 -14
- package/dist/chunk-Z2HLU4IX.cjs +238 -0
- package/dist/{chunk-Q5JFU33Q.cjs → chunk-Z2YLTERK.cjs} +4 -4
- package/dist/{chunk-XLTV4VOG.cjs → chunk-ZHPHJPQP.cjs} +4 -4
- package/dist/{chunk-7CXKSRKL.mjs → chunk-ZKP7C2B6.mjs} +4 -4
- package/dist/{chunk-ATXI6LGT.mjs → chunk-ZUSJDQ2Q.mjs} +8 -4
- package/dist/{client-plugins-BX2ptm4H.d.mts → client-plugins-CLObcuCq.d.mts} +26 -2
- package/dist/{client-plugins-BmxM5KW_.d.ts → client-plugins-DZjHC4Mi.d.ts} +26 -2
- package/dist/client-plugins.d.mts +1 -1
- package/dist/client-plugins.d.ts +1 -1
- package/dist/client.cjs +8 -8
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/client.mjs +7 -7
- package/dist/config.d.mts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/{devtools-GGVPZHJX.cjs → devtools-HU6Y2MNV.cjs} +11 -9
- package/dist/{devtools-THVNPI2M.mjs → devtools-RNXCTS4R.mjs} +10 -8
- package/dist/docs.cjs +13 -11
- package/dist/docs.d.mts +5 -0
- package/dist/docs.d.ts +5 -0
- package/dist/docs.mjs +12 -10
- package/dist/environment/vite.cjs +2 -2
- package/dist/environment/vite.mjs +1 -1
- package/dist/headers.cjs +4 -4
- package/dist/headers.mjs +3 -3
- package/dist/i18n/client.cjs +14 -13
- package/dist/i18n/client.mjs +5 -4
- package/dist/i18n/index.cjs +3 -2
- package/dist/i18n/index.mjs +2 -1
- package/dist/i18n/server.cjs +6 -5
- package/dist/i18n/server.mjs +5 -4
- package/dist/image/server.cjs +2 -2
- package/dist/image/server.mjs +1 -1
- package/dist/image/sharp.cjs +9 -9
- package/dist/image/sharp.mjs +1 -1
- package/dist/index.cjs +67 -55
- package/dist/index.d.mts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.mjs +70 -58
- package/dist/integrations.cjs +6 -3
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/integrations.mjs +7 -4
- package/dist/internal/app-markdown-runtime.cjs +7 -5
- package/dist/internal/app-markdown-runtime.d.mts +14 -3
- package/dist/internal/app-markdown-runtime.d.ts +14 -3
- package/dist/internal/app-markdown-runtime.mjs +6 -4
- package/dist/internal/build-runtime.cjs +38 -35
- package/dist/internal/build-runtime.d.mts +3 -3
- package/dist/internal/build-runtime.d.ts +3 -3
- package/dist/internal/build-runtime.mjs +37 -34
- package/dist/internal/cli-runtime.cjs +20 -17
- package/dist/internal/cli-runtime.mjs +19 -16
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/client-runtime.cjs +4 -2
- package/dist/internal/client-runtime.d.mts +9 -1
- package/dist/internal/client-runtime.d.ts +9 -1
- package/dist/internal/client-runtime.mjs +3 -1
- package/dist/internal/compression-runtime.d.mts +1 -1
- package/dist/internal/compression-runtime.d.ts +1 -1
- package/dist/internal/config-runtime.cjs +11 -9
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +10 -8
- package/dist/internal/infra-analytics-runtime.cjs +4 -4
- package/dist/internal/infra-analytics-runtime.mjs +2 -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 +20 -14
- package/dist/internal/production-runtime.d.mts +115 -8
- package/dist/internal/production-runtime.d.ts +115 -8
- package/dist/internal/production-runtime.mjs +19 -13
- package/dist/internal/request-cookies.cjs +4 -2
- package/dist/internal/request-cookies.d.mts +9 -1
- package/dist/internal/request-cookies.d.ts +9 -1
- package/dist/internal/request-cookies.mjs +3 -1
- package/dist/markdown.cjs +4 -4
- package/dist/markdown.d.mts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/markdown.mjs +3 -3
- package/dist/{metadata-DsEaK7mQ.d.mts → metadata-2HSU2i_w.d.mts} +1 -1
- package/dist/{metadata-fwZ3gfG6.d.ts → metadata-Cjs8JMRM.d.ts} +1 -1
- package/dist/middleware.cjs +18 -8
- package/dist/middleware.d.mts +24 -5
- package/dist/middleware.d.ts +24 -5
- package/dist/middleware.mjs +18 -8
- package/dist/navigation.cjs +6 -6
- package/dist/navigation.d.mts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/navigation.mjs +5 -5
- package/dist/{nitro-NAKCRVHX.mjs → nitro-4XGPNIK4.mjs} +3 -3
- package/dist/{nitro-VYDZGYFY.cjs → nitro-HSAQFXSS.cjs} +4 -4
- package/dist/plugin.cjs +33 -30
- package/dist/plugin.d.mts +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.mjs +32 -29
- package/dist/{production-runtime-DNkpFnmg.d.ts → production-runtime-BU5ETAK9.d.ts} +8 -1
- package/dist/{production-runtime-Baqgwtvc.d.mts → production-runtime-CysZl3EV.d.mts} +8 -1
- package/dist/query/client.cjs +7 -7
- package/dist/query/client.mjs +3 -3
- package/dist/{render-plan-DhwQnmmX.d.mts → render-plan-CKr4ltOd.d.mts} +1 -1
- package/dist/{render-plan-rkIK9wd9.d.ts → render-plan-D72O1qm4.d.ts} +1 -1
- package/dist/renderer-client.cjs +39 -19
- package/dist/renderer-client.d.mts +3 -3
- package/dist/renderer-client.d.ts +3 -3
- package/dist/renderer-client.mjs +28 -8
- package/dist/{request-CFy1BltJ.d.mts → request-Be83WafN.d.mts} +7 -2
- package/dist/{request-BcY4RYPC.d.ts → request-DbyOYI2j.d.ts} +7 -2
- package/dist/request.cjs +2 -2
- package/dist/request.d.mts +2 -2
- package/dist/request.d.ts +2 -2
- package/dist/request.mjs +1 -1
- package/dist/{route-rendering-BkS0TBlB.d.mts → route-rendering-BG56SzvJ.d.mts} +1 -1
- package/dist/{route-rendering-D4XpMjam.d.ts → route-rendering-CtVMpV-k.d.ts} +1 -1
- package/dist/{router-C4zPlC3V.d.mts → router-ALUvm8gC.d.mts} +1 -1
- package/dist/{router-Cq7BcZxg.d.ts → router-D94-SDlW.d.ts} +1 -1
- package/dist/routes.cjs +3 -3
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/routes.mjs +2 -2
- package/dist/server-fn.cjs +3 -3
- package/dist/server-fn.mjs +2 -2
- package/dist/server-plugins.cjs +4 -4
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server-plugins.mjs +3 -3
- package/dist/server-query-client.cjs +3 -3
- package/dist/server-query-client.mjs +2 -2
- package/dist/server-query.cjs +4 -4
- package/dist/server-query.mjs +3 -3
- package/dist/server.cjs +60 -57
- package/dist/server.d.mts +7 -7
- package/dist/server.d.ts +7 -7
- package/dist/server.mjs +37 -34
- package/dist/{spa-router-B1HI3X9k.d.ts → spa-router-CxK3USIz.d.ts} +2 -2
- package/dist/{spa-router-DzPZH-AO.d.mts → spa-router-DbxNRKOB.d.mts} +2 -2
- package/dist/testing.cjs +19 -17
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.mjs +16 -14
- package/dist/theme/server.cjs +4 -3
- package/dist/theme/server.mjs +3 -2
- package/dist/{utils-DMD1Hzta.d.ts → utils-311Y8eoK.d.ts} +1 -1
- package/dist/{utils-CEBktlBG.d.mts → utils-4wVRcpOw.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +33 -30
- package/dist/vite.d.mts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.mjs +32 -29
- package/package.json +2 -2
- package/dist/chunk-22GUSVNJ.cjs +0 -351
- package/dist/chunk-SWN467MP.cjs +0 -18
- package/dist/chunk-XGC343EY.cjs +0 -443
- package/dist/chunk-ZSH2Y4LN.mjs +0 -351
- /package/dist/{chunk-SUIBNSNO.cjs → chunk-SJNMVDDF.cjs} +0 -0
- /package/dist/{chunk-LNZ7JZUS.mjs → chunk-UDNPLXW7.mjs} +0 -0
package/dist/chunk-ZSH2Y4LN.mjs
DELETED
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__name
|
|
3
|
-
} from "./chunk-LPEX4YW6.mjs";
|
|
4
|
-
|
|
5
|
-
// src/environment-vite.ts
|
|
6
|
-
var ENVIRONMENT_IMPORTS = /* @__PURE__ */ new Set([
|
|
7
|
-
"@farm.js/core",
|
|
8
|
-
"@farm.js/core/environment",
|
|
9
|
-
"@farm.js/core/server"
|
|
10
|
-
]);
|
|
11
|
-
var ENVIRONMENT_FUNCTIONS = /* @__PURE__ */ new Set([
|
|
12
|
-
"createServerOnlyFn",
|
|
13
|
-
"createClientOnlyFn",
|
|
14
|
-
"createIsomorphicFn"
|
|
15
|
-
]);
|
|
16
|
-
var MODULE_EXTENSION_RE = /\.[cm]?[jt]sx?$/;
|
|
17
|
-
function transformEnvironmentFunctions(options) {
|
|
18
|
-
if (!isTransformableModule(options.id) || !containsEnvironmentFunction(options.code)) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
let output = options.code;
|
|
22
|
-
let transformed = false;
|
|
23
|
-
for (let pass = 0; pass < 20; pass++) {
|
|
24
|
-
const ast = options.parse(output);
|
|
25
|
-
const bindings = findEnvironmentFunctionBindings(ast);
|
|
26
|
-
if (bindings.named.size === 0 && bindings.namespaces.size === 0) break;
|
|
27
|
-
const calls = findEnvironmentCalls(ast, bindings);
|
|
28
|
-
if (calls.length === 0) break;
|
|
29
|
-
const innermostCalls = calls.filter(
|
|
30
|
-
(call) => !calls.some(
|
|
31
|
-
(candidate) => candidate !== call && candidate.node.start > call.node.start && candidate.node.end < call.node.end
|
|
32
|
-
)
|
|
33
|
-
);
|
|
34
|
-
const replacements = innermostCalls.map(
|
|
35
|
-
(call) => createReplacement(output, options.id, options.environment, call)
|
|
36
|
-
);
|
|
37
|
-
output = applyReplacements(output, replacements);
|
|
38
|
-
transformed = true;
|
|
39
|
-
}
|
|
40
|
-
if (!transformed) return null;
|
|
41
|
-
const remainingAst = options.parse(output);
|
|
42
|
-
const remainingBindings = findEnvironmentFunctionBindings(remainingAst);
|
|
43
|
-
if (findEnvironmentCalls(remainingAst, remainingBindings).length > 0) {
|
|
44
|
-
throw transformError(options.id, "environment functions are nested too deeply");
|
|
45
|
-
}
|
|
46
|
-
return { code: output };
|
|
47
|
-
}
|
|
48
|
-
__name(transformEnvironmentFunctions, "transformEnvironmentFunctions");
|
|
49
|
-
function farmEnvironmentFunctionsPlugin() {
|
|
50
|
-
return {
|
|
51
|
-
name: "farm:environment-functions",
|
|
52
|
-
enforce: "post",
|
|
53
|
-
transform(code, id, transformOptions) {
|
|
54
|
-
const result = transformEnvironmentFunctions({
|
|
55
|
-
code,
|
|
56
|
-
id,
|
|
57
|
-
environment: resolveBuildEnvironment(
|
|
58
|
-
this,
|
|
59
|
-
transformOptions?.ssr
|
|
60
|
-
),
|
|
61
|
-
parse: /* @__PURE__ */ __name((source) => this.parse(source), "parse")
|
|
62
|
-
});
|
|
63
|
-
return result ? { code: result.code, map: null } : null;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
__name(farmEnvironmentFunctionsPlugin, "farmEnvironmentFunctionsPlugin");
|
|
68
|
-
function resolveBuildEnvironment(context, ssr) {
|
|
69
|
-
if (context.environment?.name === "client") return "client";
|
|
70
|
-
if (context.environment?.name === "rsc" || context.environment?.name === "ssr") {
|
|
71
|
-
return "server";
|
|
72
|
-
}
|
|
73
|
-
return ssr ? "server" : "client";
|
|
74
|
-
}
|
|
75
|
-
__name(resolveBuildEnvironment, "resolveBuildEnvironment");
|
|
76
|
-
function findEnvironmentFunctionBindings(ast) {
|
|
77
|
-
const named = /* @__PURE__ */ new Map();
|
|
78
|
-
const namespaces = /* @__PURE__ */ new Set();
|
|
79
|
-
const body = Array.isArray(ast.body) ? ast.body : [];
|
|
80
|
-
for (const statement of body) {
|
|
81
|
-
if (!isAstNode(statement) || statement.type !== "ImportDeclaration") continue;
|
|
82
|
-
const source = isAstNode(statement.source) ? statement.source.value : void 0;
|
|
83
|
-
if (typeof source !== "string" || !ENVIRONMENT_IMPORTS.has(source)) continue;
|
|
84
|
-
const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];
|
|
85
|
-
for (const specifier of specifiers) {
|
|
86
|
-
if (!isAstNode(specifier) || !isAstNode(specifier.local)) continue;
|
|
87
|
-
const localName = specifier.local.name;
|
|
88
|
-
if (typeof localName !== "string") continue;
|
|
89
|
-
if (specifier.type === "ImportNamespaceSpecifier") {
|
|
90
|
-
namespaces.add(localName);
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
if (specifier.type !== "ImportSpecifier" || !isAstNode(specifier.imported)) continue;
|
|
94
|
-
const importedName = specifier.imported.name ?? specifier.imported.value;
|
|
95
|
-
if (isEnvironmentFunctionKind(importedName)) {
|
|
96
|
-
named.set(localName, importedName);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return { named, namespaces };
|
|
101
|
-
}
|
|
102
|
-
__name(findEnvironmentFunctionBindings, "findEnvironmentFunctionBindings");
|
|
103
|
-
function findEnvironmentCalls(ast, bindings) {
|
|
104
|
-
const calls = [];
|
|
105
|
-
walkAst(ast, (node, ancestors) => {
|
|
106
|
-
if (node.type !== "CallExpression" || !isAstNode(node.callee)) return;
|
|
107
|
-
if (node.callee.type === "Identifier" && typeof node.callee.name === "string") {
|
|
108
|
-
const kind = bindings.named.get(node.callee.name);
|
|
109
|
-
if (kind && !isNameShadowed(node.callee.name, ancestors)) calls.push({ node, kind });
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (node.callee.type !== "MemberExpression" || node.callee.computed === true || !isAstNode(node.callee.object) || !isAstNode(node.callee.property) || node.callee.object.type !== "Identifier" || node.callee.property.type !== "Identifier" || typeof node.callee.object.name !== "string" || typeof node.callee.property.name !== "string" || !bindings.namespaces.has(node.callee.object.name) || isNameShadowed(node.callee.object.name, ancestors) || !isEnvironmentFunctionKind(node.callee.property.name)) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
calls.push({ node, kind: node.callee.property.name });
|
|
116
|
-
});
|
|
117
|
-
return calls;
|
|
118
|
-
}
|
|
119
|
-
__name(findEnvironmentCalls, "findEnvironmentCalls");
|
|
120
|
-
function createReplacement(code, id, environment, call) {
|
|
121
|
-
const args = Array.isArray(call.node.arguments) ? call.node.arguments : [];
|
|
122
|
-
if (args.length !== 1 || !isAstNode(args[0]) || args[0].type === "SpreadElement") {
|
|
123
|
-
throw transformError(id, `${call.kind}() requires exactly one static argument`);
|
|
124
|
-
}
|
|
125
|
-
let replacement;
|
|
126
|
-
if (call.kind === "createIsomorphicFn") {
|
|
127
|
-
replacement = selectIsomorphicImplementation(code, id, environment, args[0]);
|
|
128
|
-
} else {
|
|
129
|
-
const expected = call.kind === "createServerOnlyFn" ? "server" : "client";
|
|
130
|
-
replacement = environment === expected ? readNode(code, args[0]) : `(0, ${readNode(code, call.node.callee)})(undefined, ${JSON.stringify(environment)})`;
|
|
131
|
-
}
|
|
132
|
-
return {
|
|
133
|
-
start: call.node.start,
|
|
134
|
-
end: call.node.end,
|
|
135
|
-
code: `(${replacement})`
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
__name(createReplacement, "createReplacement");
|
|
139
|
-
function selectIsomorphicImplementation(code, id, environment, optionsNode) {
|
|
140
|
-
if (optionsNode.type !== "ObjectExpression") {
|
|
141
|
-
throw transformError(id, "createIsomorphicFn() requires an inline options object");
|
|
142
|
-
}
|
|
143
|
-
const properties = Array.isArray(optionsNode.properties) ? optionsNode.properties : [];
|
|
144
|
-
if (properties.some((property) => isAstNode(property) && property.type === "SpreadElement")) {
|
|
145
|
-
throw transformError(id, "createIsomorphicFn() does not support spread properties");
|
|
146
|
-
}
|
|
147
|
-
let selectedProperty;
|
|
148
|
-
for (const property of properties) {
|
|
149
|
-
if (!isAstNode(property) || property.type !== "Property" || property.computed === true) {
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
const key = readPropertyName(property.key);
|
|
153
|
-
if (key === environment) selectedProperty = property;
|
|
154
|
-
}
|
|
155
|
-
if (!selectedProperty || !isAstNode(selectedProperty.value)) {
|
|
156
|
-
throw transformError(id, `createIsomorphicFn() requires a ${environment} implementation`);
|
|
157
|
-
}
|
|
158
|
-
if (selectedProperty.kind !== void 0 && selectedProperty.kind !== "init") {
|
|
159
|
-
throw transformError(id, "createIsomorphicFn() does not support getters or setters");
|
|
160
|
-
}
|
|
161
|
-
return selectedProperty.method === true ? renderObjectMethod(code, id, selectedProperty.value) : readNode(code, selectedProperty.value);
|
|
162
|
-
}
|
|
163
|
-
__name(selectIsomorphicImplementation, "selectIsomorphicImplementation");
|
|
164
|
-
function renderObjectMethod(code, id, functionNode) {
|
|
165
|
-
if (!isAstNode(functionNode.body) || !Array.isArray(functionNode.params)) {
|
|
166
|
-
throw transformError(id, "createIsomorphicFn() received an unsupported method");
|
|
167
|
-
}
|
|
168
|
-
const params = functionNode.params.map((param) => {
|
|
169
|
-
if (!isAstNode(param)) {
|
|
170
|
-
throw transformError(id, "createIsomorphicFn() received an unsupported parameter");
|
|
171
|
-
}
|
|
172
|
-
return readNode(code, param);
|
|
173
|
-
});
|
|
174
|
-
const asyncPrefix = functionNode.async === true ? "async " : "";
|
|
175
|
-
const generatorMarker = functionNode.generator === true ? "*" : "";
|
|
176
|
-
return `${asyncPrefix}function${generatorMarker}(${params.join(", ")}) ${readNode(code, functionNode.body)}`;
|
|
177
|
-
}
|
|
178
|
-
__name(renderObjectMethod, "renderObjectMethod");
|
|
179
|
-
function applyReplacements(code, replacements) {
|
|
180
|
-
let output = code;
|
|
181
|
-
for (const replacement of replacements.sort((left, right) => right.start - left.start)) {
|
|
182
|
-
output = output.slice(0, replacement.start) + replacement.code + output.slice(replacement.end);
|
|
183
|
-
}
|
|
184
|
-
return output;
|
|
185
|
-
}
|
|
186
|
-
__name(applyReplacements, "applyReplacements");
|
|
187
|
-
function walkAst(node, visit, ancestors = []) {
|
|
188
|
-
visit(node, ancestors);
|
|
189
|
-
const childAncestors = [...ancestors, node];
|
|
190
|
-
for (const [key, value] of Object.entries(node)) {
|
|
191
|
-
if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
|
|
192
|
-
if (isAstNode(value)) {
|
|
193
|
-
walkAst(value, visit, childAncestors);
|
|
194
|
-
} else if (Array.isArray(value)) {
|
|
195
|
-
for (const item of value) {
|
|
196
|
-
if (isAstNode(item)) walkAst(item, visit, childAncestors);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
__name(walkAst, "walkAst");
|
|
202
|
-
function isNameShadowed(name, ancestors) {
|
|
203
|
-
for (const [index, ancestor] of ancestors.entries()) {
|
|
204
|
-
if (isFunctionNode(ancestor)) {
|
|
205
|
-
const params = Array.isArray(ancestor.params) ? ancestor.params : [];
|
|
206
|
-
if (params.some((param) => patternContainsName(param, name))) return true;
|
|
207
|
-
if (patternContainsName(ancestor.id, name)) return true;
|
|
208
|
-
if (isAstNode(ancestor.body) && ancestors.slice(index + 1).includes(ancestor.body) && functionBodyDeclaresVarName(ancestor.body, name)) {
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (ancestor.type === "CatchClause" && patternContainsName(ancestor.param, name)) {
|
|
213
|
-
return true;
|
|
214
|
-
}
|
|
215
|
-
if ((ancestor.type === "BlockStatement" || ancestor.type === "StaticBlock") && blockDeclaresName(ancestor, name)) {
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
if (loopDeclaresName(ancestor, name)) return true;
|
|
219
|
-
if (ancestor.type === "SwitchStatement" && ancestors.slice(index + 1).some((candidate) => candidate.type === "SwitchCase") && switchDeclaresName(ancestor, name)) {
|
|
220
|
-
return true;
|
|
221
|
-
}
|
|
222
|
-
if (ancestor.type === "ClassExpression" && patternContainsName(ancestor.id, name) && ancestors.slice(index + 1).some((candidate) => candidate.type === "ClassBody")) {
|
|
223
|
-
return true;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
__name(isNameShadowed, "isNameShadowed");
|
|
229
|
-
function functionBodyDeclaresVarName(body, name) {
|
|
230
|
-
if (body.type === "VariableDeclaration" && body.kind === "var") {
|
|
231
|
-
const declarations = Array.isArray(body.declarations) ? body.declarations : [];
|
|
232
|
-
if (declarations.some(
|
|
233
|
-
(declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
|
|
234
|
-
)) {
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
for (const [key, value] of Object.entries(body)) {
|
|
239
|
-
if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
|
|
240
|
-
if (isAstNode(value)) {
|
|
241
|
-
if (isNestedVarScope(value)) continue;
|
|
242
|
-
if (functionBodyDeclaresVarName(value, name)) return true;
|
|
243
|
-
} else if (Array.isArray(value)) {
|
|
244
|
-
for (const item of value) {
|
|
245
|
-
if (!isAstNode(item) || isNestedVarScope(item)) continue;
|
|
246
|
-
if (functionBodyDeclaresVarName(item, name)) return true;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return false;
|
|
251
|
-
}
|
|
252
|
-
__name(functionBodyDeclaresVarName, "functionBodyDeclaresVarName");
|
|
253
|
-
function isNestedVarScope(node) {
|
|
254
|
-
return isFunctionNode(node) || node.type === "ClassDeclaration" || node.type === "ClassExpression";
|
|
255
|
-
}
|
|
256
|
-
__name(isNestedVarScope, "isNestedVarScope");
|
|
257
|
-
function loopDeclaresName(node, name) {
|
|
258
|
-
const declaration = node.type === "ForStatement" ? node.init : node.type === "ForInStatement" || node.type === "ForOfStatement" ? node.left : void 0;
|
|
259
|
-
if (!isAstNode(declaration) || declaration.type !== "VariableDeclaration") return false;
|
|
260
|
-
const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];
|
|
261
|
-
return declarations.some((item) => isAstNode(item) && patternContainsName(item.id, name));
|
|
262
|
-
}
|
|
263
|
-
__name(loopDeclaresName, "loopDeclaresName");
|
|
264
|
-
function switchDeclaresName(node, name) {
|
|
265
|
-
const cases = Array.isArray(node.cases) ? node.cases : [];
|
|
266
|
-
return cases.some((switchCase) => {
|
|
267
|
-
if (!isAstNode(switchCase) || !Array.isArray(switchCase.consequent)) return false;
|
|
268
|
-
return switchCase.consequent.some((statement) => {
|
|
269
|
-
if (!isAstNode(statement)) return false;
|
|
270
|
-
if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
|
|
271
|
-
return true;
|
|
272
|
-
}
|
|
273
|
-
if (statement.type !== "VariableDeclaration" || statement.kind === "var") return false;
|
|
274
|
-
const declarations = Array.isArray(statement.declarations) ? statement.declarations : [];
|
|
275
|
-
return declarations.some(
|
|
276
|
-
(declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
|
|
277
|
-
);
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
__name(switchDeclaresName, "switchDeclaresName");
|
|
282
|
-
function blockDeclaresName(block, name) {
|
|
283
|
-
const statements = Array.isArray(block.body) ? block.body : [];
|
|
284
|
-
for (const statement of statements) {
|
|
285
|
-
if (!isAstNode(statement)) continue;
|
|
286
|
-
if ((statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") && patternContainsName(statement.id, name)) {
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
if (statement.type !== "VariableDeclaration" || !Array.isArray(statement.declarations)) {
|
|
290
|
-
continue;
|
|
291
|
-
}
|
|
292
|
-
if (statement.declarations.some(
|
|
293
|
-
(declaration) => isAstNode(declaration) && patternContainsName(declaration.id, name)
|
|
294
|
-
)) {
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
return false;
|
|
299
|
-
}
|
|
300
|
-
__name(blockDeclaresName, "blockDeclaresName");
|
|
301
|
-
function patternContainsName(value, name) {
|
|
302
|
-
if (!isAstNode(value)) return false;
|
|
303
|
-
if (value.type === "Identifier") return value.name === name;
|
|
304
|
-
if (value.type === "RestElement") return patternContainsName(value.argument, name);
|
|
305
|
-
if (value.type === "AssignmentPattern") return patternContainsName(value.left, name);
|
|
306
|
-
if (value.type === "Property") return patternContainsName(value.value, name);
|
|
307
|
-
const elements = Array.isArray(value.elements) ? value.elements : Array.isArray(value.properties) ? value.properties : [];
|
|
308
|
-
return elements.some((element) => patternContainsName(element, name));
|
|
309
|
-
}
|
|
310
|
-
__name(patternContainsName, "patternContainsName");
|
|
311
|
-
function isFunctionNode(node) {
|
|
312
|
-
return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
|
|
313
|
-
}
|
|
314
|
-
__name(isFunctionNode, "isFunctionNode");
|
|
315
|
-
function readPropertyName(value) {
|
|
316
|
-
if (!isAstNode(value)) return void 0;
|
|
317
|
-
if (value.type === "Identifier" && typeof value.name === "string") return value.name;
|
|
318
|
-
if (value.type === "Literal" && typeof value.value === "string") return value.value;
|
|
319
|
-
return void 0;
|
|
320
|
-
}
|
|
321
|
-
__name(readPropertyName, "readPropertyName");
|
|
322
|
-
function readNode(code, node) {
|
|
323
|
-
return code.slice(node.start, node.end);
|
|
324
|
-
}
|
|
325
|
-
__name(readNode, "readNode");
|
|
326
|
-
function isAstNode(value) {
|
|
327
|
-
return !!value && typeof value === "object" && typeof value.type === "string" && typeof value.start === "number" && typeof value.end === "number";
|
|
328
|
-
}
|
|
329
|
-
__name(isAstNode, "isAstNode");
|
|
330
|
-
function isEnvironmentFunctionKind(value) {
|
|
331
|
-
return typeof value === "string" && ENVIRONMENT_FUNCTIONS.has(value);
|
|
332
|
-
}
|
|
333
|
-
__name(isEnvironmentFunctionKind, "isEnvironmentFunctionKind");
|
|
334
|
-
function containsEnvironmentFunction(code) {
|
|
335
|
-
return Array.from(ENVIRONMENT_FUNCTIONS).some((name) => code.includes(name));
|
|
336
|
-
}
|
|
337
|
-
__name(containsEnvironmentFunction, "containsEnvironmentFunction");
|
|
338
|
-
function isTransformableModule(id) {
|
|
339
|
-
const cleanId = id.split("?", 1)[0];
|
|
340
|
-
return MODULE_EXTENSION_RE.test(cleanId) && !/\.d\.[cm]?ts$/.test(cleanId);
|
|
341
|
-
}
|
|
342
|
-
__name(isTransformableModule, "isTransformableModule");
|
|
343
|
-
function transformError(id, message) {
|
|
344
|
-
return new Error(`[Farm environment functions] ${message} in ${id.split("?", 1)[0]}`);
|
|
345
|
-
}
|
|
346
|
-
__name(transformError, "transformError");
|
|
347
|
-
|
|
348
|
-
export {
|
|
349
|
-
transformEnvironmentFunctions,
|
|
350
|
-
farmEnvironmentFunctionsPlugin
|
|
351
|
-
};
|
|
File without changes
|
|
File without changes
|