@tanstack/workflow-netlify 0.0.1 → 0.0.2
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 +3 -6
- package/dist/index.cjs +1 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/sweep-handler.cjs +0 -10
- package/dist/sweep-handler.cjs.map +1 -1
- package/dist/sweep-handler.d.cts +1 -10
- package/dist/sweep-handler.d.ts +1 -10
- package/dist/sweep-handler.js +1 -9
- package/dist/sweep-handler.js.map +1 -1
- package/package.json +4 -1
- package/src/index.ts +1 -4
- package/src/sweep-handler.ts +0 -30
package/README.md
CHANGED
|
@@ -12,19 +12,16 @@ timers.
|
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
14
|
// netlify/functions/workflow-sweep-background.ts
|
|
15
|
-
import {
|
|
16
|
-
createNetlifyWorkflowSweepConfig,
|
|
17
|
-
createNetlifyWorkflowSweepHandler,
|
|
18
|
-
} from '@tanstack/workflow-netlify'
|
|
15
|
+
import { createNetlifyWorkflowSweepHandler } from '@tanstack/workflow-netlify'
|
|
19
16
|
import { workflowRuntime } from '../../src/workflows/runtime.server'
|
|
20
17
|
|
|
21
18
|
export default createNetlifyWorkflowSweepHandler({
|
|
22
19
|
runtime: workflowRuntime,
|
|
23
20
|
})
|
|
24
21
|
|
|
25
|
-
export const config =
|
|
22
|
+
export const config = {
|
|
26
23
|
schedule: '*/5 * * * *',
|
|
27
|
-
}
|
|
24
|
+
}
|
|
28
25
|
```
|
|
29
26
|
|
|
30
27
|
Workflow schedules stay in the runtime registration:
|
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,5 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
const require_sweep_handler = require('./sweep-handler.cjs');
|
|
3
3
|
let _tanstack_workflow_runtime = require("@tanstack/workflow-runtime");
|
|
4
4
|
|
|
5
|
-
exports.createNetlifyWorkflowSweepConfig = require_sweep_handler.createNetlifyWorkflowSweepConfig;
|
|
6
5
|
exports.createNetlifyWorkflowSweepHandler = require_sweep_handler.createNetlifyWorkflowSweepHandler;
|
|
7
|
-
exports.materializeWorkflowSchedules = _tanstack_workflow_runtime.materializeWorkflowSchedules;
|
|
8
|
-
exports.netlifyWorkflowSweepConfig = require_sweep_handler.netlifyWorkflowSweepConfig;
|
|
6
|
+
exports.materializeWorkflowSchedules = _tanstack_workflow_runtime.materializeWorkflowSchedules;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule,
|
|
2
|
-
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule, type
|
|
1
|
+
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule, NetlifyWorkflowSweepHandler, NetlifyWorkflowSweepHandlerOptions, NetlifyWorkflowSweepResponse, NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules } from "./sweep-handler.cjs";
|
|
2
|
+
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule, type NetlifyWorkflowSweepHandler, type NetlifyWorkflowSweepHandlerOptions, type NetlifyWorkflowSweepResponse, type NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule,
|
|
2
|
-
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule, type
|
|
1
|
+
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule, NetlifyWorkflowSweepHandler, NetlifyWorkflowSweepHandlerOptions, NetlifyWorkflowSweepResponse, NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules } from "./sweep-handler.js";
|
|
2
|
+
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule, type NetlifyWorkflowSweepHandler, type NetlifyWorkflowSweepHandlerOptions, type NetlifyWorkflowSweepResponse, type NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules } from "./sweep-handler.js";
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
package/dist/sweep-handler.cjs
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
let _tanstack_workflow_runtime = require("@tanstack/workflow-runtime");
|
|
2
2
|
|
|
3
3
|
//#region src/sweep-handler.ts
|
|
4
|
-
const DEFAULT_SWEEP_INTERVAL_MINUTES = 5;
|
|
5
|
-
const netlifyWorkflowSweepConfig = createNetlifyWorkflowSweepConfig();
|
|
6
|
-
function createNetlifyWorkflowSweepConfig(options = {}) {
|
|
7
|
-
if (options.schedule) return { schedule: options.schedule };
|
|
8
|
-
const everyMinutes = options.everyMinutes ?? DEFAULT_SWEEP_INTERVAL_MINUTES;
|
|
9
|
-
if (!Number.isInteger(everyMinutes) || everyMinutes <= 0) throw new Error("Netlify workflow sweep interval must be a positive integer.");
|
|
10
|
-
return { schedule: everyMinutes === 1 ? "* * * * *" : `*/${everyMinutes} * * * *` };
|
|
11
|
-
}
|
|
12
4
|
function createNetlifyWorkflowSweepHandler(options) {
|
|
13
5
|
return async (request) => {
|
|
14
6
|
const now = options.now?.() ?? Date.now();
|
|
@@ -58,7 +50,5 @@ function defaultLeaseOwner(request, now) {
|
|
|
58
50
|
}
|
|
59
51
|
|
|
60
52
|
//#endregion
|
|
61
|
-
exports.createNetlifyWorkflowSweepConfig = createNetlifyWorkflowSweepConfig;
|
|
62
53
|
exports.createNetlifyWorkflowSweepHandler = createNetlifyWorkflowSweepHandler;
|
|
63
|
-
exports.netlifyWorkflowSweepConfig = netlifyWorkflowSweepConfig;
|
|
64
54
|
//# sourceMappingURL=sweep-handler.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep-handler.cjs","names":[],"sources":["../src/sweep-handler.ts"],"sourcesContent":["import { materializeWorkflowSchedules } from '@tanstack/workflow-runtime'\nimport type {\n MaterializedWorkflowSchedule,\n WorkflowRegistrationMap,\n WorkflowRuntimeDefinition,\n WorkflowRuntimeSweepArgs,\n WorkflowRuntimeSweepResult,\n} from '@tanstack/workflow-runtime'\n\
|
|
1
|
+
{"version":3,"file":"sweep-handler.cjs","names":[],"sources":["../src/sweep-handler.ts"],"sourcesContent":["import { materializeWorkflowSchedules } from '@tanstack/workflow-runtime'\nimport type {\n MaterializedWorkflowSchedule,\n WorkflowRegistrationMap,\n WorkflowRuntimeDefinition,\n WorkflowRuntimeSweepArgs,\n WorkflowRuntimeSweepResult,\n} from '@tanstack/workflow-runtime'\n\nexport { materializeWorkflowSchedules }\nexport type {\n MaterializedWorkflowSchedule,\n MaterializeWorkflowSchedulesOptions,\n} from '@tanstack/workflow-runtime'\n\nexport interface NetlifyWorkflowSweepResponse {\n ok: true\n now: number\n leaseOwner: string\n materialized: ReadonlyArray<MaterializedWorkflowSchedule>\n summary: NetlifyWorkflowSweepSummary\n deadlineReached: boolean\n remainingMayExist: boolean\n sweep?: WorkflowRuntimeSweepResult\n}\n\nexport type NetlifyWorkflowSweepSummary =\n WorkflowRuntimeSweepResult['summary'] & {\n materialized: number\n }\n\nexport type NetlifyWorkflowSweepHandler = (\n request: Request,\n) => Promise<Response>\n\nexport interface NetlifyWorkflowSweepHandlerOptions<\n TWorkflows extends WorkflowRegistrationMap = WorkflowRegistrationMap,\n> {\n runtime: WorkflowRuntimeDefinition<TWorkflows>\n now?: () => number\n leaseOwner?:\n | string\n | ((args: { request: Request; now: number }) => string | undefined)\n limit?: number\n maxScheduledRuns?: number\n maxTimers?: number\n maxDurationMs?: number\n leaseMs?: number\n includeEvents?: boolean\n maxEvents?: number\n includeSweepResult?: boolean\n materializeSchedules?: boolean\n cronLookbackMs?: number\n}\n\nexport function createNetlifyWorkflowSweepHandler<\n TWorkflows extends WorkflowRegistrationMap,\n>(\n options: NetlifyWorkflowSweepHandlerOptions<TWorkflows>,\n): NetlifyWorkflowSweepHandler {\n return async (request) => {\n const now = options.now?.() ?? Date.now()\n const materialized =\n options.materializeSchedules === false\n ? []\n : await materializeWorkflowSchedules(options.runtime, {\n now,\n cronLookbackMs: options.cronLookbackMs,\n })\n const leaseOwner = resolveLeaseOwner(options.leaseOwner, request, now)\n const sweepArgs: WorkflowRuntimeSweepArgs = {\n now,\n leaseOwner,\n limit: options.limit,\n maxScheduledRuns: options.maxScheduledRuns,\n maxTimers: options.maxTimers,\n maxDurationMs: options.maxDurationMs,\n leaseMs: options.leaseMs,\n includeEvents: options.includeEvents ?? false,\n maxEvents: options.maxEvents,\n }\n const sweep = await options.runtime.sweep(sweepArgs)\n const response: NetlifyWorkflowSweepResponse = {\n ok: true,\n now,\n leaseOwner,\n materialized,\n summary: {\n materialized: materialized.length,\n ...sweep.summary,\n },\n deadlineReached: sweep.deadlineReached,\n remainingMayExist: sweep.remainingMayExist,\n ...(options.includeSweepResult ? { sweep } : undefined),\n }\n\n return Response.json(response)\n }\n}\n\nfunction resolveLeaseOwner(\n leaseOwner: NetlifyWorkflowSweepHandlerOptions['leaseOwner'],\n request: Request,\n now: number,\n) {\n if (typeof leaseOwner === 'string') return leaseOwner\n if (typeof leaseOwner === 'function') {\n return leaseOwner({ request, now }) ?? defaultLeaseOwner(request, now)\n }\n return defaultLeaseOwner(request, now)\n}\n\nfunction defaultLeaseOwner(request: Request, now: number) {\n return `netlify:${request.headers.get('x-nf-request-id') ?? now}`\n}\n"],"mappings":";;;AAuDA,SAAgB,kCAGd,SAC6B;AAC7B,QAAO,OAAO,YAAY;EACxB,MAAM,MAAM,QAAQ,OAAO,IAAI,KAAK,KAAK;EACzC,MAAM,eACJ,QAAQ,yBAAyB,QAC7B,EAAE,GACF,mEAAmC,QAAQ,SAAS;GAClD;GACA,gBAAgB,QAAQ;GACzB,CAAC;EACR,MAAM,aAAa,kBAAkB,QAAQ,YAAY,SAAS,IAAI;EACtE,MAAM,YAAsC;GAC1C;GACA;GACA,OAAO,QAAQ;GACf,kBAAkB,QAAQ;GAC1B,WAAW,QAAQ;GACnB,eAAe,QAAQ;GACvB,SAAS,QAAQ;GACjB,eAAe,QAAQ,iBAAiB;GACxC,WAAW,QAAQ;GACpB;EACD,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,UAAU;EACpD,MAAM,WAAyC;GAC7C,IAAI;GACJ;GACA;GACA;GACA,SAAS;IACP,cAAc,aAAa;IAC3B,GAAG,MAAM;IACV;GACD,iBAAiB,MAAM;GACvB,mBAAmB,MAAM;GACzB,GAAI,QAAQ,qBAAqB,EAAE,OAAO,GAAG;GAC9C;AAED,SAAO,SAAS,KAAK,SAAS;;;AAIlC,SAAS,kBACP,YACA,SACA,KACA;AACA,KAAI,OAAO,eAAe,SAAU,QAAO;AAC3C,KAAI,OAAO,eAAe,WACxB,QAAO,WAAW;EAAE;EAAS;EAAK,CAAC,IAAI,kBAAkB,SAAS,IAAI;AAExE,QAAO,kBAAkB,SAAS,IAAI;;AAGxC,SAAS,kBAAkB,SAAkB,KAAa;AACxD,QAAO,WAAW,QAAQ,QAAQ,IAAI,kBAAkB,IAAI"}
|
package/dist/sweep-handler.d.cts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule, MaterializedWorkflowSchedule as MaterializedWorkflowSchedule$1, WorkflowRegistrationMap, WorkflowRuntimeDefinition, WorkflowRuntimeSweepResult, materializeWorkflowSchedules } from "@tanstack/workflow-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/sweep-handler.d.ts
|
|
4
|
-
interface NetlifyWorkflowSweepConfig {
|
|
5
|
-
schedule: string;
|
|
6
|
-
}
|
|
7
|
-
interface NetlifyWorkflowSweepConfigOptions {
|
|
8
|
-
schedule?: string;
|
|
9
|
-
everyMinutes?: number;
|
|
10
|
-
}
|
|
11
4
|
interface NetlifyWorkflowSweepResponse {
|
|
12
5
|
ok: true;
|
|
13
6
|
now: number;
|
|
@@ -40,9 +33,7 @@ interface NetlifyWorkflowSweepHandlerOptions<TWorkflows extends WorkflowRegistra
|
|
|
40
33
|
materializeSchedules?: boolean;
|
|
41
34
|
cronLookbackMs?: number;
|
|
42
35
|
}
|
|
43
|
-
declare const netlifyWorkflowSweepConfig: NetlifyWorkflowSweepConfig;
|
|
44
|
-
declare function createNetlifyWorkflowSweepConfig(options?: NetlifyWorkflowSweepConfigOptions): NetlifyWorkflowSweepConfig;
|
|
45
36
|
declare function createNetlifyWorkflowSweepHandler<TWorkflows extends WorkflowRegistrationMap>(options: NetlifyWorkflowSweepHandlerOptions<TWorkflows>): NetlifyWorkflowSweepHandler;
|
|
46
37
|
//#endregion
|
|
47
|
-
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule$1 as MaterializedWorkflowSchedule,
|
|
38
|
+
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule$1 as MaterializedWorkflowSchedule, NetlifyWorkflowSweepHandler, NetlifyWorkflowSweepHandlerOptions, NetlifyWorkflowSweepResponse, NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
|
48
39
|
//# sourceMappingURL=sweep-handler.d.cts.map
|
package/dist/sweep-handler.d.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { MaterializeWorkflowSchedulesOptions, MaterializedWorkflowSchedule, MaterializedWorkflowSchedule as MaterializedWorkflowSchedule$1, WorkflowRegistrationMap, WorkflowRuntimeDefinition, WorkflowRuntimeSweepResult, materializeWorkflowSchedules } from "@tanstack/workflow-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/sweep-handler.d.ts
|
|
4
|
-
interface NetlifyWorkflowSweepConfig {
|
|
5
|
-
schedule: string;
|
|
6
|
-
}
|
|
7
|
-
interface NetlifyWorkflowSweepConfigOptions {
|
|
8
|
-
schedule?: string;
|
|
9
|
-
everyMinutes?: number;
|
|
10
|
-
}
|
|
11
4
|
interface NetlifyWorkflowSweepResponse {
|
|
12
5
|
ok: true;
|
|
13
6
|
now: number;
|
|
@@ -40,9 +33,7 @@ interface NetlifyWorkflowSweepHandlerOptions<TWorkflows extends WorkflowRegistra
|
|
|
40
33
|
materializeSchedules?: boolean;
|
|
41
34
|
cronLookbackMs?: number;
|
|
42
35
|
}
|
|
43
|
-
declare const netlifyWorkflowSweepConfig: NetlifyWorkflowSweepConfig;
|
|
44
|
-
declare function createNetlifyWorkflowSweepConfig(options?: NetlifyWorkflowSweepConfigOptions): NetlifyWorkflowSweepConfig;
|
|
45
36
|
declare function createNetlifyWorkflowSweepHandler<TWorkflows extends WorkflowRegistrationMap>(options: NetlifyWorkflowSweepHandlerOptions<TWorkflows>): NetlifyWorkflowSweepHandler;
|
|
46
37
|
//#endregion
|
|
47
|
-
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule$1 as MaterializedWorkflowSchedule,
|
|
38
|
+
export { type MaterializeWorkflowSchedulesOptions, type MaterializedWorkflowSchedule$1 as MaterializedWorkflowSchedule, NetlifyWorkflowSweepHandler, NetlifyWorkflowSweepHandlerOptions, NetlifyWorkflowSweepResponse, NetlifyWorkflowSweepSummary, createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
|
48
39
|
//# sourceMappingURL=sweep-handler.d.ts.map
|
package/dist/sweep-handler.js
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { materializeWorkflowSchedules } from "@tanstack/workflow-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/sweep-handler.ts
|
|
4
|
-
const DEFAULT_SWEEP_INTERVAL_MINUTES = 5;
|
|
5
|
-
const netlifyWorkflowSweepConfig = createNetlifyWorkflowSweepConfig();
|
|
6
|
-
function createNetlifyWorkflowSweepConfig(options = {}) {
|
|
7
|
-
if (options.schedule) return { schedule: options.schedule };
|
|
8
|
-
const everyMinutes = options.everyMinutes ?? DEFAULT_SWEEP_INTERVAL_MINUTES;
|
|
9
|
-
if (!Number.isInteger(everyMinutes) || everyMinutes <= 0) throw new Error("Netlify workflow sweep interval must be a positive integer.");
|
|
10
|
-
return { schedule: everyMinutes === 1 ? "* * * * *" : `*/${everyMinutes} * * * *` };
|
|
11
|
-
}
|
|
12
4
|
function createNetlifyWorkflowSweepHandler(options) {
|
|
13
5
|
return async (request) => {
|
|
14
6
|
const now = options.now?.() ?? Date.now();
|
|
@@ -58,5 +50,5 @@ function defaultLeaseOwner(request, now) {
|
|
|
58
50
|
}
|
|
59
51
|
|
|
60
52
|
//#endregion
|
|
61
|
-
export {
|
|
53
|
+
export { createNetlifyWorkflowSweepHandler, materializeWorkflowSchedules };
|
|
62
54
|
//# sourceMappingURL=sweep-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep-handler.js","names":[],"sources":["../src/sweep-handler.ts"],"sourcesContent":["import { materializeWorkflowSchedules } from '@tanstack/workflow-runtime'\nimport type {\n MaterializedWorkflowSchedule,\n WorkflowRegistrationMap,\n WorkflowRuntimeDefinition,\n WorkflowRuntimeSweepArgs,\n WorkflowRuntimeSweepResult,\n} from '@tanstack/workflow-runtime'\n\
|
|
1
|
+
{"version":3,"file":"sweep-handler.js","names":[],"sources":["../src/sweep-handler.ts"],"sourcesContent":["import { materializeWorkflowSchedules } from '@tanstack/workflow-runtime'\nimport type {\n MaterializedWorkflowSchedule,\n WorkflowRegistrationMap,\n WorkflowRuntimeDefinition,\n WorkflowRuntimeSweepArgs,\n WorkflowRuntimeSweepResult,\n} from '@tanstack/workflow-runtime'\n\nexport { materializeWorkflowSchedules }\nexport type {\n MaterializedWorkflowSchedule,\n MaterializeWorkflowSchedulesOptions,\n} from '@tanstack/workflow-runtime'\n\nexport interface NetlifyWorkflowSweepResponse {\n ok: true\n now: number\n leaseOwner: string\n materialized: ReadonlyArray<MaterializedWorkflowSchedule>\n summary: NetlifyWorkflowSweepSummary\n deadlineReached: boolean\n remainingMayExist: boolean\n sweep?: WorkflowRuntimeSweepResult\n}\n\nexport type NetlifyWorkflowSweepSummary =\n WorkflowRuntimeSweepResult['summary'] & {\n materialized: number\n }\n\nexport type NetlifyWorkflowSweepHandler = (\n request: Request,\n) => Promise<Response>\n\nexport interface NetlifyWorkflowSweepHandlerOptions<\n TWorkflows extends WorkflowRegistrationMap = WorkflowRegistrationMap,\n> {\n runtime: WorkflowRuntimeDefinition<TWorkflows>\n now?: () => number\n leaseOwner?:\n | string\n | ((args: { request: Request; now: number }) => string | undefined)\n limit?: number\n maxScheduledRuns?: number\n maxTimers?: number\n maxDurationMs?: number\n leaseMs?: number\n includeEvents?: boolean\n maxEvents?: number\n includeSweepResult?: boolean\n materializeSchedules?: boolean\n cronLookbackMs?: number\n}\n\nexport function createNetlifyWorkflowSweepHandler<\n TWorkflows extends WorkflowRegistrationMap,\n>(\n options: NetlifyWorkflowSweepHandlerOptions<TWorkflows>,\n): NetlifyWorkflowSweepHandler {\n return async (request) => {\n const now = options.now?.() ?? Date.now()\n const materialized =\n options.materializeSchedules === false\n ? []\n : await materializeWorkflowSchedules(options.runtime, {\n now,\n cronLookbackMs: options.cronLookbackMs,\n })\n const leaseOwner = resolveLeaseOwner(options.leaseOwner, request, now)\n const sweepArgs: WorkflowRuntimeSweepArgs = {\n now,\n leaseOwner,\n limit: options.limit,\n maxScheduledRuns: options.maxScheduledRuns,\n maxTimers: options.maxTimers,\n maxDurationMs: options.maxDurationMs,\n leaseMs: options.leaseMs,\n includeEvents: options.includeEvents ?? false,\n maxEvents: options.maxEvents,\n }\n const sweep = await options.runtime.sweep(sweepArgs)\n const response: NetlifyWorkflowSweepResponse = {\n ok: true,\n now,\n leaseOwner,\n materialized,\n summary: {\n materialized: materialized.length,\n ...sweep.summary,\n },\n deadlineReached: sweep.deadlineReached,\n remainingMayExist: sweep.remainingMayExist,\n ...(options.includeSweepResult ? { sweep } : undefined),\n }\n\n return Response.json(response)\n }\n}\n\nfunction resolveLeaseOwner(\n leaseOwner: NetlifyWorkflowSweepHandlerOptions['leaseOwner'],\n request: Request,\n now: number,\n) {\n if (typeof leaseOwner === 'string') return leaseOwner\n if (typeof leaseOwner === 'function') {\n return leaseOwner({ request, now }) ?? defaultLeaseOwner(request, now)\n }\n return defaultLeaseOwner(request, now)\n}\n\nfunction defaultLeaseOwner(request: Request, now: number) {\n return `netlify:${request.headers.get('x-nf-request-id') ?? now}`\n}\n"],"mappings":";;;AAuDA,SAAgB,kCAGd,SAC6B;AAC7B,QAAO,OAAO,YAAY;EACxB,MAAM,MAAM,QAAQ,OAAO,IAAI,KAAK,KAAK;EACzC,MAAM,eACJ,QAAQ,yBAAyB,QAC7B,EAAE,GACF,MAAM,6BAA6B,QAAQ,SAAS;GAClD;GACA,gBAAgB,QAAQ;GACzB,CAAC;EACR,MAAM,aAAa,kBAAkB,QAAQ,YAAY,SAAS,IAAI;EACtE,MAAM,YAAsC;GAC1C;GACA;GACA,OAAO,QAAQ;GACf,kBAAkB,QAAQ;GAC1B,WAAW,QAAQ;GACnB,eAAe,QAAQ;GACvB,SAAS,QAAQ;GACjB,eAAe,QAAQ,iBAAiB;GACxC,WAAW,QAAQ;GACpB;EACD,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,UAAU;EACpD,MAAM,WAAyC;GAC7C,IAAI;GACJ;GACA;GACA;GACA,SAAS;IACP,cAAc,aAAa;IAC3B,GAAG,MAAM;IACV;GACD,iBAAiB,MAAM;GACvB,mBAAmB,MAAM;GACzB,GAAI,QAAQ,qBAAqB,EAAE,OAAO,GAAG;GAC9C;AAED,SAAO,SAAS,KAAK,SAAS;;;AAIlC,SAAS,kBACP,YACA,SACA,KACA;AACA,KAAI,OAAO,eAAe,SAAU,QAAO;AAC3C,KAAI,OAAO,eAAe,WACxB,QAAO,WAAW;EAAE;EAAS;EAAK,CAAC,IAAI,kBAAkB,SAAS,IAAI;AAExE,QAAO,kBAAkB,SAAS,IAAI;;AAGxC,SAAS,kBAAkB,SAAkB,KAAa;AACxD,QAAO,WAAW,QAAQ,QAAQ,IAAI,kBAAkB,IAAI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/workflow-netlify",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Netlify host adapter for TanStack Workflow runtimes.",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,5 +52,8 @@
|
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@tanstack/workflow-runtime": "workspace:*"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@tanstack/workflow-core": "workspace:*"
|
|
55
58
|
}
|
|
56
59
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
export {
|
|
2
|
-
createNetlifyWorkflowSweepConfig,
|
|
3
2
|
createNetlifyWorkflowSweepHandler,
|
|
4
3
|
materializeWorkflowSchedules,
|
|
5
|
-
netlifyWorkflowSweepConfig,
|
|
6
4
|
} from './sweep-handler'
|
|
7
5
|
export type {
|
|
8
6
|
MaterializedWorkflowSchedule,
|
|
9
7
|
MaterializeWorkflowSchedulesOptions,
|
|
10
|
-
NetlifyWorkflowSweepConfig,
|
|
11
|
-
NetlifyWorkflowSweepConfigOptions,
|
|
12
8
|
NetlifyWorkflowSweepHandler,
|
|
13
9
|
NetlifyWorkflowSweepHandlerOptions,
|
|
14
10
|
NetlifyWorkflowSweepResponse,
|
|
11
|
+
NetlifyWorkflowSweepSummary,
|
|
15
12
|
} from './sweep-handler'
|
package/src/sweep-handler.ts
CHANGED
|
@@ -7,23 +7,12 @@ import type {
|
|
|
7
7
|
WorkflowRuntimeSweepResult,
|
|
8
8
|
} from '@tanstack/workflow-runtime'
|
|
9
9
|
|
|
10
|
-
const DEFAULT_SWEEP_INTERVAL_MINUTES = 5
|
|
11
|
-
|
|
12
10
|
export { materializeWorkflowSchedules }
|
|
13
11
|
export type {
|
|
14
12
|
MaterializedWorkflowSchedule,
|
|
15
13
|
MaterializeWorkflowSchedulesOptions,
|
|
16
14
|
} from '@tanstack/workflow-runtime'
|
|
17
15
|
|
|
18
|
-
export interface NetlifyWorkflowSweepConfig {
|
|
19
|
-
schedule: string
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface NetlifyWorkflowSweepConfigOptions {
|
|
23
|
-
schedule?: string
|
|
24
|
-
everyMinutes?: number
|
|
25
|
-
}
|
|
26
|
-
|
|
27
16
|
export interface NetlifyWorkflowSweepResponse {
|
|
28
17
|
ok: true
|
|
29
18
|
now: number
|
|
@@ -64,25 +53,6 @@ export interface NetlifyWorkflowSweepHandlerOptions<
|
|
|
64
53
|
cronLookbackMs?: number
|
|
65
54
|
}
|
|
66
55
|
|
|
67
|
-
export const netlifyWorkflowSweepConfig = createNetlifyWorkflowSweepConfig()
|
|
68
|
-
|
|
69
|
-
export function createNetlifyWorkflowSweepConfig(
|
|
70
|
-
options: NetlifyWorkflowSweepConfigOptions = {},
|
|
71
|
-
): NetlifyWorkflowSweepConfig {
|
|
72
|
-
if (options.schedule) return { schedule: options.schedule }
|
|
73
|
-
|
|
74
|
-
const everyMinutes = options.everyMinutes ?? DEFAULT_SWEEP_INTERVAL_MINUTES
|
|
75
|
-
if (!Number.isInteger(everyMinutes) || everyMinutes <= 0) {
|
|
76
|
-
throw new Error(
|
|
77
|
-
'Netlify workflow sweep interval must be a positive integer.',
|
|
78
|
-
)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return {
|
|
82
|
-
schedule: everyMinutes === 1 ? '* * * * *' : `*/${everyMinutes} * * * *`,
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
56
|
export function createNetlifyWorkflowSweepHandler<
|
|
87
57
|
TWorkflows extends WorkflowRegistrationMap,
|
|
88
58
|
>(
|