@farm.js/core 0.1.0-beta.16 → 0.1.0-beta.17
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/after.d.mts +25 -0
- package/dist/after.d.ts +25 -0
- package/dist/agent-runtime.d.mts +96 -0
- package/dist/agent-runtime.d.ts +96 -0
- package/dist/api/route-manager.d.mts +66 -0
- package/dist/api/route-manager.d.ts +66 -0
- package/dist/api/runtime.d.mts +3 -0
- package/dist/api/runtime.d.ts +3 -0
- package/dist/api.d.mts +48 -0
- package/dist/api.d.ts +48 -0
- package/dist/app-B0tE1I3o.d.ts +306 -0
- package/dist/app-Dv2JJb7X.d.mts +306 -0
- package/dist/app-markdown.d.mts +24 -0
- package/dist/app-markdown.d.ts +24 -0
- package/dist/cache.d.mts +192 -0
- package/dist/cache.d.ts +192 -0
- package/dist/{chunk-AN3PQVKH.mjs → chunk-2FLBZFPG.mjs} +9 -7
- package/dist/chunk-2FLBZFPG.mjs.map +1 -0
- package/dist/chunk-E257KFBU.mjs +227 -0
- package/dist/chunk-E257KFBU.mjs.map +1 -0
- package/dist/{chunk-SLDBGSC3.mjs → chunk-JAEAE27K.mjs} +2 -2
- package/dist/{chunk-T2KL7VEL.mjs → chunk-PZXBQKCH.mjs} +13 -4
- package/dist/chunk-PZXBQKCH.mjs.map +1 -0
- package/dist/{chunk-UXUAWNO5.mjs → chunk-RIXKJPGI.mjs} +117 -55
- package/dist/chunk-RIXKJPGI.mjs.map +1 -0
- package/dist/{chunk-OSWV5IJB.mjs → chunk-T2M5QANG.mjs} +32 -9
- package/dist/chunk-T2M5QANG.mjs.map +1 -0
- package/dist/{chunk-BWJC5ZOD.mjs → chunk-VFDBC3W7.mjs} +2 -2
- package/dist/{chunk-BWJC5ZOD.mjs.map → chunk-VFDBC3W7.mjs.map} +1 -1
- package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
- package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
- package/dist/client-BT1mFQas.d.mts +447 -0
- package/dist/client-Nn0q4eO4.d.ts +447 -0
- package/dist/client-cache-CIlyBlmx.d.ts +6 -0
- package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
- package/dist/client-plugins-278AvYHE.d.mts +2021 -0
- package/dist/client-plugins-CTQAkr7R.d.ts +2021 -0
- package/dist/client-plugins.d.mts +24 -0
- package/dist/client-plugins.d.ts +24 -0
- package/dist/client.d.mts +452 -0
- package/dist/client.d.ts +452 -0
- package/dist/config.d.mts +31 -0
- package/dist/config.d.ts +31 -0
- package/dist/cron.d.mts +78 -0
- package/dist/cron.d.ts +78 -0
- package/dist/deferred.d.mts +42 -0
- package/dist/deferred.d.ts +42 -0
- package/dist/deployment.d.mts +36 -0
- package/dist/deployment.d.ts +36 -0
- package/dist/{devtools-E4YNCY5J.mjs → devtools-K2ERKGNI.mjs} +3 -3
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.d.mts +80 -0
- package/dist/docs.d.ts +80 -0
- package/dist/docs.mjs +3 -3
- package/dist/env-types.d.mts +12 -0
- package/dist/env-types.d.ts +12 -0
- package/dist/env.d.mts +45 -0
- package/dist/env.d.ts +45 -0
- package/dist/environment/vite.d.mts +22 -0
- package/dist/environment/vite.d.ts +22 -0
- package/dist/environment.d.mts +18 -0
- package/dist/environment.d.ts +18 -0
- package/dist/font.d.mts +95 -0
- package/dist/font.d.ts +95 -0
- package/dist/headers.d.mts +22 -0
- package/dist/headers.d.ts +22 -0
- package/dist/i18n/client.d.mts +32 -0
- package/dist/i18n/client.d.ts +32 -0
- package/dist/i18n/index.d.mts +20 -0
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/server.d.mts +30 -0
- package/dist/i18n/server.d.ts +30 -0
- package/dist/image/server.d.mts +37 -0
- package/dist/image/server.d.ts +37 -0
- package/dist/image/sharp.d.mts +7 -0
- package/dist/image/sharp.d.ts +7 -0
- package/dist/image-config-Duob7wER.d.mts +50 -0
- package/dist/image-config-Duob7wER.d.ts +50 -0
- package/dist/image.d.mts +39 -0
- package/dist/image.d.ts +39 -0
- package/dist/index.cjs +293 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +477 -0
- package/dist/index.d.ts +477 -0
- package/dist/index.mjs +22 -18
- package/dist/index.mjs.map +1 -1
- package/dist/integration-api-CHT2OKAf.d.mts +93 -0
- package/dist/integration-api-CHT2OKAf.d.ts +93 -0
- package/dist/integrations.d.mts +24 -0
- package/dist/integrations.d.ts +24 -0
- package/dist/internal/build-runtime.cjs +306 -137
- package/dist/internal/build-runtime.cjs.map +1 -1
- package/dist/internal/build-runtime.d.mts +41 -0
- package/dist/internal/build-runtime.d.ts +41 -0
- package/dist/internal/build-runtime.mjs +7 -7
- package/dist/internal/client-runtime.d.mts +17 -0
- package/dist/internal/client-runtime.d.ts +17 -0
- package/dist/internal/config-runtime.cjs +140 -1
- package/dist/internal/config-runtime.cjs.map +1 -1
- package/dist/internal/config-runtime.d.mts +41 -0
- package/dist/internal/config-runtime.d.ts +41 -0
- package/dist/internal/config-runtime.mjs +2 -2
- package/dist/internal/metadata-image-runtime.d.mts +25 -0
- package/dist/internal/metadata-image-runtime.d.ts +25 -0
- package/dist/internal/production-node-env.d.mts +12 -0
- package/dist/internal/production-node-env.d.ts +12 -0
- package/dist/internal/production-runtime.d.mts +44 -0
- package/dist/internal/production-runtime.d.ts +44 -0
- package/dist/island-CfGru1MO.d.mts +9 -0
- package/dist/island-CfGru1MO.d.ts +9 -0
- package/dist/markdown.d.mts +60 -0
- package/dist/markdown.d.ts +60 -0
- package/dist/metadata-DmCudMw_.d.mts +22 -0
- package/dist/metadata-xghtOlbR.d.ts +22 -0
- package/dist/middleware.cjs +116 -98
- package/dist/middleware.cjs.map +1 -1
- package/dist/middleware.d.mts +171 -0
- package/dist/middleware.d.ts +171 -0
- package/dist/middleware.mjs +5 -2
- package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
- package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
- package/dist/navigation.d.mts +14 -0
- package/dist/navigation.d.ts +14 -0
- package/dist/observability.d.mts +335 -0
- package/dist/observability.d.ts +335 -0
- package/dist/params-BALtrRim.d.ts +15 -0
- package/dist/params-ry-lxqmy.d.mts +15 -0
- package/dist/plugin-BJDf43dc.d.mts +165 -0
- package/dist/plugin-BJDf43dc.d.ts +165 -0
- package/dist/plugin.cjs +132 -0
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.mts +24 -0
- package/dist/plugin.d.ts +24 -0
- package/dist/plugin.mjs +4 -4
- package/dist/production-runtime-BLxSv9cU.d.ts +79 -0
- package/dist/production-runtime-DFN2_RXq.d.mts +79 -0
- package/dist/query/client.d.mts +61 -0
- package/dist/query/client.d.ts +61 -0
- package/dist/query/index.d.mts +90 -0
- package/dist/query/index.d.ts +90 -0
- package/dist/query/parsers.d.mts +25 -0
- package/dist/query/parsers.d.ts +25 -0
- package/dist/query/server.d.mts +55 -0
- package/dist/query/server.d.ts +55 -0
- package/dist/request-Cq5d6qmE.d.mts +6 -0
- package/dist/request-LoxDW3lp.d.ts +6 -0
- package/dist/request.d.mts +25 -0
- package/dist/request.d.ts +25 -0
- package/dist/resolver-DJqjLMg_.d.mts +14 -0
- package/dist/resolver-IH4RmPEl.d.ts +14 -0
- package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
- package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
- package/dist/router.d.mts +36 -0
- package/dist/router.d.ts +36 -0
- package/dist/routes.d.mts +226 -0
- package/dist/routes.d.ts +226 -0
- package/dist/runtime-BA9TOSu1.d.mts +231 -0
- package/dist/runtime-Cxpq6xZN.d.mts +27 -0
- package/dist/runtime-DTAQ2HDv.d.ts +231 -0
- package/dist/runtime-bv63eUiO.d.ts +27 -0
- package/dist/server-action-security.d.mts +45 -0
- package/dist/server-action-security.d.ts +45 -0
- package/dist/server-fn-client.d.mts +33 -0
- package/dist/server-fn-client.d.ts +33 -0
- package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
- package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
- package/dist/server-fn.d.mts +121 -0
- package/dist/server-fn.d.ts +121 -0
- package/dist/server-plugins.d.mts +57 -0
- package/dist/server-plugins.d.ts +57 -0
- package/dist/server-query-client.d.mts +51 -0
- package/dist/server-query-client.d.ts +51 -0
- package/dist/server-query.d.mts +37 -0
- package/dist/server-query.d.ts +37 -0
- package/dist/server.cjs +170 -3
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.mts +51 -0
- package/dist/server.d.ts +51 -0
- package/dist/server.mjs +6 -6
- package/dist/storage.d.mts +52 -0
- package/dist/storage.d.ts +52 -0
- package/dist/testing.d.mts +103 -0
- package/dist/testing.d.ts +103 -0
- package/dist/transport-BmbGTXA5.d.mts +49 -0
- package/dist/transport-BmbGTXA5.d.ts +49 -0
- package/dist/types-BMxWr97v.d.mts +81 -0
- package/dist/types-BMxWr97v.d.ts +81 -0
- package/dist/types-D1A6-XvH.d.mts +73 -0
- package/dist/types-D1A6-XvH.d.ts +73 -0
- package/dist/types-DTzm4TCl.d.mts +78 -0
- package/dist/types-DTzm4TCl.d.ts +78 -0
- package/dist/utils-B6GaYNJL.d.ts +23 -0
- package/dist/utils-CKSHiip6.d.mts +23 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.mts +3 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +140 -2
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.mts +24 -0
- package/dist/vite.d.ts +24 -0
- package/dist/vite.mjs +4 -4
- package/dist/workflows.d.mts +110 -0
- package/dist/workflows.d.ts +110 -0
- package/package.json +1 -1
- package/types/middleware.d.ts +36 -11
- package/dist/chunk-AN3PQVKH.mjs.map +0 -1
- package/dist/chunk-I4CUBGVF.mjs +0 -93
- package/dist/chunk-I4CUBGVF.mjs.map +0 -1
- package/dist/chunk-OSWV5IJB.mjs.map +0 -1
- package/dist/chunk-T2KL7VEL.mjs.map +0 -1
- package/dist/chunk-UXUAWNO5.mjs.map +0 -1
- /package/dist/{chunk-SLDBGSC3.mjs.map → chunk-JAEAE27K.mjs.map} +0 -0
- /package/dist/{devtools-E4YNCY5J.mjs.map → devtools-K2ERKGNI.mjs.map} +0 -0
package/dist/vite.d.mts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import 'vite';
|
|
2
|
+
export { d as defineConfig, ds as farmI18nClientBridgePlugin, f as farmPlugin, dt as rewriteEarlySsrRelativeImports } from './client-plugins-278AvYHE.mjs';
|
|
3
|
+
import './plugin-BJDf43dc.mjs';
|
|
4
|
+
import 'react';
|
|
5
|
+
import 'http';
|
|
6
|
+
import './types-D1A6-XvH.mjs';
|
|
7
|
+
import 'db0';
|
|
8
|
+
import 'unstorage';
|
|
9
|
+
import './integration-api-CHT2OKAf.mjs';
|
|
10
|
+
import '@farming-labs/orm';
|
|
11
|
+
import './types-DTzm4TCl.mjs';
|
|
12
|
+
import '@farming-labs/docs';
|
|
13
|
+
import './markdown.mjs';
|
|
14
|
+
import './observability.mjs';
|
|
15
|
+
import './workflows.mjs';
|
|
16
|
+
import './cron.mjs';
|
|
17
|
+
import './env.mjs';
|
|
18
|
+
import './server-action-security.mjs';
|
|
19
|
+
import './server-fn-error-DDh14a0V.mjs';
|
|
20
|
+
import './image-config-Duob7wER.mjs';
|
|
21
|
+
import './types-BMxWr97v.mjs';
|
|
22
|
+
import './cache.mjs';
|
|
23
|
+
import './route-runtime-DoOHzCAD.mjs';
|
|
24
|
+
import './font.mjs';
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import 'vite';
|
|
2
|
+
export { d as defineConfig, ds as farmI18nClientBridgePlugin, f as farmPlugin, dt as rewriteEarlySsrRelativeImports } from './client-plugins-CTQAkr7R.js';
|
|
3
|
+
import './plugin-BJDf43dc.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
import 'http';
|
|
6
|
+
import './types-D1A6-XvH.js';
|
|
7
|
+
import 'db0';
|
|
8
|
+
import 'unstorage';
|
|
9
|
+
import './integration-api-CHT2OKAf.js';
|
|
10
|
+
import '@farming-labs/orm';
|
|
11
|
+
import './types-DTzm4TCl.js';
|
|
12
|
+
import '@farming-labs/docs';
|
|
13
|
+
import './markdown.js';
|
|
14
|
+
import './observability.js';
|
|
15
|
+
import './workflows.js';
|
|
16
|
+
import './cron.js';
|
|
17
|
+
import './env.js';
|
|
18
|
+
import './server-action-security.js';
|
|
19
|
+
import './server-fn-error-DDh14a0V.js';
|
|
20
|
+
import './image-config-Duob7wER.js';
|
|
21
|
+
import './types-BMxWr97v.js';
|
|
22
|
+
import './cache.js';
|
|
23
|
+
import './route-runtime-DoOHzCAD.js';
|
|
24
|
+
import './font.js';
|
package/dist/vite.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
farmI18nClientBridgePlugin,
|
|
4
4
|
farmPlugin,
|
|
5
5
|
rewriteEarlySsrRelativeImports
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-T2M5QANG.mjs";
|
|
7
7
|
import "./chunk-LGHEOHBU.mjs";
|
|
8
8
|
import "./chunk-FRPWCMMG.mjs";
|
|
9
9
|
import "./chunk-53MVSX3R.mjs";
|
|
@@ -15,7 +15,7 @@ import "./chunk-USWZZUEH.mjs";
|
|
|
15
15
|
import "./chunk-XMFTIVJH.mjs";
|
|
16
16
|
import "./chunk-7HO6AEOP.mjs";
|
|
17
17
|
import "./chunk-USLFXFFH.mjs";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-E257KFBU.mjs";
|
|
19
19
|
import "./chunk-7MABZJIM.mjs";
|
|
20
20
|
import "./chunk-YW7OBE6Q.mjs";
|
|
21
21
|
import "./chunk-74YTBPTY.mjs";
|
|
@@ -27,9 +27,9 @@ import "./chunk-7FBJLMQH.mjs";
|
|
|
27
27
|
import "./chunk-XIVV5IWN.mjs";
|
|
28
28
|
import "./chunk-GXASWWJU.mjs";
|
|
29
29
|
import "./chunk-K4667E2Q.mjs";
|
|
30
|
+
import "./chunk-T4QJQK76.mjs";
|
|
30
31
|
import "./chunk-MIUW47JX.mjs";
|
|
31
32
|
import "./chunk-P7QDS5AT.mjs";
|
|
32
|
-
import "./chunk-T4QJQK76.mjs";
|
|
33
33
|
import "./chunk-E6EPN5BT.mjs";
|
|
34
34
|
import "./chunk-QGOHVJ6J.mjs";
|
|
35
35
|
import "./chunk-ARRYKOI5.mjs";
|
|
@@ -43,7 +43,7 @@ import "./chunk-J4FNJ5IU.mjs";
|
|
|
43
43
|
import "./chunk-HMRFYJK6.mjs";
|
|
44
44
|
import "./chunk-RHIFZZUI.mjs";
|
|
45
45
|
import "./chunk-LM2YNO4U.mjs";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-VFDBC3W7.mjs";
|
|
47
47
|
import "./chunk-B3FFOIWS.mjs";
|
|
48
48
|
import "./chunk-ITN462YM.mjs";
|
|
49
49
|
import "./chunk-3HIVDX7J.mjs";
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
type FarmWorkflowSchedule = string | string[];
|
|
2
|
+
interface FarmWorkflowsUserConfig {
|
|
3
|
+
/** Enable or disable Farm workflow discovery. Enabled by default. */
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
/** Directory or directories to scan for workflow modules. */
|
|
6
|
+
dir?: string | string[];
|
|
7
|
+
/** Alias for dir. */
|
|
8
|
+
dirs?: string[];
|
|
9
|
+
/** HTTP route used for manual and URL-based cron invocation. */
|
|
10
|
+
route?: string;
|
|
11
|
+
/** Environment variable that stores the optional runner secret. */
|
|
12
|
+
secretEnv?: string;
|
|
13
|
+
/** Inline runner secret. Prefer secretEnv for deployed apps. */
|
|
14
|
+
secret?: string;
|
|
15
|
+
}
|
|
16
|
+
interface FarmWorkflowsResolvedConfig {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
dirs: string[];
|
|
19
|
+
route: string;
|
|
20
|
+
secretEnv: string;
|
|
21
|
+
secret?: string;
|
|
22
|
+
}
|
|
23
|
+
interface FarmWorkflowLogger {
|
|
24
|
+
info: (...args: unknown[]) => void;
|
|
25
|
+
warn: (...args: unknown[]) => void;
|
|
26
|
+
error: (...args: unknown[]) => void;
|
|
27
|
+
}
|
|
28
|
+
interface FarmWorkflowRunContext<TPayload = unknown> {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
payload: TPayload;
|
|
32
|
+
scheduledTime?: number | string;
|
|
33
|
+
request?: Request;
|
|
34
|
+
event?: unknown;
|
|
35
|
+
env: Record<string, string | undefined>;
|
|
36
|
+
data: Map<string, unknown>;
|
|
37
|
+
log: FarmWorkflowLogger;
|
|
38
|
+
}
|
|
39
|
+
interface FarmWorkflowDefinition<TPayload = unknown, TResult = unknown> {
|
|
40
|
+
kind?: "farm-workflow";
|
|
41
|
+
id?: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
schedule?: FarmWorkflowSchedule;
|
|
44
|
+
timezone?: string;
|
|
45
|
+
run: (ctx: FarmWorkflowRunContext<TPayload>) => TResult | Promise<TResult>;
|
|
46
|
+
}
|
|
47
|
+
interface FarmCronDefinition<TPayload = unknown, TResult = unknown> extends FarmWorkflowDefinition<TPayload, TResult> {
|
|
48
|
+
schedule: FarmWorkflowSchedule;
|
|
49
|
+
}
|
|
50
|
+
interface FarmDiscoveredWorkflow {
|
|
51
|
+
id: string;
|
|
52
|
+
filePath: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
schedule: string[];
|
|
55
|
+
timezone?: string;
|
|
56
|
+
routePath: string;
|
|
57
|
+
}
|
|
58
|
+
interface PreparedFarmWorkflows {
|
|
59
|
+
workflows: FarmDiscoveredWorkflow[];
|
|
60
|
+
tasks: Record<string, {
|
|
61
|
+
handler: string;
|
|
62
|
+
description: string;
|
|
63
|
+
}>;
|
|
64
|
+
scheduledTasks: Record<string, string | string[]>;
|
|
65
|
+
handlerPath?: string;
|
|
66
|
+
manifestPath?: string;
|
|
67
|
+
}
|
|
68
|
+
interface FarmWorkflowHTTPHandlerOptions {
|
|
69
|
+
workflows: FarmDiscoveredWorkflow[];
|
|
70
|
+
config: FarmWorkflowsResolvedConfig;
|
|
71
|
+
loadModule: (workflow: FarmDiscoveredWorkflow) => Promise<Record<string, any>>;
|
|
72
|
+
}
|
|
73
|
+
declare const DEFAULT_FARM_WORKFLOW_DIRS: string[];
|
|
74
|
+
declare const DEFAULT_FARM_WORKFLOW_ROUTE = "/api/_farm/workflows";
|
|
75
|
+
declare const DEFAULT_FARM_WORKFLOW_SECRET_ENV = "CRON_SECRET";
|
|
76
|
+
declare function defineWorkflow<const TPayload = unknown, TResult = unknown>(definition: FarmWorkflowDefinition<TPayload, TResult>): FarmWorkflowDefinition<TPayload, TResult>;
|
|
77
|
+
declare function defineTask<const TPayload = unknown, TResult = unknown>(definition: FarmWorkflowDefinition<TPayload, TResult>): FarmWorkflowDefinition<TPayload, TResult>;
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Configure `cron` in `farm.config.ts` and point it at an API route.
|
|
80
|
+
*/
|
|
81
|
+
declare function defineCron<const TPayload = unknown, TResult = unknown>(definition: FarmCronDefinition<TPayload, TResult>): FarmCronDefinition<TPayload, TResult>;
|
|
82
|
+
declare function resolveWorkflowsConfig(workflows: FarmWorkflowsUserConfig | boolean | undefined): FarmWorkflowsResolvedConfig;
|
|
83
|
+
declare function discoverFarmWorkflows(config: {
|
|
84
|
+
root?: string;
|
|
85
|
+
workflows?: FarmWorkflowsResolvedConfig | FarmWorkflowsUserConfig | boolean;
|
|
86
|
+
}, options?: {
|
|
87
|
+
loadModule?: (filePath: string) => Promise<Record<string, any>>;
|
|
88
|
+
}): Promise<FarmDiscoveredWorkflow[]>;
|
|
89
|
+
declare function createFarmWorkflowRequestHandler(options: FarmWorkflowHTTPHandlerOptions): (request: Request) => Promise<Response | null>;
|
|
90
|
+
declare function runFarmWorkflowModule(module: Record<string, any>, context: {
|
|
91
|
+
id: string;
|
|
92
|
+
name?: string;
|
|
93
|
+
payload?: unknown;
|
|
94
|
+
scheduledTime?: number | string;
|
|
95
|
+
request?: Request;
|
|
96
|
+
event?: unknown;
|
|
97
|
+
env?: Record<string, string | undefined>;
|
|
98
|
+
}): Promise<unknown>;
|
|
99
|
+
declare function prepareFarmWorkflowsForNitro(config: {
|
|
100
|
+
root?: string;
|
|
101
|
+
distDir?: string;
|
|
102
|
+
workflows?: FarmWorkflowsResolvedConfig | FarmWorkflowsUserConfig | boolean;
|
|
103
|
+
}): Promise<PreparedFarmWorkflows>;
|
|
104
|
+
declare function createFarmWorkflowVercelCrons(workflows: FarmDiscoveredWorkflow[]): Array<{
|
|
105
|
+
path: string;
|
|
106
|
+
schedule: string;
|
|
107
|
+
}>;
|
|
108
|
+
declare function applyFarmWorkflowVercelCrons(vercelConfig: Record<string, any>, workflows: FarmDiscoveredWorkflow[]): Record<string, any>;
|
|
109
|
+
|
|
110
|
+
export { DEFAULT_FARM_WORKFLOW_DIRS, DEFAULT_FARM_WORKFLOW_ROUTE, DEFAULT_FARM_WORKFLOW_SECRET_ENV, type FarmCronDefinition, type FarmDiscoveredWorkflow, type FarmWorkflowDefinition, type FarmWorkflowHTTPHandlerOptions, type FarmWorkflowLogger, type FarmWorkflowRunContext, type FarmWorkflowSchedule, type FarmWorkflowsResolvedConfig, type FarmWorkflowsUserConfig, type PreparedFarmWorkflows, applyFarmWorkflowVercelCrons, createFarmWorkflowRequestHandler, createFarmWorkflowVercelCrons, defineCron, defineTask, defineWorkflow, discoverFarmWorkflows, prepareFarmWorkflowsForNitro, resolveWorkflowsConfig, runFarmWorkflowModule };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
type FarmWorkflowSchedule = string | string[];
|
|
2
|
+
interface FarmWorkflowsUserConfig {
|
|
3
|
+
/** Enable or disable Farm workflow discovery. Enabled by default. */
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
/** Directory or directories to scan for workflow modules. */
|
|
6
|
+
dir?: string | string[];
|
|
7
|
+
/** Alias for dir. */
|
|
8
|
+
dirs?: string[];
|
|
9
|
+
/** HTTP route used for manual and URL-based cron invocation. */
|
|
10
|
+
route?: string;
|
|
11
|
+
/** Environment variable that stores the optional runner secret. */
|
|
12
|
+
secretEnv?: string;
|
|
13
|
+
/** Inline runner secret. Prefer secretEnv for deployed apps. */
|
|
14
|
+
secret?: string;
|
|
15
|
+
}
|
|
16
|
+
interface FarmWorkflowsResolvedConfig {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
dirs: string[];
|
|
19
|
+
route: string;
|
|
20
|
+
secretEnv: string;
|
|
21
|
+
secret?: string;
|
|
22
|
+
}
|
|
23
|
+
interface FarmWorkflowLogger {
|
|
24
|
+
info: (...args: unknown[]) => void;
|
|
25
|
+
warn: (...args: unknown[]) => void;
|
|
26
|
+
error: (...args: unknown[]) => void;
|
|
27
|
+
}
|
|
28
|
+
interface FarmWorkflowRunContext<TPayload = unknown> {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
payload: TPayload;
|
|
32
|
+
scheduledTime?: number | string;
|
|
33
|
+
request?: Request;
|
|
34
|
+
event?: unknown;
|
|
35
|
+
env: Record<string, string | undefined>;
|
|
36
|
+
data: Map<string, unknown>;
|
|
37
|
+
log: FarmWorkflowLogger;
|
|
38
|
+
}
|
|
39
|
+
interface FarmWorkflowDefinition<TPayload = unknown, TResult = unknown> {
|
|
40
|
+
kind?: "farm-workflow";
|
|
41
|
+
id?: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
schedule?: FarmWorkflowSchedule;
|
|
44
|
+
timezone?: string;
|
|
45
|
+
run: (ctx: FarmWorkflowRunContext<TPayload>) => TResult | Promise<TResult>;
|
|
46
|
+
}
|
|
47
|
+
interface FarmCronDefinition<TPayload = unknown, TResult = unknown> extends FarmWorkflowDefinition<TPayload, TResult> {
|
|
48
|
+
schedule: FarmWorkflowSchedule;
|
|
49
|
+
}
|
|
50
|
+
interface FarmDiscoveredWorkflow {
|
|
51
|
+
id: string;
|
|
52
|
+
filePath: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
schedule: string[];
|
|
55
|
+
timezone?: string;
|
|
56
|
+
routePath: string;
|
|
57
|
+
}
|
|
58
|
+
interface PreparedFarmWorkflows {
|
|
59
|
+
workflows: FarmDiscoveredWorkflow[];
|
|
60
|
+
tasks: Record<string, {
|
|
61
|
+
handler: string;
|
|
62
|
+
description: string;
|
|
63
|
+
}>;
|
|
64
|
+
scheduledTasks: Record<string, string | string[]>;
|
|
65
|
+
handlerPath?: string;
|
|
66
|
+
manifestPath?: string;
|
|
67
|
+
}
|
|
68
|
+
interface FarmWorkflowHTTPHandlerOptions {
|
|
69
|
+
workflows: FarmDiscoveredWorkflow[];
|
|
70
|
+
config: FarmWorkflowsResolvedConfig;
|
|
71
|
+
loadModule: (workflow: FarmDiscoveredWorkflow) => Promise<Record<string, any>>;
|
|
72
|
+
}
|
|
73
|
+
declare const DEFAULT_FARM_WORKFLOW_DIRS: string[];
|
|
74
|
+
declare const DEFAULT_FARM_WORKFLOW_ROUTE = "/api/_farm/workflows";
|
|
75
|
+
declare const DEFAULT_FARM_WORKFLOW_SECRET_ENV = "CRON_SECRET";
|
|
76
|
+
declare function defineWorkflow<const TPayload = unknown, TResult = unknown>(definition: FarmWorkflowDefinition<TPayload, TResult>): FarmWorkflowDefinition<TPayload, TResult>;
|
|
77
|
+
declare function defineTask<const TPayload = unknown, TResult = unknown>(definition: FarmWorkflowDefinition<TPayload, TResult>): FarmWorkflowDefinition<TPayload, TResult>;
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Configure `cron` in `farm.config.ts` and point it at an API route.
|
|
80
|
+
*/
|
|
81
|
+
declare function defineCron<const TPayload = unknown, TResult = unknown>(definition: FarmCronDefinition<TPayload, TResult>): FarmCronDefinition<TPayload, TResult>;
|
|
82
|
+
declare function resolveWorkflowsConfig(workflows: FarmWorkflowsUserConfig | boolean | undefined): FarmWorkflowsResolvedConfig;
|
|
83
|
+
declare function discoverFarmWorkflows(config: {
|
|
84
|
+
root?: string;
|
|
85
|
+
workflows?: FarmWorkflowsResolvedConfig | FarmWorkflowsUserConfig | boolean;
|
|
86
|
+
}, options?: {
|
|
87
|
+
loadModule?: (filePath: string) => Promise<Record<string, any>>;
|
|
88
|
+
}): Promise<FarmDiscoveredWorkflow[]>;
|
|
89
|
+
declare function createFarmWorkflowRequestHandler(options: FarmWorkflowHTTPHandlerOptions): (request: Request) => Promise<Response | null>;
|
|
90
|
+
declare function runFarmWorkflowModule(module: Record<string, any>, context: {
|
|
91
|
+
id: string;
|
|
92
|
+
name?: string;
|
|
93
|
+
payload?: unknown;
|
|
94
|
+
scheduledTime?: number | string;
|
|
95
|
+
request?: Request;
|
|
96
|
+
event?: unknown;
|
|
97
|
+
env?: Record<string, string | undefined>;
|
|
98
|
+
}): Promise<unknown>;
|
|
99
|
+
declare function prepareFarmWorkflowsForNitro(config: {
|
|
100
|
+
root?: string;
|
|
101
|
+
distDir?: string;
|
|
102
|
+
workflows?: FarmWorkflowsResolvedConfig | FarmWorkflowsUserConfig | boolean;
|
|
103
|
+
}): Promise<PreparedFarmWorkflows>;
|
|
104
|
+
declare function createFarmWorkflowVercelCrons(workflows: FarmDiscoveredWorkflow[]): Array<{
|
|
105
|
+
path: string;
|
|
106
|
+
schedule: string;
|
|
107
|
+
}>;
|
|
108
|
+
declare function applyFarmWorkflowVercelCrons(vercelConfig: Record<string, any>, workflows: FarmDiscoveredWorkflow[]): Record<string, any>;
|
|
109
|
+
|
|
110
|
+
export { DEFAULT_FARM_WORKFLOW_DIRS, DEFAULT_FARM_WORKFLOW_ROUTE, DEFAULT_FARM_WORKFLOW_SECRET_ENV, type FarmCronDefinition, type FarmDiscoveredWorkflow, type FarmWorkflowDefinition, type FarmWorkflowHTTPHandlerOptions, type FarmWorkflowLogger, type FarmWorkflowRunContext, type FarmWorkflowSchedule, type FarmWorkflowsResolvedConfig, type FarmWorkflowsUserConfig, type PreparedFarmWorkflows, applyFarmWorkflowVercelCrons, createFarmWorkflowRequestHandler, createFarmWorkflowVercelCrons, defineCron, defineTask, defineWorkflow, discoverFarmWorkflows, prepareFarmWorkflowsForNitro, resolveWorkflowsConfig, runFarmWorkflowModule };
|
package/package.json
CHANGED
package/types/middleware.d.ts
CHANGED
|
@@ -136,11 +136,13 @@ declare module "@farm.js/core/middleware" {
|
|
|
136
136
|
*/
|
|
137
137
|
export interface RateLimitConfig {
|
|
138
138
|
/** Maximum number of requests */
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
|
|
139
|
+
requests: number;
|
|
140
|
+
/** Fixed window such as `500ms`, `10s`, `1m`, or `1h`. */
|
|
141
|
+
window: string;
|
|
142
142
|
/** Optional custom key generator */
|
|
143
143
|
keyGenerator?: (ctx: MiddlewareContext) => string;
|
|
144
|
+
/** Optional response customization when the limit is exceeded. */
|
|
145
|
+
onLimit?: (ctx: MiddlewareContext) => void | Response | Promise<void | Response>;
|
|
144
146
|
/** Optional custom storage */
|
|
145
147
|
storage?: RateLimitStorage;
|
|
146
148
|
}
|
|
@@ -148,19 +150,33 @@ declare module "@farm.js/core/middleware" {
|
|
|
148
150
|
/**
|
|
149
151
|
* Rate limit storage interface
|
|
150
152
|
*/
|
|
153
|
+
export interface RateLimitIncrementResult {
|
|
154
|
+
count: number;
|
|
155
|
+
resetAt: number;
|
|
156
|
+
}
|
|
157
|
+
|
|
151
158
|
export interface RateLimitStorage {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
increment(
|
|
160
|
+
key: string,
|
|
161
|
+
windowMs: number,
|
|
162
|
+
): RateLimitIncrementResult | Promise<RateLimitIncrementResult>;
|
|
163
|
+
get?(key: string): RateLimitIncrementResult | null | Promise<RateLimitIncrementResult | null>;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface MemoryRateLimitStorageOptions {
|
|
167
|
+
maxEntries?: number;
|
|
155
168
|
}
|
|
156
169
|
|
|
157
170
|
/**
|
|
158
171
|
* Rate limit status
|
|
159
172
|
*/
|
|
160
173
|
export interface RateLimitStatus {
|
|
174
|
+
requests: number;
|
|
175
|
+
limit: number;
|
|
161
176
|
remaining: number;
|
|
162
|
-
|
|
163
|
-
|
|
177
|
+
resetIn: number | null;
|
|
178
|
+
resetAt: Date | null;
|
|
179
|
+
isLimited: boolean;
|
|
164
180
|
}
|
|
165
181
|
|
|
166
182
|
/**
|
|
@@ -206,12 +222,21 @@ declare module "@farm.js/core/middleware" {
|
|
|
206
222
|
/**
|
|
207
223
|
* Create a new middleware chain
|
|
208
224
|
*/
|
|
209
|
-
export function middleware(
|
|
225
|
+
export function middleware(basePath?: string): MiddlewareChain;
|
|
210
226
|
|
|
211
227
|
/**
|
|
212
|
-
* Get rate limit status for
|
|
228
|
+
* Get rate limit status for a key
|
|
213
229
|
*/
|
|
214
|
-
export function getRateLimitStatus(
|
|
230
|
+
export function getRateLimitStatus(
|
|
231
|
+
key: string,
|
|
232
|
+
limit: number,
|
|
233
|
+
storage?: RateLimitStorage,
|
|
234
|
+
): Promise<RateLimitStatus>;
|
|
235
|
+
|
|
236
|
+
/** Create an atomic, process-local fixed-window rate-limit store. */
|
|
237
|
+
export function memoryRateLimitStorage(options?: MemoryRateLimitStorageOptions): RateLimitStorage;
|
|
238
|
+
|
|
239
|
+
export class UnsupportedRateLimitStorageError extends TypeError {}
|
|
215
240
|
|
|
216
241
|
/**
|
|
217
242
|
* Create a middleware context from request/response
|