@farm.js/plugin 0.1.0-beta.1 → 0.1.0-beta.4
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/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -76
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/rsc/compatibility.d.ts +8 -0
- package/dist/rsc/compatibility.d.ts.map +1 -0
- package/dist/rsc/compatibility.js +46 -0
- package/dist/rsc/index.d.ts +8 -0
- package/dist/rsc/index.d.ts.map +1 -1
- package/dist/rsc/index.js +4 -2
- package/package.json +14 -7
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CA2gBpE;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
import { _withAfterNodeMiddleware } from "@farm.js/core/after";
|
|
25
|
+
import { invokeAPIRouteEndpoint } from "@farm.js/core/api/runtime";
|
|
25
26
|
/**
|
|
26
27
|
* Farm.js API Routes Plugin
|
|
27
28
|
*/
|
|
@@ -98,82 +99,7 @@ export default function farmApi(options = {}) {
|
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
try {
|
|
101
|
-
|
|
102
|
-
const queryObj = {};
|
|
103
|
-
url.searchParams.forEach((value, key) => {
|
|
104
|
-
queryObj[key] = value;
|
|
105
|
-
});
|
|
106
|
-
// Parse body for non-GET requests
|
|
107
|
-
let bodyObj = {};
|
|
108
|
-
if (method !== "GET" && method !== "HEAD") {
|
|
109
|
-
try {
|
|
110
|
-
const bodyText = await request.text();
|
|
111
|
-
if (bodyText) {
|
|
112
|
-
bodyObj = JSON.parse(bodyText);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
// Body parsing failed, use empty object
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// Parse headers
|
|
120
|
-
const headersObj = {};
|
|
121
|
-
request.headers.forEach((value, key) => {
|
|
122
|
-
headersObj[key] = value;
|
|
123
|
-
});
|
|
124
|
-
// Validate with Zod if schemas are defined
|
|
125
|
-
const types = endpoint.__types || {};
|
|
126
|
-
let validatedQuery = queryObj;
|
|
127
|
-
let validatedBody = bodyObj;
|
|
128
|
-
if (types.query && typeof types.query.parse === "function") {
|
|
129
|
-
try {
|
|
130
|
-
validatedQuery = types.query.parse(queryObj);
|
|
131
|
-
}
|
|
132
|
-
catch (e) {
|
|
133
|
-
return new Response(JSON.stringify({
|
|
134
|
-
error: "Invalid query parameters",
|
|
135
|
-
details: e.errors || e.message,
|
|
136
|
-
}), {
|
|
137
|
-
status: 400,
|
|
138
|
-
headers: { "Content-Type": "application/json" },
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (types.body && typeof types.body.parse === "function") {
|
|
143
|
-
try {
|
|
144
|
-
validatedBody = types.body.parse(bodyObj);
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
return new Response(JSON.stringify({
|
|
148
|
-
error: "Invalid request body",
|
|
149
|
-
details: e.errors || e.message,
|
|
150
|
-
}), {
|
|
151
|
-
status: 400,
|
|
152
|
-
headers: { "Content-Type": "application/json" },
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Build context object
|
|
157
|
-
const ctx = {
|
|
158
|
-
query: validatedQuery,
|
|
159
|
-
body: validatedBody,
|
|
160
|
-
headers: headersObj,
|
|
161
|
-
request,
|
|
162
|
-
context: {},
|
|
163
|
-
params: {},
|
|
164
|
-
};
|
|
165
|
-
// Call the handler (use __handler if available, otherwise the endpoint itself)
|
|
166
|
-
const handlerFn = endpoint.__handler || endpoint;
|
|
167
|
-
const result = await handlerFn(ctx);
|
|
168
|
-
// If result is already a Response, return it
|
|
169
|
-
if (result instanceof Response) {
|
|
170
|
-
return result;
|
|
171
|
-
}
|
|
172
|
-
// Otherwise, serialize to JSON
|
|
173
|
-
return new Response(JSON.stringify(result), {
|
|
174
|
-
status: 200,
|
|
175
|
-
headers: { "Content-Type": "application/json" },
|
|
176
|
-
});
|
|
102
|
+
return await invokeAPIRouteEndpoint(endpoint, request);
|
|
177
103
|
}
|
|
178
104
|
catch (error) {
|
|
179
105
|
return new Response(JSON.stringify({ error: error.message || "Internal Server Error" }), {
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React's framework-level RSC APIs do not follow semver. Keep the complete
|
|
3
|
+
* renderer/decoder toolchain on the exact combination exercised by Farm's
|
|
4
|
+
* integration tests instead of accepting a potentially incompatible or
|
|
5
|
+
* vulnerable package resolution.
|
|
6
|
+
*/
|
|
7
|
+
export declare function assertRscPackageCompatibility(root: string): void;
|
|
8
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/rsc/compatibility.ts"],"names":[],"mappings":"AA0BA;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgChE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const RSC_PACKAGE_VERSIONS = {
|
|
5
|
+
react: "19.2.8",
|
|
6
|
+
"react-dom": "19.2.8",
|
|
7
|
+
"react-server-dom-webpack": "19.2.8",
|
|
8
|
+
"@vitejs/plugin-rsc": "0.5.32",
|
|
9
|
+
};
|
|
10
|
+
function readPackageVersion(projectRequire, packageName) {
|
|
11
|
+
const manifestPath = projectRequire.resolve(`${packageName}/package.json`);
|
|
12
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
13
|
+
return typeof manifest.version === "string" ? manifest.version : undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* React's framework-level RSC APIs do not follow semver. Keep the complete
|
|
17
|
+
* renderer/decoder toolchain on the exact combination exercised by Farm's
|
|
18
|
+
* integration tests instead of accepting a potentially incompatible or
|
|
19
|
+
* vulnerable package resolution.
|
|
20
|
+
*/
|
|
21
|
+
export function assertRscPackageCompatibility(root) {
|
|
22
|
+
const projectRequire = createRequire(path.join(path.resolve(root), "__farm_rsc_check__.cjs"));
|
|
23
|
+
const problems = [];
|
|
24
|
+
for (const [packageName, expectedVersion] of Object.entries(RSC_PACKAGE_VERSIONS)) {
|
|
25
|
+
try {
|
|
26
|
+
const actualVersion = readPackageVersion(projectRequire, packageName);
|
|
27
|
+
if (actualVersion !== expectedVersion) {
|
|
28
|
+
problems.push(`${packageName}: expected ${expectedVersion}, found ${actualVersion ?? "unknown"}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
problems.push(`${packageName}: expected ${expectedVersion}, package is not installed`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (problems.length === 0)
|
|
36
|
+
return;
|
|
37
|
+
throw new Error([
|
|
38
|
+
"[Farm.js] Unsupported React Server Components package combination.",
|
|
39
|
+
...problems.map((problem) => `- ${problem}`),
|
|
40
|
+
"",
|
|
41
|
+
"Farm pins the framework-level RSC APIs to one supported, integration-tested combination.",
|
|
42
|
+
"Install the supported versions with:",
|
|
43
|
+
"pnpm add react@19.2.8 react-dom@19.2.8 react-server-dom-webpack@19.2.8",
|
|
44
|
+
"pnpm add -D @vitejs/plugin-rsc@0.5.32",
|
|
45
|
+
].join("\n"));
|
|
46
|
+
}
|
package/dist/rsc/index.d.ts
CHANGED
|
@@ -38,7 +38,15 @@ export interface FarmRscConfig {
|
|
|
38
38
|
basePath?: string;
|
|
39
39
|
port?: number;
|
|
40
40
|
experimental?: {
|
|
41
|
+
/**
|
|
42
|
+
* Enable React Server Components rendering.
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
41
45
|
serverComponents?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Enable React Server Actions and their public POST decoder.
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
42
50
|
serverActions?: boolean;
|
|
43
51
|
/**
|
|
44
52
|
* Enable server-only optimized boundaries through
|
package/dist/rsc/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rsc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAA4B,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rsc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAA4B,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2B9E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExF,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE;QACb;;;WAGG;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B;;;WAGG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB;;;;;;WAMG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,gHAAgH;IAChH,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,aAAkB,GAAG,UAAU,CAiDnE;AA8TD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,EAAE,CAsnC5E"}
|
package/dist/rsc/index.js
CHANGED
|
@@ -29,6 +29,7 @@ import { generateSsrEntry } from "./entries/ssr.js";
|
|
|
29
29
|
import { generateClientEntry } from "./entries/client.js";
|
|
30
30
|
import { transformFarmServerFns } from "./server-fn-transform.js";
|
|
31
31
|
import { resolveRscBuildOutputPath } from "./build-paths.js";
|
|
32
|
+
import { assertRscPackageCompatibility } from "./compatibility.js";
|
|
32
33
|
import fs from "fs/promises";
|
|
33
34
|
import path from "path";
|
|
34
35
|
import { pathToFileURL } from "node:url";
|
|
@@ -53,7 +54,7 @@ export function defineConfig(config = {}) {
|
|
|
53
54
|
// Core Farm RSC settings
|
|
54
55
|
experimental: {
|
|
55
56
|
serverComponents: config.experimental?.serverComponents ?? true,
|
|
56
|
-
serverActions: config.experimental?.serverActions ??
|
|
57
|
+
serverActions: config.experimental?.serverActions ?? false,
|
|
57
58
|
optimizedBoundary: config.experimental?.optimizedBoundary ?? false,
|
|
58
59
|
},
|
|
59
60
|
srcDir: config.srcDir ?? "src",
|
|
@@ -481,6 +482,7 @@ export default function farmRsc(options = {}) {
|
|
|
481
482
|
return;
|
|
482
483
|
}
|
|
483
484
|
const root = c.root ?? process.cwd();
|
|
485
|
+
assertRscPackageCompatibility(root);
|
|
484
486
|
if (optimizedBoundaryEnabled) {
|
|
485
487
|
registerRscNitroRuntimePackage(root, STRATA_PACKAGE, resolveOptimizedBoundaryRuntimeRoot());
|
|
486
488
|
}
|
|
@@ -599,7 +601,7 @@ export default function farmRsc(options = {}) {
|
|
|
599
601
|
}
|
|
600
602
|
: {}),
|
|
601
603
|
resolve: {
|
|
602
|
-
dedupe: ["react", "react-dom"],
|
|
604
|
+
dedupe: ["react", "react-dom", "react-server-dom-webpack"],
|
|
603
605
|
alias: [
|
|
604
606
|
...Object.entries(layerAliases).map(([find, replacement]) => ({
|
|
605
607
|
find,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farm.js/plugin",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.4",
|
|
4
4
|
"description": "Official plugins for Farm.js framework",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Farm.js Team",
|
|
@@ -61,28 +61,35 @@
|
|
|
61
61
|
"nitro": "3.0.1-alpha.0",
|
|
62
62
|
"picocolors": "^1.0.0",
|
|
63
63
|
"rsc-html-stream": "^0.0.4",
|
|
64
|
-
"@farm.js/core": "0.1.0-beta.
|
|
64
|
+
"@farm.js/core": "0.1.0-beta.4"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@types/node": "^20.19.21",
|
|
68
68
|
"@types/react": "^19.0.0",
|
|
69
69
|
"@types/react-dom": "^19.0.0",
|
|
70
|
-
"@vitejs/plugin-rsc": "
|
|
70
|
+
"@vitejs/plugin-rsc": "0.5.32",
|
|
71
|
+
"react": "19.2.8",
|
|
72
|
+
"react-dom": "19.2.8",
|
|
73
|
+
"react-server-dom-webpack": "19.2.8",
|
|
71
74
|
"tsdown": "^0.15.7",
|
|
72
75
|
"typescript": "^5.5.3",
|
|
73
76
|
"vite": "^6.0.0",
|
|
74
77
|
"vitest": "^1.1.0"
|
|
75
78
|
},
|
|
76
79
|
"peerDependencies": {
|
|
77
|
-
"@vitejs/plugin-rsc": "
|
|
78
|
-
"react": "
|
|
79
|
-
"react-dom": "
|
|
80
|
+
"@vitejs/plugin-rsc": "0.5.32",
|
|
81
|
+
"react": "19.2.8",
|
|
82
|
+
"react-dom": "19.2.8",
|
|
83
|
+
"react-server-dom-webpack": "19.2.8",
|
|
80
84
|
"vite": ">=6.0.0",
|
|
81
|
-
"@farm.js/core": "0.1.0-beta.
|
|
85
|
+
"@farm.js/core": "0.1.0-beta.4"
|
|
82
86
|
},
|
|
83
87
|
"peerDependenciesMeta": {
|
|
84
88
|
"@vitejs/plugin-rsc": {
|
|
85
89
|
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"react-server-dom-webpack": {
|
|
92
|
+
"optional": true
|
|
86
93
|
}
|
|
87
94
|
},
|
|
88
95
|
"scripts": {
|