@farm.js/core 0.1.0-beta.1 → 0.1.0-beta.3
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.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/api/route-manager.cjs +97 -5
- package/dist/api/route-manager.cjs.map +1 -1
- package/dist/api/route-manager.d.mts +3 -2
- package/dist/api/route-manager.d.ts +3 -2
- package/dist/api/route-manager.mjs +8 -8
- package/dist/api/runtime.cjs +441 -5
- package/dist/api/runtime.cjs.map +1 -1
- package/dist/api/runtime.d.mts +2 -16
- package/dist/api/runtime.d.ts +2 -16
- package/dist/api/runtime.mjs +7 -1
- package/dist/api.cjs +579 -263
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.mts +4 -147
- package/dist/api.d.ts +4 -147
- package/dist/api.mjs +30 -20
- package/dist/{app-BiX4qb-d.d.mts → app-BB3Iu3xh.d.mts} +2 -2
- package/dist/{app-CFRNJXP1.d.ts → app-DOKxo-LH.d.ts} +2 -2
- package/dist/app-markdown.cjs +1 -1
- package/dist/app-markdown.cjs.map +1 -1
- package/dist/app-markdown.d.mts +1 -1
- package/dist/app-markdown.d.ts +1 -1
- package/dist/app-markdown.mjs +1 -1
- package/dist/cache.cjs +19 -0
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.d.mts +21 -1
- package/dist/cache.d.ts +21 -1
- package/dist/cache.mjs +5 -3
- package/dist/{chunk-QF4PHCMA.mjs → chunk-2ED5Q2GH.mjs} +3 -3
- package/dist/chunk-2ED5Q2GH.mjs.map +1 -0
- package/dist/{chunk-GZP5W4K3.mjs → chunk-32W4QEJP.mjs} +1 -1
- package/dist/chunk-32W4QEJP.mjs.map +1 -0
- package/dist/{chunk-AGS7UJ52.mjs → chunk-45LKHSHJ.mjs} +2 -2
- package/dist/{chunk-TU4YJICB.mjs → chunk-5FW6PQ3J.mjs} +1 -1
- package/dist/{chunk-TU4YJICB.mjs.map → chunk-5FW6PQ3J.mjs.map} +1 -1
- package/dist/{chunk-TRORP7E4.mjs → chunk-5QH4IKY3.mjs} +2 -2
- package/dist/{chunk-RKI6TN3A.mjs → chunk-6VS6CKAV.mjs} +2 -2
- package/dist/chunk-6VS6CKAV.mjs.map +1 -0
- package/dist/{chunk-25D7G34K.mjs → chunk-6WXJ54TC.mjs} +4 -4
- package/dist/{chunk-3QJO55ZF.mjs → chunk-BIOIOWXZ.mjs} +5 -3
- package/dist/{chunk-3QJO55ZF.mjs.map → chunk-BIOIOWXZ.mjs.map} +1 -1
- package/dist/{chunk-QFQRHRZS.mjs → chunk-C33RALN7.mjs} +75 -11
- package/dist/chunk-C33RALN7.mjs.map +1 -0
- package/dist/{chunk-B6N4ZB2H.mjs → chunk-CSU4KJJF.mjs} +3 -3
- package/dist/{chunk-JN3UU635.mjs → chunk-EJ7T4TPB.mjs} +2 -2
- package/dist/chunk-EJ7T4TPB.mjs.map +1 -0
- package/dist/{chunk-ZJQNATYV.mjs → chunk-FRPWCMMG.mjs} +3 -3
- package/dist/chunk-FRPWCMMG.mjs.map +1 -0
- package/dist/{chunk-PRNYWD7K.mjs → chunk-G5I34UA6.mjs} +67 -239
- package/dist/chunk-G5I34UA6.mjs.map +1 -0
- package/dist/{chunk-QM6VV26B.mjs → chunk-GQVGIUSN.mjs} +3 -3
- package/dist/{chunk-QM6VV26B.mjs.map → chunk-GQVGIUSN.mjs.map} +1 -1
- package/dist/{chunk-UREJA4GZ.mjs → chunk-GXASWWJU.mjs} +1 -1
- package/dist/{chunk-UREJA4GZ.mjs.map → chunk-GXASWWJU.mjs.map} +1 -1
- package/dist/{chunk-4PTK6KT4.mjs → chunk-GZWT6VI5.mjs} +22 -4
- package/dist/chunk-GZWT6VI5.mjs.map +1 -0
- package/dist/{chunk-JLWMCADZ.mjs → chunk-HZYXGV4K.mjs} +2 -2
- package/dist/chunk-JNYVN7YP.mjs +10 -0
- package/dist/chunk-JNYVN7YP.mjs.map +1 -0
- package/dist/{chunk-YHU7SS6L.mjs → chunk-LG3YINQN.mjs} +11 -11
- package/dist/chunk-LWMGIEJA.mjs +593 -0
- package/dist/chunk-LWMGIEJA.mjs.map +1 -0
- package/dist/{chunk-HXP3ZSPC.mjs → chunk-MH6FKW2I.mjs} +3 -3
- package/dist/{chunk-O3HADRW6.mjs → chunk-MIUW47JX.mjs} +2 -2
- package/dist/{chunk-O3HADRW6.mjs.map → chunk-MIUW47JX.mjs.map} +1 -1
- package/dist/{chunk-6XDUHOEM.mjs → chunk-NRRFGX45.mjs} +3 -3
- package/dist/{chunk-G3B5BRDY.mjs → chunk-OHC6VCDI.mjs} +24 -25
- package/dist/{chunk-G3B5BRDY.mjs.map → chunk-OHC6VCDI.mjs.map} +1 -1
- package/dist/{chunk-S2XHZS7W.mjs → chunk-QGQX7SFC.mjs} +2 -2
- package/dist/chunk-QGQX7SFC.mjs.map +1 -0
- package/dist/{chunk-TXCFGOHW.mjs → chunk-SHRJG6OG.mjs} +25 -1
- package/dist/chunk-SHRJG6OG.mjs.map +1 -0
- package/dist/{chunk-UHE2TTLK.mjs → chunk-T543TMFY.mjs} +8 -8
- package/dist/chunk-T543TMFY.mjs.map +1 -0
- package/dist/{chunk-SXZTEK3V.mjs → chunk-UXUAWNO5.mjs} +2 -2
- package/dist/{chunk-Y2OJJD7R.mjs → chunk-XIVV5IWN.mjs} +7 -9
- package/dist/chunk-XIVV5IWN.mjs.map +1 -0
- package/dist/{chunk-CHFHNEMO.mjs → chunk-XJSHJN4M.mjs} +41 -42
- package/dist/chunk-XJSHJN4M.mjs.map +1 -0
- package/dist/{chunk-Y7A27276.mjs → chunk-XUBZ7JI4.mjs} +178 -15
- package/dist/chunk-XUBZ7JI4.mjs.map +1 -0
- package/dist/{chunk-OYXO65LI.mjs → chunk-YW7OBE6Q.mjs} +4 -4
- package/dist/chunk-YW7OBE6Q.mjs.map +1 -0
- package/dist/{chunk-SOU3Q3ZA.mjs → chunk-ZZ57EH5Z.mjs} +1 -1
- package/dist/chunk-ZZ57EH5Z.mjs.map +1 -0
- package/dist/{client-D_yUjVhe.d.mts → client-DiViK9yK.d.mts} +33 -7
- package/dist/{client-Dkc03WP8.d.ts → client-DpEBJbts.d.ts} +33 -7
- package/dist/{client-plugins-BZnpeTGA.d.ts → client-plugins-CTnsZz_A.d.ts} +1 -0
- package/dist/{client-plugins-g4bzuCmo.d.mts → client-plugins-Cnr0D3kk.d.mts} +1 -0
- package/dist/client-plugins.d.mts +1 -1
- package/dist/client-plugins.d.ts +1 -1
- package/dist/client.cjs +302 -54
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.mts +54 -2
- package/dist/client.d.ts +54 -2
- package/dist/client.mjs +20 -16
- package/dist/config.d.mts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/cron.cjs.map +1 -1
- package/dist/cron.mjs +1 -1
- package/dist/{devtools-AE4RVXCM.mjs → devtools-HE4FTUDN.mjs} +10 -10
- package/dist/{devtools-client-6WPY2AQU.mjs → devtools-client-3XRTBND5.mjs} +2 -11
- package/dist/devtools-client-3XRTBND5.mjs.map +1 -0
- package/dist/docs.cjs +3 -1
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.mjs +10 -10
- package/dist/i18n/server.cjs +2 -2
- package/dist/i18n/server.cjs.map +1 -1
- package/dist/i18n/server.mjs +1 -1
- package/dist/index.cjs +791 -317
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.mjs +125 -110
- package/dist/index.mjs.map +1 -1
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/internal/build-runtime.cjs +162 -60
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +3 -3
- package/dist/internal/build-runtime.d.ts +3 -3
- package/dist/internal/build-runtime.mjs +26 -25
- package/dist/internal/client-runtime.cjs.map +1 -1
- package/dist/internal/client-runtime.mjs +1 -1
- package/dist/internal/config-runtime.cjs +1 -1
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +9 -9
- package/dist/internal/production-runtime.cjs +3 -3
- package/dist/internal/production-runtime.cjs.map +1 -1
- package/dist/internal/production-runtime.d.mts +3 -3
- package/dist/internal/production-runtime.d.ts +3 -3
- package/dist/internal/production-runtime.mjs +8 -8
- package/dist/{metadata-C9NZxMDW.d.mts → metadata-Dp8AdvsB.d.mts} +1 -1
- package/dist/{metadata-DAXRaOHx.d.ts → metadata-eoVmHoyv.d.ts} +1 -1
- package/dist/middleware.cjs +2 -2
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.mts +3 -3
- package/dist/middleware.d.ts +3 -3
- package/dist/middleware.mjs +3 -3
- package/dist/navigation.cjs.map +1 -1
- package/dist/navigation.mjs +3 -3
- package/dist/{nitro-KME62MWG.mjs → nitro-QO5LV6QK.mjs} +11 -13
- package/dist/{nitro-KME62MWG.mjs.map → nitro-QO5LV6QK.mjs.map} +1 -1
- package/dist/plugin.cjs +119 -39
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +1 -1
- package/dist/plugin.d.ts +1 -1
- package/dist/plugin.mjs +22 -21
- package/dist/{production-runtime-DRkCHUvJ.d.ts → production-runtime-BqTnUTai.d.ts} +1 -1
- package/dist/{production-runtime-flrjp_nC.d.mts → production-runtime-DtDdG9fc.d.mts} +1 -1
- package/dist/routes.cjs.map +1 -1
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/routes.mjs +4 -4
- package/dist/runtime-C1B7pSGT.d.mts +207 -0
- package/dist/runtime-CdPHt0bv.d.ts +207 -0
- package/dist/server-action-security.cjs.map +1 -1
- package/dist/server-action-security.mjs +2 -2
- package/dist/server-fn-client.cjs.map +1 -1
- package/dist/server-fn-client.mjs +1 -1
- package/dist/server-fn.cjs.map +1 -1
- package/dist/server-fn.mjs +3 -3
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server-query-client.cjs.map +1 -1
- package/dist/server-query-client.mjs +4 -4
- package/dist/server-query.cjs.map +1 -1
- package/dist/server-query.mjs +5 -5
- package/dist/server.cjs +148 -43
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/server.mjs +36 -31
- package/dist/server.mjs.map +1 -1
- package/dist/testing.cjs +95 -5
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.mts +3 -3
- package/dist/testing.d.ts +3 -3
- package/dist/testing.mjs +18 -18
- package/dist/{utils-DOXXivjL.d.mts → utils-8USa5BiY.d.mts} +1 -1
- package/dist/{utils-DA1yo54_.d.ts → utils-DKJb6K6G.d.ts} +1 -1
- package/dist/version.cjs +36 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +8 -0
- package/dist/version.mjs.map +1 -0
- package/dist/vite.cjs +126 -40
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.mjs +22 -21
- package/dist/workflows.cjs +6 -8
- package/dist/workflows.cjs.map +1 -1
- package/dist/workflows.mjs +1 -1
- package/package.json +12 -5
- package/types/client.d.ts +136 -13
- package/dist/chunk-4PTK6KT4.mjs.map +0 -1
- package/dist/chunk-CHFHNEMO.mjs.map +0 -1
- package/dist/chunk-EVGBEZDF.mjs +0 -215
- package/dist/chunk-EVGBEZDF.mjs.map +0 -1
- package/dist/chunk-GZP5W4K3.mjs.map +0 -1
- package/dist/chunk-JN3UU635.mjs.map +0 -1
- package/dist/chunk-OYXO65LI.mjs.map +0 -1
- package/dist/chunk-PRNYWD7K.mjs.map +0 -1
- package/dist/chunk-QF4PHCMA.mjs.map +0 -1
- package/dist/chunk-QFQRHRZS.mjs.map +0 -1
- package/dist/chunk-RKI6TN3A.mjs.map +0 -1
- package/dist/chunk-S2XHZS7W.mjs.map +0 -1
- package/dist/chunk-SOU3Q3ZA.mjs.map +0 -1
- package/dist/chunk-TXCFGOHW.mjs.map +0 -1
- package/dist/chunk-UHE2TTLK.mjs.map +0 -1
- package/dist/chunk-Y2OJJD7R.mjs.map +0 -1
- package/dist/chunk-Y7A27276.mjs.map +0 -1
- package/dist/chunk-ZJQNATYV.mjs.map +0 -1
- package/dist/devtools-client-6WPY2AQU.mjs.map +0 -1
- /package/dist/{chunk-AGS7UJ52.mjs.map → chunk-45LKHSHJ.mjs.map} +0 -0
- /package/dist/{chunk-TRORP7E4.mjs.map → chunk-5QH4IKY3.mjs.map} +0 -0
- /package/dist/{chunk-25D7G34K.mjs.map → chunk-6WXJ54TC.mjs.map} +0 -0
- /package/dist/{chunk-B6N4ZB2H.mjs.map → chunk-CSU4KJJF.mjs.map} +0 -0
- /package/dist/{chunk-JLWMCADZ.mjs.map → chunk-HZYXGV4K.mjs.map} +0 -0
- /package/dist/{chunk-YHU7SS6L.mjs.map → chunk-LG3YINQN.mjs.map} +0 -0
- /package/dist/{chunk-HXP3ZSPC.mjs.map → chunk-MH6FKW2I.mjs.map} +0 -0
- /package/dist/{chunk-6XDUHOEM.mjs.map → chunk-NRRFGX45.mjs.map} +0 -0
- /package/dist/{chunk-SXZTEK3V.mjs.map → chunk-UXUAWNO5.mjs.map} +0 -0
- /package/dist/{devtools-AE4RVXCM.mjs.map → devtools-HE4FTUDN.mjs.map} +0 -0
package/dist/api.d.mts
CHANGED
|
@@ -1,157 +1,14 @@
|
|
|
1
|
+
export { A as APIRouteMatch, c as APIRouteParamValue, b as APIRouteParams, q as AnyEndpointMiddleware, D as DELETE, e as EndpointErrorContracts, E as EndpointErrorDefinition, d as EndpointErrorDefinitions, f as EndpointFail, g as EndpointFailure, v as EndpointHandler, s as EndpointInvalidationContext, r as EndpointInvalidationTarget, t as EndpointInvalidations, p as EndpointMiddleware, l as EndpointMiddlewareContext, o as EndpointMiddlewareResult, u as EndpointOptions, j as EndpointParamValue, k as EndpointParams, G as GET, H as HEAD, I as InferEndpointMiddlewareContext, O as OPTIONS, y as PATCH, P as POST, x as PUT, T as TypedEndpoint, w as createEndpoint, i as invokeAPIRouteEndpoint, h as isEndpointFailure, a as isWebResponse, m as matchAPIRoute, n as normalizeRouteResponse } from './runtime-C1B7pSGT.mjs';
|
|
1
2
|
export { APIRoute, APIRouteManager, APIRouteManagerOptions, API_ROUTE_METHODS } from './api/route-manager.mjs';
|
|
2
|
-
export {
|
|
3
|
+
export { p as APIClient, f as APIClientError, A as APIClientOptions, g as APIClientSystemError, a as APIClientWithoutIntegrationsOptions, e as APIResult, C as CacheKey, j as CacheOptions, i as CachePolicy, n as ClientOptions, F as FARM_API_ROUTE_REF_SYMBOL, l as InvalidateOptions, I as InvalidateTarget, m as OptimisticOptions, O as OptimisticUpdate, R as RequestEvent, h as ResponseEvent, k as RetryOptions, o as RouteAPIClient, q as ServerAPIClient, S as ServerAPIClientOptions, b as ServerAPIClientWithoutIntegrationsOptions, d as StatusEvent, c as StatusPhase, r as createAPIClient, t as createServerAPIClient, s as isAPIRouteRef } from './client-DiViK9yK.mjs';
|
|
3
4
|
import { Plugin } from 'vite';
|
|
4
|
-
|
|
5
|
+
import './cache.mjs';
|
|
5
6
|
import './route-runtime-DoOHzCAD.mjs';
|
|
6
7
|
import './types-BH1lhg5G.mjs';
|
|
7
8
|
import './runtime-DeAAZ6gO.mjs';
|
|
8
9
|
import './resolver-DlOPpjkB.mjs';
|
|
9
10
|
import './integration-api-CHT2OKAf.mjs';
|
|
10
11
|
import './client-cache-D-EZ7XVW.mjs';
|
|
11
|
-
import './cache.mjs';
|
|
12
|
-
|
|
13
|
-
type AnySchema = {
|
|
14
|
-
_output?: any;
|
|
15
|
-
_input?: any;
|
|
16
|
-
parse?: (data: unknown) => any;
|
|
17
|
-
};
|
|
18
|
-
type MaybePromise<T> = T | Promise<T>;
|
|
19
|
-
type Simplify<T> = {
|
|
20
|
-
[TKey in keyof T]: T[TKey];
|
|
21
|
-
} & {};
|
|
22
|
-
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer TIntersection) => void ? TIntersection : never;
|
|
23
|
-
type InferOutput<T> = T extends {
|
|
24
|
-
_output: infer O;
|
|
25
|
-
} ? O : T extends {
|
|
26
|
-
parse: (data: unknown) => infer R;
|
|
27
|
-
} ? R : unknown;
|
|
28
|
-
type InferHeadersOutput<T> = [T] extends [never] ? Record<string, string> : T extends AnySchema ? InferOutput<T> : Record<string, string>;
|
|
29
|
-
type EndpointParamValue = string | string[];
|
|
30
|
-
type EndpointParams = Record<string, EndpointParamValue>;
|
|
31
|
-
type EndpointMiddlewareContext<TContext extends object = {}, TBody = unknown, TQuery = unknown, THeaders = Record<string, string>> = {
|
|
32
|
-
body: TBody;
|
|
33
|
-
query: TQuery;
|
|
34
|
-
headers: THeaders;
|
|
35
|
-
request: Request;
|
|
36
|
-
/** Context accumulated from middleware that ran earlier in the chain. */
|
|
37
|
-
context: Readonly<TContext>;
|
|
38
|
-
params: EndpointParams;
|
|
39
|
-
};
|
|
40
|
-
type EndpointMiddlewareResult<TProvidedContext extends object = object> = TProvidedContext | true | false | Response;
|
|
41
|
-
/** A plain async function. No wrapper or `next()` callback is required. */
|
|
42
|
-
type EndpointMiddleware<TProvidedContext extends object = object, TContext extends object = {}, TBody = unknown, TQuery = unknown, THeaders = Record<string, string>> = (ctx: EndpointMiddlewareContext<TContext, TBody, TQuery, THeaders>) => MaybePromise<EndpointMiddlewareResult<TProvidedContext>>;
|
|
43
|
-
type AnyEndpointMiddleware = (ctx: EndpointMiddlewareContext<any, any, any, any>) => unknown;
|
|
44
|
-
type ValidateEndpointMiddlewares<TMiddlewares extends readonly AnyEndpointMiddleware[]> = {
|
|
45
|
-
readonly [TIndex in keyof TMiddlewares]: TMiddlewares[TIndex] extends AnyEndpointMiddleware ? [Awaited<ReturnType<TMiddlewares[TIndex]>>] extends [EndpointMiddlewareResult<object>] ? TMiddlewares[TIndex] : never : never;
|
|
46
|
-
};
|
|
47
|
-
type ContextFromMiddlewareResult<TResult> = Exclude<TResult, Response | boolean> extends infer TContext ? [TContext] extends [never] ? {} : TContext extends object ? TContext : {} : {};
|
|
48
|
-
type ContextFromMiddleware<TMiddleware> = TMiddleware extends (...args: any[]) => infer TResult ? ContextFromMiddlewareResult<Awaited<TResult>> : {};
|
|
49
|
-
type InferEndpointMiddlewareContext<TMiddlewares extends readonly ((...args: any[]) => any)[], TContext extends object = {}> = TMiddlewares extends readonly [infer TMiddleware, ...infer TRest] ? TMiddleware extends (...args: any[]) => any ? TRest extends readonly ((...args: any[]) => any)[] ? InferEndpointMiddlewareContext<TRest, Simplify<TContext & ContextFromMiddleware<TMiddleware>>> : Simplify<TContext> : Simplify<TContext> : number extends TMiddlewares["length"] ? Simplify<TContext & UnionToIntersection<ContextFromMiddleware<TMiddlewares[number]>>> : Simplify<TContext>;
|
|
50
|
-
type EndpointOptions<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TMiddlewares extends readonly AnyEndpointMiddleware[] = readonly []> = {
|
|
51
|
-
method?: "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
|
|
52
|
-
body?: TBody;
|
|
53
|
-
query?: TQuery;
|
|
54
|
-
headers?: THeaders;
|
|
55
|
-
middleware?: TMiddlewares;
|
|
56
|
-
/** @deprecated Use plain functions in `middleware` for Farm endpoint middleware. */
|
|
57
|
-
use?: any[];
|
|
58
|
-
};
|
|
59
|
-
type EndpointHandler<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any, TContext extends object = {}> = (ctx: {
|
|
60
|
-
body: InferOutput<TBody>;
|
|
61
|
-
query: InferOutput<TQuery>;
|
|
62
|
-
headers: InferHeadersOutput<THeaders>;
|
|
63
|
-
request: Request;
|
|
64
|
-
context: Readonly<TContext>;
|
|
65
|
-
params: EndpointParams;
|
|
66
|
-
}) => Promise<TResponse> | TResponse;
|
|
67
|
-
type TypedEndpoint<TBody = never, TQuery = never, TResponse = any, THeaders = Record<string, string>> = {
|
|
68
|
-
__types: {
|
|
69
|
-
body: TBody;
|
|
70
|
-
query: TQuery;
|
|
71
|
-
headers: THeaders;
|
|
72
|
-
response: TResponse;
|
|
73
|
-
};
|
|
74
|
-
__path?: string;
|
|
75
|
-
__method?: string;
|
|
76
|
-
} & ((options?: {
|
|
77
|
-
body?: TBody;
|
|
78
|
-
query?: TQuery;
|
|
79
|
-
}) => Promise<TResponse>);
|
|
80
|
-
type CreatedEndpoint<TBody extends AnySchema, TQuery extends AnySchema, THeaders extends AnySchema, TResponse> = TypedEndpoint<InferOutput<TBody>, InferOutput<TQuery>, Awaited<TResponse>, InferHeadersOutput<THeaders>>;
|
|
81
|
-
type AnyEndpointOptions = EndpointOptions<AnySchema, AnySchema, AnySchema, readonly AnyEndpointMiddleware[]>;
|
|
82
|
-
type EndpointBodyFromOptions<TOptions> = TOptions extends {
|
|
83
|
-
body: infer TBody extends AnySchema;
|
|
84
|
-
} ? TBody : never;
|
|
85
|
-
type EndpointQueryFromOptions<TOptions> = TOptions extends {
|
|
86
|
-
query: infer TQuery extends AnySchema;
|
|
87
|
-
} ? TQuery : never;
|
|
88
|
-
type EndpointHeadersFromOptions<TOptions> = TOptions extends {
|
|
89
|
-
headers: infer THeaders extends AnySchema;
|
|
90
|
-
} ? THeaders : never;
|
|
91
|
-
type EndpointMiddlewaresFromOptions<TOptions> = TOptions extends {
|
|
92
|
-
middleware: infer TMiddlewares extends readonly AnyEndpointMiddleware[];
|
|
93
|
-
} ? TMiddlewares : readonly [];
|
|
94
|
-
type MethodlessEndpointOptions = Omit<AnyEndpointOptions, "method">;
|
|
95
|
-
type EndpointHandlerFromOptions<TOptions, TResponse> = EndpointHandler<EndpointBodyFromOptions<TOptions>, EndpointQueryFromOptions<TOptions>, EndpointHeadersFromOptions<TOptions>, TResponse, InferEndpointMiddlewareContext<EndpointMiddlewaresFromOptions<TOptions>>>;
|
|
96
|
-
type ValidatedEndpointHandlerFromOptions<TOptions, TResponse> = EndpointHandlerFromOptions<TOptions, TResponse> & (EndpointMiddlewaresFromOptions<TOptions> extends ValidateEndpointMiddlewares<EndpointMiddlewaresFromOptions<TOptions>> ? unknown : never);
|
|
97
|
-
type CreatedEndpointFromOptions<TOptions, TResponse> = CreatedEndpoint<EndpointBodyFromOptions<TOptions>, EndpointQueryFromOptions<TOptions>, EndpointHeadersFromOptions<TOptions>, TResponse>;
|
|
98
|
-
/**
|
|
99
|
-
* Create a Farm.js API endpoint
|
|
100
|
-
*
|
|
101
|
-
* Supports two patterns:
|
|
102
|
-
* 1. File-based routing (path auto-inferred from file location):
|
|
103
|
-
* `export const POST = createEndpoint({ method: 'POST', body: schema }, handler)`
|
|
104
|
-
* `createEndpoint({ method: 'GET', query: z.object({...}) }, handler)`
|
|
105
|
-
*
|
|
106
|
-
* 2. Explicit path (for routes.ts at project root):
|
|
107
|
-
* `createEndpoint('/api/hello', { method: 'GET', query: z.object({...}) }, handler)`
|
|
108
|
-
*/
|
|
109
|
-
declare function createEndpoint<const TOptions extends AnyEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
110
|
-
declare function createEndpoint<const TOptions extends AnyEndpointOptions, TResponse = any>(path: string, options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
111
|
-
declare function createEndpoint<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: EndpointOptions<TBody, TQuery, THeaders, readonly []>, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
112
|
-
declare function createEndpoint<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(path: string, options: EndpointOptions<TBody, TQuery, THeaders, readonly []>, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
113
|
-
/**
|
|
114
|
-
* Convenience method for GET requests
|
|
115
|
-
*/
|
|
116
|
-
declare function GET<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
117
|
-
declare function GET<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
118
|
-
declare function GET<TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<never, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<never, TQuery, THeaders, TResponse>): CreatedEndpoint<never, TQuery, THeaders, TResponse>;
|
|
119
|
-
/**
|
|
120
|
-
* Convenience method for HEAD requests
|
|
121
|
-
*/
|
|
122
|
-
declare function HEAD<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
123
|
-
declare function HEAD<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
124
|
-
declare function HEAD<TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<never, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<never, TQuery, THeaders, TResponse>): CreatedEndpoint<never, TQuery, THeaders, TResponse>;
|
|
125
|
-
/**
|
|
126
|
-
* Convenience method for POST requests
|
|
127
|
-
*/
|
|
128
|
-
declare function POST<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
129
|
-
declare function POST<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
130
|
-
declare function POST<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
131
|
-
/**
|
|
132
|
-
* Convenience method for PUT requests
|
|
133
|
-
*/
|
|
134
|
-
declare function PUT<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
135
|
-
declare function PUT<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
136
|
-
declare function PUT<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
137
|
-
/**
|
|
138
|
-
* Convenience method for DELETE requests
|
|
139
|
-
*/
|
|
140
|
-
declare function DELETE<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
141
|
-
declare function DELETE<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
142
|
-
declare function DELETE<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
143
|
-
/**
|
|
144
|
-
* Convenience method for PATCH requests
|
|
145
|
-
*/
|
|
146
|
-
declare function PATCH<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
147
|
-
declare function PATCH<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
148
|
-
declare function PATCH<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
149
|
-
/**
|
|
150
|
-
* Convenience method for OPTIONS requests
|
|
151
|
-
*/
|
|
152
|
-
declare function OPTIONS<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
153
|
-
declare function OPTIONS<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
154
|
-
declare function OPTIONS<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
155
12
|
|
|
156
13
|
/**
|
|
157
14
|
* Farm.js API Routes Vite Plugin
|
|
@@ -187,4 +44,4 @@ interface ApiRoute {
|
|
|
187
44
|
*/
|
|
188
45
|
declare function farmApiPlugin(options?: FarmApiPluginOptions): Plugin;
|
|
189
46
|
|
|
190
|
-
export { type
|
|
47
|
+
export { type ApiRoute, type FarmApiPluginOptions, farmApiPlugin };
|
package/dist/api.d.ts
CHANGED
|
@@ -1,157 +1,14 @@
|
|
|
1
|
+
export { A as APIRouteMatch, c as APIRouteParamValue, b as APIRouteParams, q as AnyEndpointMiddleware, D as DELETE, e as EndpointErrorContracts, E as EndpointErrorDefinition, d as EndpointErrorDefinitions, f as EndpointFail, g as EndpointFailure, v as EndpointHandler, s as EndpointInvalidationContext, r as EndpointInvalidationTarget, t as EndpointInvalidations, p as EndpointMiddleware, l as EndpointMiddlewareContext, o as EndpointMiddlewareResult, u as EndpointOptions, j as EndpointParamValue, k as EndpointParams, G as GET, H as HEAD, I as InferEndpointMiddlewareContext, O as OPTIONS, y as PATCH, P as POST, x as PUT, T as TypedEndpoint, w as createEndpoint, i as invokeAPIRouteEndpoint, h as isEndpointFailure, a as isWebResponse, m as matchAPIRoute, n as normalizeRouteResponse } from './runtime-CdPHt0bv.js';
|
|
1
2
|
export { APIRoute, APIRouteManager, APIRouteManagerOptions, API_ROUTE_METHODS } from './api/route-manager.js';
|
|
2
|
-
export {
|
|
3
|
+
export { p as APIClient, f as APIClientError, A as APIClientOptions, g as APIClientSystemError, a as APIClientWithoutIntegrationsOptions, e as APIResult, C as CacheKey, j as CacheOptions, i as CachePolicy, n as ClientOptions, F as FARM_API_ROUTE_REF_SYMBOL, l as InvalidateOptions, I as InvalidateTarget, m as OptimisticOptions, O as OptimisticUpdate, R as RequestEvent, h as ResponseEvent, k as RetryOptions, o as RouteAPIClient, q as ServerAPIClient, S as ServerAPIClientOptions, b as ServerAPIClientWithoutIntegrationsOptions, d as StatusEvent, c as StatusPhase, r as createAPIClient, t as createServerAPIClient, s as isAPIRouteRef } from './client-DpEBJbts.js';
|
|
3
4
|
import { Plugin } from 'vite';
|
|
4
|
-
|
|
5
|
+
import './cache.js';
|
|
5
6
|
import './route-runtime-DoOHzCAD.js';
|
|
6
7
|
import './types-BH1lhg5G.js';
|
|
7
8
|
import './runtime-B6GvwDS1.js';
|
|
8
9
|
import './resolver-C6iecsDV.js';
|
|
9
10
|
import './integration-api-CHT2OKAf.js';
|
|
10
11
|
import './client-cache-CIlyBlmx.js';
|
|
11
|
-
import './cache.js';
|
|
12
|
-
|
|
13
|
-
type AnySchema = {
|
|
14
|
-
_output?: any;
|
|
15
|
-
_input?: any;
|
|
16
|
-
parse?: (data: unknown) => any;
|
|
17
|
-
};
|
|
18
|
-
type MaybePromise<T> = T | Promise<T>;
|
|
19
|
-
type Simplify<T> = {
|
|
20
|
-
[TKey in keyof T]: T[TKey];
|
|
21
|
-
} & {};
|
|
22
|
-
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer TIntersection) => void ? TIntersection : never;
|
|
23
|
-
type InferOutput<T> = T extends {
|
|
24
|
-
_output: infer O;
|
|
25
|
-
} ? O : T extends {
|
|
26
|
-
parse: (data: unknown) => infer R;
|
|
27
|
-
} ? R : unknown;
|
|
28
|
-
type InferHeadersOutput<T> = [T] extends [never] ? Record<string, string> : T extends AnySchema ? InferOutput<T> : Record<string, string>;
|
|
29
|
-
type EndpointParamValue = string | string[];
|
|
30
|
-
type EndpointParams = Record<string, EndpointParamValue>;
|
|
31
|
-
type EndpointMiddlewareContext<TContext extends object = {}, TBody = unknown, TQuery = unknown, THeaders = Record<string, string>> = {
|
|
32
|
-
body: TBody;
|
|
33
|
-
query: TQuery;
|
|
34
|
-
headers: THeaders;
|
|
35
|
-
request: Request;
|
|
36
|
-
/** Context accumulated from middleware that ran earlier in the chain. */
|
|
37
|
-
context: Readonly<TContext>;
|
|
38
|
-
params: EndpointParams;
|
|
39
|
-
};
|
|
40
|
-
type EndpointMiddlewareResult<TProvidedContext extends object = object> = TProvidedContext | true | false | Response;
|
|
41
|
-
/** A plain async function. No wrapper or `next()` callback is required. */
|
|
42
|
-
type EndpointMiddleware<TProvidedContext extends object = object, TContext extends object = {}, TBody = unknown, TQuery = unknown, THeaders = Record<string, string>> = (ctx: EndpointMiddlewareContext<TContext, TBody, TQuery, THeaders>) => MaybePromise<EndpointMiddlewareResult<TProvidedContext>>;
|
|
43
|
-
type AnyEndpointMiddleware = (ctx: EndpointMiddlewareContext<any, any, any, any>) => unknown;
|
|
44
|
-
type ValidateEndpointMiddlewares<TMiddlewares extends readonly AnyEndpointMiddleware[]> = {
|
|
45
|
-
readonly [TIndex in keyof TMiddlewares]: TMiddlewares[TIndex] extends AnyEndpointMiddleware ? [Awaited<ReturnType<TMiddlewares[TIndex]>>] extends [EndpointMiddlewareResult<object>] ? TMiddlewares[TIndex] : never : never;
|
|
46
|
-
};
|
|
47
|
-
type ContextFromMiddlewareResult<TResult> = Exclude<TResult, Response | boolean> extends infer TContext ? [TContext] extends [never] ? {} : TContext extends object ? TContext : {} : {};
|
|
48
|
-
type ContextFromMiddleware<TMiddleware> = TMiddleware extends (...args: any[]) => infer TResult ? ContextFromMiddlewareResult<Awaited<TResult>> : {};
|
|
49
|
-
type InferEndpointMiddlewareContext<TMiddlewares extends readonly ((...args: any[]) => any)[], TContext extends object = {}> = TMiddlewares extends readonly [infer TMiddleware, ...infer TRest] ? TMiddleware extends (...args: any[]) => any ? TRest extends readonly ((...args: any[]) => any)[] ? InferEndpointMiddlewareContext<TRest, Simplify<TContext & ContextFromMiddleware<TMiddleware>>> : Simplify<TContext> : Simplify<TContext> : number extends TMiddlewares["length"] ? Simplify<TContext & UnionToIntersection<ContextFromMiddleware<TMiddlewares[number]>>> : Simplify<TContext>;
|
|
50
|
-
type EndpointOptions<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TMiddlewares extends readonly AnyEndpointMiddleware[] = readonly []> = {
|
|
51
|
-
method?: "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
|
|
52
|
-
body?: TBody;
|
|
53
|
-
query?: TQuery;
|
|
54
|
-
headers?: THeaders;
|
|
55
|
-
middleware?: TMiddlewares;
|
|
56
|
-
/** @deprecated Use plain functions in `middleware` for Farm endpoint middleware. */
|
|
57
|
-
use?: any[];
|
|
58
|
-
};
|
|
59
|
-
type EndpointHandler<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any, TContext extends object = {}> = (ctx: {
|
|
60
|
-
body: InferOutput<TBody>;
|
|
61
|
-
query: InferOutput<TQuery>;
|
|
62
|
-
headers: InferHeadersOutput<THeaders>;
|
|
63
|
-
request: Request;
|
|
64
|
-
context: Readonly<TContext>;
|
|
65
|
-
params: EndpointParams;
|
|
66
|
-
}) => Promise<TResponse> | TResponse;
|
|
67
|
-
type TypedEndpoint<TBody = never, TQuery = never, TResponse = any, THeaders = Record<string, string>> = {
|
|
68
|
-
__types: {
|
|
69
|
-
body: TBody;
|
|
70
|
-
query: TQuery;
|
|
71
|
-
headers: THeaders;
|
|
72
|
-
response: TResponse;
|
|
73
|
-
};
|
|
74
|
-
__path?: string;
|
|
75
|
-
__method?: string;
|
|
76
|
-
} & ((options?: {
|
|
77
|
-
body?: TBody;
|
|
78
|
-
query?: TQuery;
|
|
79
|
-
}) => Promise<TResponse>);
|
|
80
|
-
type CreatedEndpoint<TBody extends AnySchema, TQuery extends AnySchema, THeaders extends AnySchema, TResponse> = TypedEndpoint<InferOutput<TBody>, InferOutput<TQuery>, Awaited<TResponse>, InferHeadersOutput<THeaders>>;
|
|
81
|
-
type AnyEndpointOptions = EndpointOptions<AnySchema, AnySchema, AnySchema, readonly AnyEndpointMiddleware[]>;
|
|
82
|
-
type EndpointBodyFromOptions<TOptions> = TOptions extends {
|
|
83
|
-
body: infer TBody extends AnySchema;
|
|
84
|
-
} ? TBody : never;
|
|
85
|
-
type EndpointQueryFromOptions<TOptions> = TOptions extends {
|
|
86
|
-
query: infer TQuery extends AnySchema;
|
|
87
|
-
} ? TQuery : never;
|
|
88
|
-
type EndpointHeadersFromOptions<TOptions> = TOptions extends {
|
|
89
|
-
headers: infer THeaders extends AnySchema;
|
|
90
|
-
} ? THeaders : never;
|
|
91
|
-
type EndpointMiddlewaresFromOptions<TOptions> = TOptions extends {
|
|
92
|
-
middleware: infer TMiddlewares extends readonly AnyEndpointMiddleware[];
|
|
93
|
-
} ? TMiddlewares : readonly [];
|
|
94
|
-
type MethodlessEndpointOptions = Omit<AnyEndpointOptions, "method">;
|
|
95
|
-
type EndpointHandlerFromOptions<TOptions, TResponse> = EndpointHandler<EndpointBodyFromOptions<TOptions>, EndpointQueryFromOptions<TOptions>, EndpointHeadersFromOptions<TOptions>, TResponse, InferEndpointMiddlewareContext<EndpointMiddlewaresFromOptions<TOptions>>>;
|
|
96
|
-
type ValidatedEndpointHandlerFromOptions<TOptions, TResponse> = EndpointHandlerFromOptions<TOptions, TResponse> & (EndpointMiddlewaresFromOptions<TOptions> extends ValidateEndpointMiddlewares<EndpointMiddlewaresFromOptions<TOptions>> ? unknown : never);
|
|
97
|
-
type CreatedEndpointFromOptions<TOptions, TResponse> = CreatedEndpoint<EndpointBodyFromOptions<TOptions>, EndpointQueryFromOptions<TOptions>, EndpointHeadersFromOptions<TOptions>, TResponse>;
|
|
98
|
-
/**
|
|
99
|
-
* Create a Farm.js API endpoint
|
|
100
|
-
*
|
|
101
|
-
* Supports two patterns:
|
|
102
|
-
* 1. File-based routing (path auto-inferred from file location):
|
|
103
|
-
* `export const POST = createEndpoint({ method: 'POST', body: schema }, handler)`
|
|
104
|
-
* `createEndpoint({ method: 'GET', query: z.object({...}) }, handler)`
|
|
105
|
-
*
|
|
106
|
-
* 2. Explicit path (for routes.ts at project root):
|
|
107
|
-
* `createEndpoint('/api/hello', { method: 'GET', query: z.object({...}) }, handler)`
|
|
108
|
-
*/
|
|
109
|
-
declare function createEndpoint<const TOptions extends AnyEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
110
|
-
declare function createEndpoint<const TOptions extends AnyEndpointOptions, TResponse = any>(path: string, options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
111
|
-
declare function createEndpoint<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: EndpointOptions<TBody, TQuery, THeaders, readonly []>, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
112
|
-
declare function createEndpoint<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(path: string, options: EndpointOptions<TBody, TQuery, THeaders, readonly []>, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
113
|
-
/**
|
|
114
|
-
* Convenience method for GET requests
|
|
115
|
-
*/
|
|
116
|
-
declare function GET<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
117
|
-
declare function GET<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
118
|
-
declare function GET<TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<never, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<never, TQuery, THeaders, TResponse>): CreatedEndpoint<never, TQuery, THeaders, TResponse>;
|
|
119
|
-
/**
|
|
120
|
-
* Convenience method for HEAD requests
|
|
121
|
-
*/
|
|
122
|
-
declare function HEAD<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
123
|
-
declare function HEAD<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
124
|
-
declare function HEAD<TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<never, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<never, TQuery, THeaders, TResponse>): CreatedEndpoint<never, TQuery, THeaders, TResponse>;
|
|
125
|
-
/**
|
|
126
|
-
* Convenience method for POST requests
|
|
127
|
-
*/
|
|
128
|
-
declare function POST<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
129
|
-
declare function POST<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
130
|
-
declare function POST<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
131
|
-
/**
|
|
132
|
-
* Convenience method for PUT requests
|
|
133
|
-
*/
|
|
134
|
-
declare function PUT<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
135
|
-
declare function PUT<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
136
|
-
declare function PUT<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
137
|
-
/**
|
|
138
|
-
* Convenience method for DELETE requests
|
|
139
|
-
*/
|
|
140
|
-
declare function DELETE<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
141
|
-
declare function DELETE<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
142
|
-
declare function DELETE<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
143
|
-
/**
|
|
144
|
-
* Convenience method for PATCH requests
|
|
145
|
-
*/
|
|
146
|
-
declare function PATCH<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
147
|
-
declare function PATCH<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
148
|
-
declare function PATCH<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
149
|
-
/**
|
|
150
|
-
* Convenience method for OPTIONS requests
|
|
151
|
-
*/
|
|
152
|
-
declare function OPTIONS<T = any>(handler: EndpointHandler<never, never, never, T>): CreatedEndpoint<never, never, never, T>;
|
|
153
|
-
declare function OPTIONS<const TOptions extends MethodlessEndpointOptions, TResponse = any>(options: TOptions, handler: ValidatedEndpointHandlerFromOptions<TOptions, TResponse>): CreatedEndpointFromOptions<TOptions, TResponse>;
|
|
154
|
-
declare function OPTIONS<TBody extends AnySchema = never, TQuery extends AnySchema = never, THeaders extends AnySchema = never, TResponse = any>(options: Omit<EndpointOptions<TBody, TQuery, THeaders, readonly []>, "method">, handler: EndpointHandler<TBody, TQuery, THeaders, TResponse>): CreatedEndpoint<TBody, TQuery, THeaders, TResponse>;
|
|
155
12
|
|
|
156
13
|
/**
|
|
157
14
|
* Farm.js API Routes Vite Plugin
|
|
@@ -187,4 +44,4 @@ interface ApiRoute {
|
|
|
187
44
|
*/
|
|
188
45
|
declare function farmApiPlugin(options?: FarmApiPluginOptions): Plugin;
|
|
189
46
|
|
|
190
|
-
export { type
|
|
47
|
+
export { type ApiRoute, type FarmApiPluginOptions, farmApiPlugin };
|
package/dist/api.mjs
CHANGED
|
@@ -1,50 +1,58 @@
|
|
|
1
1
|
import {
|
|
2
|
-
DELETE,
|
|
3
|
-
GET,
|
|
4
|
-
HEAD,
|
|
5
|
-
OPTIONS,
|
|
6
|
-
PATCH,
|
|
7
|
-
POST,
|
|
8
|
-
PUT,
|
|
9
|
-
createEndpoint,
|
|
10
2
|
farmApiPlugin
|
|
11
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-G5I34UA6.mjs";
|
|
12
4
|
import {
|
|
5
|
+
APIClientError,
|
|
6
|
+
FARM_API_ROUTE_REF_SYMBOL,
|
|
13
7
|
createAPIClient,
|
|
14
|
-
createServerAPIClient
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
createServerAPIClient,
|
|
9
|
+
isAPIRouteRef
|
|
10
|
+
} from "./chunk-C33RALN7.mjs";
|
|
11
|
+
import "./chunk-NRRFGX45.mjs";
|
|
17
12
|
import "./chunk-E6EPN5BT.mjs";
|
|
18
13
|
import "./chunk-QGOHVJ6J.mjs";
|
|
19
14
|
import {
|
|
20
15
|
APIRouteManager,
|
|
21
16
|
API_ROUTE_METHODS
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-LG3YINQN.mjs";
|
|
18
|
+
import "./chunk-2ED5Q2GH.mjs";
|
|
24
19
|
import "./chunk-GN72QAIH.mjs";
|
|
25
20
|
import "./chunk-FQYDHKKU.mjs";
|
|
21
|
+
import "./chunk-CSU4KJJF.mjs";
|
|
22
|
+
import "./chunk-QKVUNGAH.mjs";
|
|
23
|
+
import "./chunk-GQVGIUSN.mjs";
|
|
26
24
|
import "./chunk-J4FNJ5IU.mjs";
|
|
27
25
|
import {
|
|
26
|
+
DELETE,
|
|
27
|
+
EndpointFailure,
|
|
28
|
+
GET,
|
|
29
|
+
HEAD,
|
|
30
|
+
OPTIONS,
|
|
31
|
+
PATCH,
|
|
32
|
+
POST,
|
|
33
|
+
PUT,
|
|
34
|
+
createEndpoint,
|
|
28
35
|
invokeAPIRouteEndpoint,
|
|
36
|
+
isEndpointFailure,
|
|
29
37
|
isWebResponse,
|
|
30
38
|
matchAPIRoute,
|
|
31
39
|
normalizeRouteResponse
|
|
32
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-LWMGIEJA.mjs";
|
|
33
41
|
import "./chunk-RHIFZZUI.mjs";
|
|
34
42
|
import "./chunk-LM2YNO4U.mjs";
|
|
35
|
-
import "./chunk-B6N4ZB2H.mjs";
|
|
36
|
-
import "./chunk-QKVUNGAH.mjs";
|
|
37
|
-
import "./chunk-QM6VV26B.mjs";
|
|
38
43
|
import "./chunk-44ZCFSKE.mjs";
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-TXCFGOHW.mjs";
|
|
44
|
+
import "./chunk-GZWT6VI5.mjs";
|
|
41
45
|
import "./chunk-WZ5QFROO.mjs";
|
|
46
|
+
import "./chunk-SHRJG6OG.mjs";
|
|
42
47
|
import "./chunk-7ZY5AIJO.mjs";
|
|
43
48
|
import "./chunk-CGILA3WO.mjs";
|
|
44
49
|
export {
|
|
50
|
+
APIClientError,
|
|
45
51
|
APIRouteManager,
|
|
46
52
|
API_ROUTE_METHODS,
|
|
47
53
|
DELETE,
|
|
54
|
+
EndpointFailure,
|
|
55
|
+
FARM_API_ROUTE_REF_SYMBOL,
|
|
48
56
|
GET,
|
|
49
57
|
HEAD,
|
|
50
58
|
OPTIONS,
|
|
@@ -56,6 +64,8 @@ export {
|
|
|
56
64
|
createServerAPIClient,
|
|
57
65
|
farmApiPlugin,
|
|
58
66
|
invokeAPIRouteEndpoint,
|
|
67
|
+
isAPIRouteRef,
|
|
68
|
+
isEndpointFailure,
|
|
59
69
|
isWebResponse,
|
|
60
70
|
matchAPIRoute,
|
|
61
71
|
normalizeRouteResponse
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FarmConfig, x as ParsedRoute, p as RouteModule, r as LayoutModule, z as SSGCollectionResult, t as FarmRequest, u as FarmResponse, _ as FarmMdxResolvedConfig, $ as ResolvedFarmDevtoolsConfig } from './client-plugins-
|
|
1
|
+
import { F as FarmConfig, x as ParsedRoute, p as RouteModule, r as LayoutModule, z as SSGCollectionResult, t as FarmRequest, u as FarmResponse, _ as FarmMdxResolvedConfig, $ as ResolvedFarmDevtoolsConfig } from './client-plugins-Cnr0D3kk.mjs';
|
|
2
2
|
import { F as FarmDocsResolvedConfig } from './types-C9N-nk5R.mjs';
|
|
3
3
|
import { FarmMarkdownResolvedConfig } from './markdown.mjs';
|
|
4
4
|
import { FarmWorkflowsResolvedConfig } from './workflows.mjs';
|
|
@@ -6,7 +6,7 @@ import { FarmCronResolvedConfig } from './cron.mjs';
|
|
|
6
6
|
import { R as ResolvedFarmImageConfig } from './image-config-Duob7wER.mjs';
|
|
7
7
|
import { ProgrammaticRedirectRoute, ProgrammaticRouteSearchClientOptions } from './routes.mjs';
|
|
8
8
|
import { ViteDevServer } from 'vite';
|
|
9
|
-
import { M as MetadataImageKind } from './metadata-
|
|
9
|
+
import { M as MetadataImageKind } from './metadata-Dp8AdvsB.mjs';
|
|
10
10
|
import { R as ResolvedFarmRouteRuntimeConfig } from './route-runtime-DoOHzCAD.mjs';
|
|
11
11
|
import { R as ResolvedFarmI18nConfig } from './types-BH1lhg5G.mjs';
|
|
12
12
|
import { F as FarmI18nRuntime } from './runtime-DeAAZ6gO.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FarmConfig, x as ParsedRoute, p as RouteModule, r as LayoutModule, z as SSGCollectionResult, t as FarmRequest, u as FarmResponse, _ as FarmMdxResolvedConfig, $ as ResolvedFarmDevtoolsConfig } from './client-plugins-
|
|
1
|
+
import { F as FarmConfig, x as ParsedRoute, p as RouteModule, r as LayoutModule, z as SSGCollectionResult, t as FarmRequest, u as FarmResponse, _ as FarmMdxResolvedConfig, $ as ResolvedFarmDevtoolsConfig } from './client-plugins-CTnsZz_A.js';
|
|
2
2
|
import { F as FarmDocsResolvedConfig } from './types-C9N-nk5R.js';
|
|
3
3
|
import { FarmMarkdownResolvedConfig } from './markdown.js';
|
|
4
4
|
import { FarmWorkflowsResolvedConfig } from './workflows.js';
|
|
@@ -6,7 +6,7 @@ import { FarmCronResolvedConfig } from './cron.js';
|
|
|
6
6
|
import { R as ResolvedFarmImageConfig } from './image-config-Duob7wER.js';
|
|
7
7
|
import { ProgrammaticRedirectRoute, ProgrammaticRouteSearchClientOptions } from './routes.js';
|
|
8
8
|
import { ViteDevServer } from 'vite';
|
|
9
|
-
import { M as MetadataImageKind } from './metadata-
|
|
9
|
+
import { M as MetadataImageKind } from './metadata-eoVmHoyv.js';
|
|
10
10
|
import { R as ResolvedFarmRouteRuntimeConfig } from './route-runtime-DoOHzCAD.js';
|
|
11
11
|
import { R as ResolvedFarmI18nConfig } from './types-BH1lhg5G.js';
|
|
12
12
|
import { F as FarmI18nRuntime } from './runtime-B6GvwDS1.js';
|
package/dist/app-markdown.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/app-markdown.ts"],"sourcesContent":["import React from \"react\";\nimport { readFile } from \"fs/promises\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\nimport type { Metadata, RouteModule } from \"./types\";\n\nexport type FarmMdxComponent = React.ComponentType<any> | keyof React.JSX.IntrinsicElements;\nexport type FarmMdxComponents = Record<string, FarmMdxComponent>;\n\nexport interface FarmMdxUserConfig {\n /**\n * Component map or module path that exports `components` or a default component map.\n * Relative paths resolve from the project root.\n */\n components?: string | FarmMdxComponents;\n /**\n * Serve source-authored markdown pages at `/route.md`.\n * Enabled by default for `page.md` and `page.mdx`.\n */\n markdownRoutes?: boolean;\n /**\n * Class name used for the wrapper around rendered markdown content.\n */\n className?: string;\n}\n\nexport interface FarmMdxResolvedConfig {\n components?: string | FarmMdxComponents;\n markdownRoutes: boolean;\n className: string;\n}\n\nexport interface FarmMarkdownPageSource {\n source: string;\n filePath: string;\n}\n\nexport interface FarmMarkdownPageModuleInput extends FarmMarkdownPageSource {\n components?: FarmMdxComponents;\n config?: FarmMdxResolvedConfig;\n}\n\nexport function resolveMdxConfig(config: FarmMdxUserConfig | undefined): FarmMdxResolvedConfig {\n return {\n components: config?.components,\n markdownRoutes: config?.markdownRoutes ?? true,\n className: config?.className ?? \"farm-markdown\",\n };\n}\n\nexport function isFarmMarkdownPageFile(filePath: string): boolean {\n return /(^|[/\\\\])page\\.mdx?$/i.test(filePath);\n}\n\nexport function normalizeFarmMarkdownRoutePath(pathname: string): string {\n const withoutExtension = pathname.replace(/\\.md$/i, \"\");\n const normalized = withoutExtension.startsWith(\"/\") ? withoutExtension : `/${withoutExtension}`;\n return normalized === \"/index\" ? \"/\" : normalized.replace(/\\/+$/g, \"\") || \"/\";\n}\n\nexport function parseMarkdownFrontmatter(source: string): {\n frontmatter: Record<string, string>;\n body: string;\n} {\n if (!source.startsWith(\"---\")) {\n return { frontmatter: {}, body: source };\n }\n\n const endIndex = source.indexOf(\"\\n---\", 3);\n if (endIndex === -1) {\n return { frontmatter: {}, body: source };\n }\n\n const frontmatterSource = source.slice(3, endIndex).trim();\n const closingFenceEnd = endIndex + \"\\n---\".length;\n const bodyStart =\n source.slice(closingFenceEnd, closingFenceEnd + 2) === \"\\r\\n\"\n ? closingFenceEnd + 2\n : source[closingFenceEnd] === \"\\n\"\n ? closingFenceEnd + 1\n : closingFenceEnd;\n const body = source.slice(bodyStart);\n const frontmatter: Record<string, string> = {};\n\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const separator = line.indexOf(\":\");\n if (separator === -1) continue;\n const key = line.slice(0, separator).trim();\n const value = line\n .slice(separator + 1)\n .trim()\n .replace(/^[\"']|[\"']$/g, \"\");\n if (key && value) frontmatter[key] = value;\n }\n\n return { frontmatter, body };\n}\n\nexport function titleFromMarkdown(body: string, fallback?: string): string | undefined {\n return body.match(/^#\\s+(.+)$/m)?.[1]?.trim() || fallback;\n}\n\nexport function createMarkdownMetadata(\n source: string,\n filePath: string,\n): (Metadata & Record<string, any>) | undefined {\n const { frontmatter, body } = parseMarkdownFrontmatter(source);\n const routeTitle = titleFromMarkdown(body);\n const title = frontmatter.title || routeTitle;\n const description = frontmatter.description;\n\n if (!title && !description) {\n return undefined;\n }\n\n return {\n ...(title ? { title } : {}),\n ...(description ? { description } : {}),\n source: filePath,\n };\n}\n\nasync function evaluateMdxSource(source: string, filePath: string) {\n const [{ evaluate }, runtime, remarkGfmModule] = await Promise.all([\n import(\"@mdx-js/mdx\"),\n import(\"react/jsx-runtime\"),\n import(\"remark-gfm\"),\n ]);\n const remarkGfm = remarkGfmModule.default;\n\n return evaluate(source, {\n ...runtime,\n baseUrl: pathToFileURL(filePath),\n remarkPlugins: [remarkGfm],\n });\n}\n\nexport function createFarmMarkdownRouteModule(\n input: FarmMarkdownPageModuleInput,\n): RouteModule & { source: string } {\n const { body } = parseMarkdownFrontmatter(input.source);\n const components = input.components || {};\n const className = input.config?.className || \"farm-markdown\";\n let evaluatedPromise: Promise<{ default: React.ComponentType<any> }> | undefined;\n\n const loadContent = async () => {\n evaluatedPromise ??= evaluateMdxSource(body, input.filePath) as Promise<{\n default: React.ComponentType<any>;\n }>;\n return evaluatedPromise;\n };\n\n async function FarmMarkdownPage(props: any) {\n const evaluated = await loadContent();\n const MDXContent = evaluated.default;\n return React.createElement(\n \"article\",\n { className, \"data-farm-markdown-page\": \"\" },\n React.createElement(MDXContent, {\n ...props,\n components: {\n ...components,\n ...(props?.components || {}),\n },\n }),\n );\n }\n\n return {\n default: FarmMarkdownPage as unknown as RouteModule[\"default\"],\n metadata: createMarkdownMetadata(input.source, input.filePath),\n source: input.source,\n };\n}\n\nexport async function createFarmMarkdownRouteModuleFromFile(\n filePath: string,\n options: {\n components?: FarmMdxComponents;\n config?: FarmMdxResolvedConfig;\n } = {},\n) {\n const source = await readFile(filePath, \"utf8\");\n return createFarmMarkdownRouteModule({\n source,\n filePath,\n components: options.components,\n config: options.config,\n });\n}\n\nexport async function loadFarmMdxComponents(\n config: FarmMdxResolvedConfig | undefined,\n options: {\n root: string;\n loadModule?: (modulePath: string) => Promise<unknown>;\n },\n): Promise<FarmMdxComponents> {\n const configured = config?.components;\n if (!configured) {\n return {};\n }\n\n if (typeof configured !== \"string\") {\n return configured;\n }\n\n const modulePath = path.isAbsolute(configured) ? configured : path.join(options.root, configured);\n const mod = options.loadModule\n ? await options.loadModule(modulePath)\n : await import(pathToFileURL(modulePath).href);\n const maybeModule = mod as {\n components?: FarmMdxComponents;\n default?: FarmMdxComponents;\n };\n\n return maybeModule.components || maybeModule.default || {};\n}\n\nexport async function createFarmMarkdownSourceResponse(options: {\n request: Request;\n config?: FarmMdxResolvedConfig;\n resolveSource: (\n pathname: string,\n ) => Promise<FarmMarkdownPageSource | null> | FarmMarkdownPageSource | null;\n}): Promise<Response | null> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return null;\n }\n if (options.config?.markdownRoutes === false) {\n return null;\n }\n\n const url = new URL(options.request.url);\n if (!url.pathname.endsWith(\".md\")) {\n return null;\n }\n\n const targetPathname = normalizeFarmMarkdownRoutePath(url.pathname);\n const source = await options.resolveSource(targetPathname);\n if (!source) {\n return null;\n }\n\n return new Response(options.request.method === \"HEAD\" ? null : source.source, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/markdown; charset=utf-8\",\n \"Cache-Control\": \"public, s-maxage=60, stale-while-revalidate=300\",\n \"X-Farm-Markdown-Route\": targetPathname,\n \"X-Farm-Markdown-Source\": source.filePath,\n },\n });\n}\n"],"mappings":"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","names":["React","path"]}
|
|
1
|
+
{"version":3,"sources":["../src/app-markdown.ts"],"sourcesContent":["import React from \"react\";\nimport { readFile } from \"fs/promises\";\nimport path from \"path\";\nimport { pathToFileURL } from \"url\";\nimport type { Metadata, RouteModule } from \"./types\";\n\nexport type FarmMdxComponent = React.ComponentType<any> | keyof React.JSX.IntrinsicElements;\nexport type FarmMdxComponents = Record<string, FarmMdxComponent>;\n\nexport interface FarmMdxUserConfig {\n /**\n * Component map or module path that exports `components` or a default component map.\n * Relative paths resolve from the project root.\n */\n components?: string | FarmMdxComponents;\n /**\n * Serve source-authored markdown pages at `/route.md`.\n * Enabled by default for `page.md` and `page.mdx`.\n */\n markdownRoutes?: boolean;\n /**\n * Class name used for the wrapper around rendered markdown content.\n */\n className?: string;\n}\n\nexport interface FarmMdxResolvedConfig {\n components?: string | FarmMdxComponents;\n markdownRoutes: boolean;\n className: string;\n}\n\nexport interface FarmMarkdownPageSource {\n source: string;\n filePath: string;\n}\n\nexport interface FarmMarkdownPageModuleInput extends FarmMarkdownPageSource {\n components?: FarmMdxComponents;\n config?: FarmMdxResolvedConfig;\n}\n\nexport function resolveMdxConfig(config: FarmMdxUserConfig | undefined): FarmMdxResolvedConfig {\n return {\n components: config?.components,\n markdownRoutes: config?.markdownRoutes ?? true,\n className: config?.className ?? \"farm-markdown\",\n };\n}\n\nexport function isFarmMarkdownPageFile(filePath: string): boolean {\n return /(^|[/\\\\])page\\.mdx?$/i.test(filePath);\n}\n\nexport function normalizeFarmMarkdownRoutePath(pathname: string): string {\n const withoutExtension = pathname.replace(/\\.md$/i, \"\");\n const normalized = withoutExtension.startsWith(\"/\") ? withoutExtension : `/${withoutExtension}`;\n return normalized === \"/index\" ? \"/\" : normalized.replace(/\\/+$/g, \"\") || \"/\";\n}\n\nexport function parseMarkdownFrontmatter(source: string): {\n frontmatter: Record<string, string>;\n body: string;\n} {\n if (!source.startsWith(\"---\")) {\n return { frontmatter: {}, body: source };\n }\n\n const endIndex = source.indexOf(\"\\n---\", 3);\n if (endIndex === -1) {\n return { frontmatter: {}, body: source };\n }\n\n const frontmatterSource = source.slice(3, endIndex).trim();\n const closingFenceEnd = endIndex + \"\\n---\".length;\n const bodyStart =\n source.slice(closingFenceEnd, closingFenceEnd + 2) === \"\\r\\n\"\n ? closingFenceEnd + 2\n : source[closingFenceEnd] === \"\\n\"\n ? closingFenceEnd + 1\n : closingFenceEnd;\n const body = source.slice(bodyStart);\n const frontmatter: Record<string, string> = {};\n\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const separator = line.indexOf(\":\");\n if (separator === -1) continue;\n const key = line.slice(0, separator).trim();\n const value = line\n .slice(separator + 1)\n .trim()\n .replace(/^[\"']|[\"']$/g, \"\");\n if (key && value) frontmatter[key] = value;\n }\n\n return { frontmatter, body };\n}\n\nexport function titleFromMarkdown(body: string, fallback?: string): string | undefined {\n return body.match(/^#\\s+(.+)$/m)?.[1]?.trim() || fallback;\n}\n\nexport function createMarkdownMetadata(\n source: string,\n filePath: string,\n): (Metadata & Record<string, any>) | undefined {\n const { frontmatter, body } = parseMarkdownFrontmatter(source);\n const routeTitle = titleFromMarkdown(body);\n const title = frontmatter.title || routeTitle;\n const description = frontmatter.description;\n\n if (!title && !description) {\n return undefined;\n }\n\n return {\n ...(title ? { title } : {}),\n ...(description ? { description } : {}),\n source: filePath,\n };\n}\n\nasync function evaluateMdxSource(source: string, filePath: string) {\n const [{ evaluate }, runtime, remarkGfmModule] = await Promise.all([\n import(\"@mdx-js/mdx\"),\n import(\"react/jsx-runtime\"),\n import(\"remark-gfm\"),\n ]);\n const remarkGfm = remarkGfmModule.default;\n\n return evaluate(source, {\n ...runtime,\n baseUrl: pathToFileURL(filePath),\n remarkPlugins: [remarkGfm],\n });\n}\n\nexport function createFarmMarkdownRouteModule(\n input: FarmMarkdownPageModuleInput,\n): RouteModule & { source: string } {\n const { body } = parseMarkdownFrontmatter(input.source);\n const components = input.components || {};\n const className = input.config?.className || \"farm-markdown\";\n let evaluatedPromise: Promise<{ default: React.ComponentType<any> }> | undefined;\n\n const loadContent = async () => {\n evaluatedPromise ??= evaluateMdxSource(body, input.filePath) as Promise<{\n default: React.ComponentType<any>;\n }>;\n return evaluatedPromise;\n };\n\n async function FarmMarkdownPage(props: any) {\n const evaluated = await loadContent();\n const MDXContent = evaluated.default;\n return React.createElement(\n \"article\",\n { className, \"data-farm-markdown-page\": \"\" },\n React.createElement(MDXContent, {\n ...props,\n components: {\n ...components,\n ...props?.components,\n },\n }),\n );\n }\n\n return {\n default: FarmMarkdownPage as unknown as RouteModule[\"default\"],\n metadata: createMarkdownMetadata(input.source, input.filePath),\n source: input.source,\n };\n}\n\nexport async function createFarmMarkdownRouteModuleFromFile(\n filePath: string,\n options: {\n components?: FarmMdxComponents;\n config?: FarmMdxResolvedConfig;\n } = {},\n) {\n const source = await readFile(filePath, \"utf8\");\n return createFarmMarkdownRouteModule({\n source,\n filePath,\n components: options.components,\n config: options.config,\n });\n}\n\nexport async function loadFarmMdxComponents(\n config: FarmMdxResolvedConfig | undefined,\n options: {\n root: string;\n loadModule?: (modulePath: string) => Promise<unknown>;\n },\n): Promise<FarmMdxComponents> {\n const configured = config?.components;\n if (!configured) {\n return {};\n }\n\n if (typeof configured !== \"string\") {\n return configured;\n }\n\n const modulePath = path.isAbsolute(configured) ? configured : path.join(options.root, configured);\n const mod = options.loadModule\n ? await options.loadModule(modulePath)\n : await import(pathToFileURL(modulePath).href);\n const maybeModule = mod as {\n components?: FarmMdxComponents;\n default?: FarmMdxComponents;\n };\n\n return maybeModule.components || maybeModule.default || {};\n}\n\nexport async function createFarmMarkdownSourceResponse(options: {\n request: Request;\n config?: FarmMdxResolvedConfig;\n resolveSource: (\n pathname: string,\n ) => Promise<FarmMarkdownPageSource | null> | FarmMarkdownPageSource | null;\n}): Promise<Response | null> {\n if (options.request.method !== \"GET\" && options.request.method !== \"HEAD\") {\n return null;\n }\n if (options.config?.markdownRoutes === false) {\n return null;\n }\n\n const url = new URL(options.request.url);\n if (!url.pathname.endsWith(\".md\")) {\n return null;\n }\n\n const targetPathname = normalizeFarmMarkdownRoutePath(url.pathname);\n const source = await options.resolveSource(targetPathname);\n if (!source) {\n return null;\n }\n\n return new Response(options.request.method === \"HEAD\" ? null : source.source, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/markdown; charset=utf-8\",\n \"Cache-Control\": \"public, s-maxage=60, stale-while-revalidate=300\",\n \"X-Farm-Markdown-Route\": targetPathname,\n \"X-Farm-Markdown-Source\": source.filePath,\n },\n });\n}\n"],"mappings":"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","names":["React","path"]}
|
package/dist/app-markdown.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'react';
|
|
2
|
-
export { cH as FarmMarkdownPageModuleInput, cG as FarmMarkdownPageSource, cD as FarmMdxComponent, cE as FarmMdxComponents, _ as FarmMdxResolvedConfig, cF as FarmMdxUserConfig, cO as createFarmMarkdownRouteModule, cP as createFarmMarkdownRouteModuleFromFile, cR as createFarmMarkdownSourceResponse, cN as createMarkdownMetadata, cJ as isFarmMarkdownPageFile, cQ as loadFarmMdxComponents, cK as normalizeFarmMarkdownRoutePath, cL as parseMarkdownFrontmatter, cI as resolveMdxConfig, cM as titleFromMarkdown } from './client-plugins-
|
|
2
|
+
export { cH as FarmMarkdownPageModuleInput, cG as FarmMarkdownPageSource, cD as FarmMdxComponent, cE as FarmMdxComponents, _ as FarmMdxResolvedConfig, cF as FarmMdxUserConfig, cO as createFarmMarkdownRouteModule, cP as createFarmMarkdownRouteModuleFromFile, cR as createFarmMarkdownSourceResponse, cN as createMarkdownMetadata, cJ as isFarmMarkdownPageFile, cQ as loadFarmMdxComponents, cK as normalizeFarmMarkdownRoutePath, cL as parseMarkdownFrontmatter, cI as resolveMdxConfig, cM as titleFromMarkdown } from './client-plugins-Cnr0D3kk.mjs';
|
|
3
3
|
import './plugin-BJDf43dc.mjs';
|
|
4
4
|
import 'http';
|
|
5
5
|
import './types-D1A6-XvH.mjs';
|
package/dist/app-markdown.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'react';
|
|
2
|
-
export { cH as FarmMarkdownPageModuleInput, cG as FarmMarkdownPageSource, cD as FarmMdxComponent, cE as FarmMdxComponents, _ as FarmMdxResolvedConfig, cF as FarmMdxUserConfig, cO as createFarmMarkdownRouteModule, cP as createFarmMarkdownRouteModuleFromFile, cR as createFarmMarkdownSourceResponse, cN as createMarkdownMetadata, cJ as isFarmMarkdownPageFile, cQ as loadFarmMdxComponents, cK as normalizeFarmMarkdownRoutePath, cL as parseMarkdownFrontmatter, cI as resolveMdxConfig, cM as titleFromMarkdown } from './client-plugins-
|
|
2
|
+
export { cH as FarmMarkdownPageModuleInput, cG as FarmMarkdownPageSource, cD as FarmMdxComponent, cE as FarmMdxComponents, _ as FarmMdxResolvedConfig, cF as FarmMdxUserConfig, cO as createFarmMarkdownRouteModule, cP as createFarmMarkdownRouteModuleFromFile, cR as createFarmMarkdownSourceResponse, cN as createMarkdownMetadata, cJ as isFarmMarkdownPageFile, cQ as loadFarmMdxComponents, cK as normalizeFarmMarkdownRoutePath, cL as parseMarkdownFrontmatter, cI as resolveMdxConfig, cM as titleFromMarkdown } from './client-plugins-CTnsZz_A.js';
|
|
3
3
|
import './plugin-BJDf43dc.js';
|
|
4
4
|
import 'http';
|
|
5
5
|
import './types-D1A6-XvH.js';
|
package/dist/app-markdown.mjs
CHANGED
package/dist/cache.cjs
CHANGED
|
@@ -27,6 +27,7 @@ __export(cache_exports, {
|
|
|
27
27
|
createPathCacheTag: () => createPathCacheTag,
|
|
28
28
|
createRouteDataCacheKey: () => createRouteDataCacheKey,
|
|
29
29
|
createRouteDataCacheTag: () => createRouteDataCacheTag,
|
|
30
|
+
defineCacheKey: () => defineCacheKey,
|
|
30
31
|
getFarmDataCache: () => getFarmDataCache,
|
|
31
32
|
invalidate: () => invalidate,
|
|
32
33
|
invalidateRouteData: () => invalidateRouteData,
|
|
@@ -190,6 +191,23 @@ function getActiveFarmI18nSnapshot() {
|
|
|
190
191
|
__name(getActiveFarmI18nSnapshot, "getActiveFarmI18nSnapshot");
|
|
191
192
|
|
|
192
193
|
// src/cache.ts
|
|
194
|
+
function defineCacheKey() {
|
|
195
|
+
return (factory) => {
|
|
196
|
+
if (typeof factory !== "function") {
|
|
197
|
+
throw new TypeError("defineCacheKey expects a key factory function.");
|
|
198
|
+
}
|
|
199
|
+
return ((...args) => {
|
|
200
|
+
const key = factory(...args);
|
|
201
|
+
if (typeof key !== "string" && !Array.isArray(key)) {
|
|
202
|
+
throw new TypeError(
|
|
203
|
+
"A defined cache key factory must return a string or structured array."
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
return key;
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
__name(defineCacheKey, "defineCacheKey");
|
|
193
211
|
var _FarmDataCache = class _FarmDataCache {
|
|
194
212
|
constructor() {
|
|
195
213
|
this.entries = /* @__PURE__ */ new Map();
|
|
@@ -531,6 +549,7 @@ __name(stableSerialize, "stableSerialize");
|
|
|
531
549
|
createPathCacheTag,
|
|
532
550
|
createRouteDataCacheKey,
|
|
533
551
|
createRouteDataCacheTag,
|
|
552
|
+
defineCacheKey,
|
|
534
553
|
getFarmDataCache,
|
|
535
554
|
invalidate,
|
|
536
555
|
invalidateRouteData,
|