@farm.js/core 0.1.0-beta.75 → 0.1.0-beta.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-runtime.cjs +7 -0
- package/dist/agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime.mjs +7 -0
- package/dist/agent-runtime.mjs.map +1 -1
- package/dist/{app-BkCh7H09.d.mts → app-Bq-Tr90H.d.mts} +2 -0
- package/dist/{app-CZIEOZIa.d.ts → app-CQ6uhLEj.d.ts} +2 -0
- package/dist/{chunk-TWN6IBIL.mjs → chunk-ENS436YL.mjs} +2 -2
- package/dist/{chunk-IIKQBOGZ.mjs → chunk-MV5WATSI.mjs} +2 -2
- package/dist/{chunk-IIKQBOGZ.mjs.map → chunk-MV5WATSI.mjs.map} +1 -1
- package/dist/{chunk-S6FO7OXA.mjs → chunk-NN6KJF7I.mjs} +52 -7
- package/dist/chunk-NN6KJF7I.mjs.map +1 -0
- package/dist/{chunk-DKD7DGTE.mjs → chunk-OL7GH5ZC.mjs} +2 -2
- package/dist/{chunk-UGK7TW2V.mjs → chunk-P57PPOQL.mjs} +18 -6
- package/dist/chunk-P57PPOQL.mjs.map +1 -0
- package/dist/client/lifecycle.mjs +2 -2
- package/dist/client-plugins.cjs +1 -1
- package/dist/client-plugins.cjs.map +1 -1
- package/dist/client-plugins.mjs +2 -2
- package/dist/client.cjs +1 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.cjs +75 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +5 -5
- package/dist/internal/build-runtime.cjs +58 -6
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.mjs +3 -3
- package/dist/internal/client-runtime.cjs +1 -1
- package/dist/internal/client-runtime.cjs.map +1 -1
- package/dist/internal/client-runtime.mjs +2 -2
- package/dist/internal/product-telemetry-runtime.cjs +1 -1
- package/dist/internal/product-telemetry-runtime.cjs.map +1 -1
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/plugin.cjs +51 -6
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.mjs +2 -2
- package/dist/server-plugins.cjs +17 -5
- package/dist/server-plugins.cjs.map +1 -1
- package/dist/server-plugins.mjs +1 -1
- package/dist/server.cjs +68 -11
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.mjs +3 -3
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +51 -6
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-S6FO7OXA.mjs.map +0 -1
- package/dist/chunk-UGK7TW2V.mjs.map +0 -1
- /package/dist/{chunk-TWN6IBIL.mjs.map → chunk-ENS436YL.mjs.map} +0 -0
- /package/dist/{chunk-DKD7DGTE.mjs.map → chunk-OL7GH5ZC.mjs.map} +0 -0
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
mergeFarmViteConfig,
|
|
42
42
|
resolveFarmNotFoundComponentPath,
|
|
43
43
|
resolveRouteRenderingConfigFromFile
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-NN6KJF7I.mjs";
|
|
45
45
|
import {
|
|
46
46
|
farmEnvironmentFunctionsPlugin
|
|
47
47
|
} from "./chunk-V6WE6JSZ.mjs";
|
|
@@ -8027,4 +8027,4 @@ __name(buildNitro, "buildNitro");
|
|
|
8027
8027
|
export {
|
|
8028
8028
|
build
|
|
8029
8029
|
};
|
|
8030
|
-
//# sourceMappingURL=chunk-
|
|
8030
|
+
//# sourceMappingURL=chunk-OL7GH5ZC.mjs.map
|
|
@@ -204,17 +204,18 @@ function selectEncoding(header) {
|
|
|
204
204
|
return brotli >= gzip ? "br" : "gzip";
|
|
205
205
|
}
|
|
206
206
|
__name(selectEncoding, "selectEncoding");
|
|
207
|
-
function
|
|
208
|
-
if (request.method
|
|
207
|
+
function isCompressionEligible(request, response) {
|
|
208
|
+
if (request.method !== "HEAD" && !response.body || response.status === 204 || response.status === 205 || response.status === 304 || response.headers.has("content-encoding") || response.headers.has("content-range") || response.headers.get("cache-control")?.toLowerCase().includes("no-transform")) {
|
|
209
209
|
return false;
|
|
210
210
|
}
|
|
211
211
|
const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
|
|
212
212
|
return contentType !== "text/event-stream";
|
|
213
213
|
}
|
|
214
|
-
__name(
|
|
214
|
+
__name(isCompressionEligible, "isCompressionEligible");
|
|
215
215
|
function appendVary(headers, value) {
|
|
216
216
|
const current = headers.get("vary");
|
|
217
217
|
const values = current ? current.split(",").map((item) => item.trim()).filter(Boolean) : [];
|
|
218
|
+
if (values.includes("*")) return;
|
|
218
219
|
if (!values.some((item) => item.toLowerCase() === value.toLowerCase())) {
|
|
219
220
|
values.push(value);
|
|
220
221
|
}
|
|
@@ -240,6 +241,16 @@ function compressResponse(response, encoding) {
|
|
|
240
241
|
});
|
|
241
242
|
}
|
|
242
243
|
__name(compressResponse, "compressResponse");
|
|
244
|
+
function varyIdentityResponse(response) {
|
|
245
|
+
const headers = new Headers(response.headers);
|
|
246
|
+
appendVary(headers, "Accept-Encoding");
|
|
247
|
+
return new Response(response.body, {
|
|
248
|
+
status: response.status,
|
|
249
|
+
statusText: response.statusText,
|
|
250
|
+
headers
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
__name(varyIdentityResponse, "varyIdentityResponse");
|
|
243
254
|
function createCompressionPlugin({
|
|
244
255
|
beforeRequest: overrideBeforeRequest,
|
|
245
256
|
afterResponse: overrideAfterResponse
|
|
@@ -249,9 +260,10 @@ function createCompressionPlugin({
|
|
|
249
260
|
enforce: "post",
|
|
250
261
|
runtime: {
|
|
251
262
|
after({ request, response, isProd }) {
|
|
252
|
-
if (!isProd || !
|
|
263
|
+
if (!isProd || !isCompressionEligible(request, response)) return;
|
|
264
|
+
if (request.method === "HEAD") return varyIdentityResponse(response);
|
|
253
265
|
const encoding = selectEncoding(request.headers.get("accept-encoding") ?? "");
|
|
254
|
-
if (!encoding) return;
|
|
266
|
+
if (!encoding) return varyIdentityResponse(response);
|
|
255
267
|
return compressResponse(response, encoding);
|
|
256
268
|
}
|
|
257
269
|
},
|
|
@@ -299,4 +311,4 @@ export {
|
|
|
299
311
|
createCompressionPlugin,
|
|
300
312
|
createLoggerPlugin
|
|
301
313
|
};
|
|
302
|
-
//# sourceMappingURL=chunk-
|
|
314
|
+
//# sourceMappingURL=chunk-P57PPOQL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugins/redirects.ts","../src/plugins/headers.ts","../src/plugins/env.ts","../src/plugins/compression.ts","../src/plugins/logger.ts"],"sourcesContent":["import type { FarmPlugin, FarmPluginContext } from \"../plugin\";\nimport type { RedirectConfig } from \"../config\";\nimport type { FarmRequest, FarmResponse } from \"../types\";\nimport type { ResolvedFarmI18nConfig } from \"../i18n/types\";\nimport { isFarmRedirectStatus } from \"../navigation-errors\";\nimport {\n compileConfigRoutePattern,\n interpolateConfigRouteDestination,\n localizeConfigRouteDestination,\n resolveConfigRoutePathname,\n} from \"./route-pattern\";\n\nexport function createRedirectsPlugin(\n redirects: RedirectConfig[],\n {\n beforeRequest: overrideBeforeRequest,\n afterResponse: overrideAfterResponse,\n i18n,\n }: {\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n i18n?: ResolvedFarmI18nConfig;\n } = {},\n): FarmPlugin {\n for (const redirect of redirects) {\n if (redirect.statusCode !== undefined && !isFarmRedirectStatus(redirect.statusCode)) {\n throw new RangeError(\n `Redirect \"${redirect.source}\" statusCode must be one of 301, 302, 303, 307, or 308.`,\n );\n }\n }\n const compiledRedirects = redirects.map((redirect) => ({\n redirect,\n pattern: compileConfigRoutePattern(redirect.source),\n }));\n\n return {\n name: \"farm:redirects\",\n enforce: \"pre\",\n async beforeRequest(req, res, context) {\n if (overrideBeforeRequest) {\n await overrideBeforeRequest(req, res, context);\n }\n const url = new URL(req.url || \"/\", `http://${req.headers.host}`);\n const routePath = resolveConfigRoutePathname(url.pathname, i18n);\n const pathname = routePath.pathname;\n\n for (const { redirect, pattern } of compiledRedirects) {\n const match = pathname.match(pattern.regex);\n if (match) {\n const destination = localizeConfigRouteDestination(\n interpolateConfigRouteDestination(redirect.destination, match, pattern.tokens),\n routePath.locale,\n i18n,\n );\n\n const statusCode = redirect.statusCode ?? (redirect.permanent ? 308 : 307);\n\n res.writeHead(statusCode, {\n Location: destination,\n });\n res.end();\n return;\n }\n }\n },\n\n async afterResponse(req, res, context) {\n if (overrideAfterResponse) {\n await overrideAfterResponse(req, res, context);\n }\n },\n };\n}\n","import type { FarmPlugin, FarmPluginContext } from \"../plugin\";\nimport type { HeaderConfig } from \"../config\";\nimport type { FarmRequest, FarmResponse } from \"../types\";\nimport type { ResolvedFarmI18nConfig } from \"../i18n/types\";\nimport { compileConfigRoutePattern, resolveConfigRoutePathname } from \"./route-pattern\";\n\nconst FARM_CONFIG_HEADERS_FINALIZER = Symbol.for(\"farm.configHeadersFinalizer\");\n\nfunction appendConfiguredLinkHeader(res: FarmResponse, value: string): void {\n const current = res.getHeader(\"Link\");\n if (current === undefined) {\n res.setHeader(\"Link\", value);\n return;\n }\n\n const currentValue = Array.isArray(current) ? current.join(\", \") : String(current);\n if (currentValue !== value && !currentValue.endsWith(`, ${value}`)) {\n res.setHeader(\"Link\", `${currentValue}, ${value}`);\n }\n}\n\nfunction applyResponseHeaders(\n res: FarmResponse,\n matchedHeaders: readonly HeaderConfig[\"headers\"][],\n): void {\n for (const headers of matchedHeaders) {\n for (const header of headers) {\n if (header.key.toLowerCase() === \"link\") {\n appendConfiguredLinkHeader(res, header.value);\n } else {\n res.setHeader(header.key, header.value);\n }\n }\n }\n}\n\nfunction applyWriteHeadHeaders(res: FarmResponse, headers: unknown): void {\n if (Array.isArray(headers)) {\n for (let index = 0; index + 1 < headers.length; index += 2) {\n res.setHeader(String(headers[index]), headers[index + 1]);\n }\n return;\n }\n\n if (!headers || typeof headers !== \"object\") return;\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined) res.setHeader(key, value);\n }\n}\n\nexport function createHeadersPlugin(\n headers: HeaderConfig[],\n {\n beforeRequest: overrideBeforeRequest,\n afterResponse: overrideAfterResponse,\n i18n,\n }: {\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n i18n?: ResolvedFarmI18nConfig;\n } = {},\n): FarmPlugin {\n const compiledHeaders = headers.map((config) => ({\n config,\n pattern: compileConfigRoutePattern(config.source),\n }));\n\n return {\n name: \"farm:headers\",\n enforce: \"pre\",\n\n async beforeRequest(req, res, context) {\n if (overrideBeforeRequest) {\n await overrideBeforeRequest(req, res, context);\n }\n const url = new URL(req.url || \"/\", `http://${req.headers.host}`);\n const pathname = resolveConfigRoutePathname(url.pathname, i18n).pathname;\n const matchedHeaders = compiledHeaders\n .filter(({ pattern }) => pattern.regex.test(pathname))\n .map(({ config }) => config.headers);\n\n applyResponseHeaders(res, matchedHeaders);\n\n const responseWithFinalizer = res as FarmResponse & {\n [FARM_CONFIG_HEADERS_FINALIZER]?: boolean;\n };\n if (matchedHeaders.length === 0 || responseWithFinalizer[FARM_CONFIG_HEADERS_FINALIZER]) {\n return;\n }\n\n responseWithFinalizer[FARM_CONFIG_HEADERS_FINALIZER] = true;\n const writeHead = res.writeHead;\n res.writeHead = ((statusCode: number, ...args: unknown[]) => {\n const statusMessage = typeof args[0] === \"string\" ? (args.shift() as string) : undefined;\n applyWriteHeadHeaders(res, args[0]);\n applyResponseHeaders(res, matchedHeaders);\n return statusMessage === undefined\n ? (writeHead as any).call(res, statusCode)\n : (writeHead as any).call(res, statusCode, statusMessage);\n }) as FarmResponse[\"writeHead\"];\n },\n\n async afterResponse(req, res, context) {\n if (overrideAfterResponse) {\n await overrideAfterResponse(req, res, context);\n }\n },\n };\n}\n","import type { FarmPlugin, FarmPluginContext } from \"../plugin\";\nimport type { FarmRequest, FarmResponse } from \"../types\";\n\nexport function createEnvPlugin(\n env: Record<string, string>,\n {\n beforeRequest: overrideBeforeRequest,\n afterResponse: overrideAfterResponse,\n }: {\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n } = {},\n): FarmPlugin {\n return {\n name: \"farm:env\",\n\n configResolved(config, context) {\n for (const [key, value] of Object.entries(env)) {\n process.env[key] = value;\n }\n },\n\n async beforeRequest(req, res, context) {\n if (overrideBeforeRequest) {\n await overrideBeforeRequest(req, res, context);\n }\n },\n\n async afterResponse(req, res, context) {\n if (overrideAfterResponse) {\n await overrideAfterResponse(req, res, context);\n }\n },\n };\n}\n","import type { FarmPlugin, FarmPluginContext } from \"../plugin\";\nimport type { FarmRequest, FarmResponse } from \"../types\";\nimport { Readable } from \"node:stream\";\nimport { constants, createBrotliCompress, createGzip } from \"node:zlib\";\n\ntype SupportedEncoding = \"br\" | \"gzip\";\n\nconst Q_VALUE = /^(?:0(?:\\.\\d{0,3})?|1(?:\\.0{0,3})?)$/;\n\nfunction parseEncodingQuality(header: string): Map<string, number> {\n const qualities = new Map<string, number>();\n\n for (const item of header.split(\",\")) {\n const [rawEncoding, ...parameters] = item.trim().split(\";\");\n const encoding = rawEncoding?.trim().toLowerCase();\n if (!encoding) continue;\n\n let quality = 1;\n for (const parameter of parameters) {\n const [rawName, rawValue] = parameter.split(\"=\", 2);\n if (rawName?.trim().toLowerCase() !== \"q\") continue;\n const value = rawValue?.trim() ?? \"\";\n quality = Q_VALUE.test(value) ? Number(value) : 0;\n }\n\n qualities.set(encoding, Math.max(qualities.get(encoding) ?? 0, quality));\n }\n\n return qualities;\n}\n\nfunction selectEncoding(header: string): SupportedEncoding | undefined {\n if (!header.trim()) return undefined;\n\n const qualities = parseEncodingQuality(header);\n const wildcard = qualities.get(\"*\") ?? 0;\n const quality = (encoding: SupportedEncoding) => qualities.get(encoding) ?? wildcard;\n const brotli = quality(\"br\");\n const gzip = quality(\"gzip\");\n\n if (brotli <= 0 && gzip <= 0) return undefined;\n return brotli >= gzip ? \"br\" : \"gzip\";\n}\n\nfunction isCompressionEligible(request: Request, response: Response): boolean {\n if (\n (request.method !== \"HEAD\" && !response.body) ||\n response.status === 204 ||\n response.status === 205 ||\n response.status === 304 ||\n response.headers.has(\"content-encoding\") ||\n response.headers.has(\"content-range\") ||\n response.headers.get(\"cache-control\")?.toLowerCase().includes(\"no-transform\")\n ) {\n return false;\n }\n\n const contentType = response.headers.get(\"content-type\")?.toLowerCase() ?? \"\";\n return contentType !== \"text/event-stream\";\n}\n\nfunction appendVary(headers: Headers, value: string): void {\n const current = headers.get(\"vary\");\n const values = current\n ? current\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean)\n : [];\n if (values.includes(\"*\")) return;\n if (!values.some((item) => item.toLowerCase() === value.toLowerCase())) {\n values.push(value);\n }\n headers.set(\"vary\", values.join(\", \"));\n}\n\nfunction compressResponse(response: Response, encoding: SupportedEncoding): Response {\n const compressor =\n encoding === \"br\" ? createBrotliCompress() : createGzip({ flush: constants.Z_SYNC_FLUSH });\n const input = Readable.fromWeb(response.body as any);\n const output = input.pipe(compressor);\n const headers = new Headers(response.headers);\n\n headers.set(\"content-encoding\", encoding);\n headers.delete(\"content-length\");\n appendVary(headers, \"Accept-Encoding\");\n\n const etag = headers.get(\"etag\");\n if (etag && !etag.startsWith(\"W/\")) {\n headers.set(\"etag\", `W/${etag}`);\n }\n\n return new Response(Readable.toWeb(output) as ReadableStream<Uint8Array>, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\nfunction varyIdentityResponse(response: Response): Response {\n const headers = new Headers(response.headers);\n appendVary(headers, \"Accept-Encoding\");\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers,\n });\n}\n\nexport function createCompressionPlugin({\n beforeRequest: overrideBeforeRequest,\n afterResponse: overrideAfterResponse,\n}: {\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n} = {}): FarmPlugin {\n return {\n name: \"farm:compression\",\n enforce: \"post\",\n\n runtime: {\n after({ request, response, isProd }) {\n if (!isProd || !isCompressionEligible(request, response)) return;\n\n if (request.method === \"HEAD\") return varyIdentityResponse(response);\n\n const encoding = selectEncoding(request.headers.get(\"accept-encoding\") ?? \"\");\n if (!encoding) return varyIdentityResponse(response);\n return compressResponse(response, encoding);\n },\n },\n\n async beforeRequest(req, res, context) {\n if (overrideBeforeRequest) {\n await overrideBeforeRequest(req, res, context);\n }\n },\n\n async afterResponse(req, res, context) {\n if (overrideAfterResponse) {\n await overrideAfterResponse(req, res, context);\n }\n },\n };\n}\n","import type { FarmPlugin, FarmPluginContext } from \"../plugin\";\nimport type { FarmResponse } from \"../types\";\nimport type { FarmRequest } from \"../types\";\n\nexport function createLoggerPlugin({\n beforeRequest,\n afterResponse,\n}: {\n beforeRequest?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n afterResponse?: (\n req: FarmRequest,\n res: FarmResponse,\n context: FarmPluginContext,\n ) => void | Promise<void>;\n} = {}): FarmPlugin {\n const plugin: FarmPlugin = {\n name: \"farm:logger\",\n enforce: \"post\",\n };\n\n if (beforeRequest) {\n plugin.beforeRequest = async (req, res, context) => {\n await beforeRequest(req, res, context);\n };\n }\n if (afterResponse) {\n plugin.afterResponse = async (req, res, context) => {\n await afterResponse(req, res, context);\n };\n }\n\n return plugin;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
defineClient
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-ENS436YL.mjs";
|
|
5
5
|
import "../chunk-FXG2PS27.mjs";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-MV5WATSI.mjs";
|
|
7
7
|
import "../chunk-CGILA3WO.mjs";
|
|
8
8
|
export {
|
|
9
9
|
defineClient
|