@run402/functions 3.5.4 → 3.5.5

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 CHANGED
@@ -368,7 +368,7 @@ Runtime route failure codes to branch on: `ROUTE_MANIFEST_LOAD_FAILED` (manifest
368
368
 
369
369
  ## Scheduled functions
370
370
 
371
- Run402 Cloud and Run402 Core both use the existing release manifest `functions.replace.<name>.schedule` field for cron-style functions. In Core Developer Preview this is a single-node gateway scheduler, not a managed distributed jobs system.
371
+ Run402 Cloud and Run402 Core both use the existing release manifest `functions.replace.<name>.schedule` field for cron-style functions. In Run402 Core this is a single-node gateway scheduler, not a managed distributed jobs system.
372
372
 
373
373
  Scheduled functions receive the same Fetch `Request` shape as routed functions. The request is a synthetic `POST` with `X-Run402-Trigger: cron` for wall-clock ticks, or `X-Run402-Trigger: manual` when a Core agent calls the service-key testing hook. The JSON body contains `trigger` and `scheduled_at`.
374
374
 
@@ -0,0 +1,170 @@
1
+ export type FunctionRunStatus = "scheduled" | "queued" | "running" | "retrying" | "blocked" | "succeeded" | "failed" | "cancelled" | "expired";
2
+ export interface FunctionRunAttemptEnvelope {
3
+ attempt_id: string;
4
+ number: number;
5
+ max: number;
6
+ }
7
+ export interface FunctionRunSource {
8
+ type: string;
9
+ [key: string]: unknown;
10
+ }
11
+ export interface FunctionRunEnvelope<Payload extends Record<string, unknown> = Record<string, unknown>> {
12
+ trigger: "function_run";
13
+ run_id: string;
14
+ generation: number;
15
+ event_type: string;
16
+ idempotency_key: string;
17
+ run_at: string;
18
+ attempt: FunctionRunAttemptEnvelope;
19
+ source: FunctionRunSource;
20
+ payload: Payload;
21
+ }
22
+ export interface FunctionRunHandle {
23
+ run_id: string;
24
+ function_name: string;
25
+ event_type: string;
26
+ status: FunctionRunStatus;
27
+ terminal: boolean;
28
+ generation: number;
29
+ run_at: string;
30
+ expires_at?: string;
31
+ source: Record<string, unknown>;
32
+ attempts: {
33
+ current: number;
34
+ max: number;
35
+ total: number;
36
+ next_attempt_at?: string;
37
+ };
38
+ last_attempt?: {
39
+ attempt_id: string;
40
+ number: number;
41
+ started_at?: string;
42
+ completed_at?: string;
43
+ duration_ms?: number;
44
+ response_status?: number;
45
+ error?: FunctionRunErrorInfo;
46
+ };
47
+ last_error?: FunctionRunErrorInfo;
48
+ created_at: string;
49
+ updated_at: string;
50
+ completed_at?: string;
51
+ deduplicated?: boolean;
52
+ next_actions: Array<Record<string, unknown>>;
53
+ }
54
+ export interface FunctionRunErrorInfo {
55
+ code: string;
56
+ message: string;
57
+ retryable: boolean;
58
+ }
59
+ export interface FunctionRunRetryPolicy {
60
+ preset?: "standard" | string;
61
+ maxAttempts?: number;
62
+ max_attempts?: number;
63
+ minDelaySeconds?: number;
64
+ min_delay_seconds?: number;
65
+ maxDelaySeconds?: number;
66
+ max_delay_seconds?: number;
67
+ [key: string]: unknown;
68
+ }
69
+ export interface FunctionRunCreateOptions<Payload extends Record<string, unknown> = Record<string, unknown>> {
70
+ eventType: string;
71
+ payload?: Payload;
72
+ idempotencyKey?: string;
73
+ runAt?: string | Date;
74
+ delay?: string | number;
75
+ delaySeconds?: number;
76
+ expiresAt?: string | Date;
77
+ expiresAfter?: string | number;
78
+ retry?: FunctionRunRetryPolicy;
79
+ }
80
+ export declare class Run402FunctionRunInputError extends Error {
81
+ readonly code = "R402_FUNCTION_RUN_INVALID_INPUT";
82
+ readonly field?: string;
83
+ constructor(message: string, field?: string);
84
+ }
85
+ export declare class Run402FunctionRunContextError extends Error {
86
+ readonly code = "R402_FUNCTION_RUN_MISSING_CONTEXT";
87
+ constructor(message?: string);
88
+ }
89
+ export declare class Run402FunctionRunPlatformError extends Error {
90
+ readonly code: string;
91
+ readonly status: number;
92
+ readonly body: unknown;
93
+ constructor(status: number, body: unknown, message: string);
94
+ }
95
+ export declare class Run402FunctionRunFailure extends Error {
96
+ readonly code: string;
97
+ readonly retryable: boolean;
98
+ readonly status: number;
99
+ readonly details?: Record<string, unknown>;
100
+ constructor(message: string, options: {
101
+ code: string;
102
+ retryable: boolean;
103
+ status: number;
104
+ details?: Record<string, unknown>;
105
+ });
106
+ }
107
+ export declare function permanentFunctionRunError(message: string, code?: string, details?: Record<string, unknown>): Run402FunctionRunFailure;
108
+ export declare function retryableFunctionRunError(message: string, code?: string, details?: Record<string, unknown>): Run402FunctionRunFailure;
109
+ export declare function isFunctionRun(input: unknown): input is FunctionRunEnvelope;
110
+ export declare function parseFunctionRunEnvelope(input: unknown): FunctionRunEnvelope;
111
+ export declare function parseFunctionRun(input: unknown): Promise<FunctionRunEnvelope>;
112
+ export interface FunctionRunHandlerContext<Payload extends Record<string, unknown> = Record<string, unknown>> {
113
+ run: {
114
+ id: string;
115
+ generation: number;
116
+ eventType: string;
117
+ event_type: string;
118
+ runAt: string;
119
+ run_at: string;
120
+ source: FunctionRunSource;
121
+ envelope: FunctionRunEnvelope<Payload>;
122
+ };
123
+ attempt: {
124
+ id: string;
125
+ attempt_id: string;
126
+ number: number;
127
+ max: number;
128
+ };
129
+ idempotency: {
130
+ key: string;
131
+ fromParts: (...parts: Array<string | number | boolean | null | undefined>) => string;
132
+ };
133
+ functions: typeof functions;
134
+ }
135
+ type MaybePromise<T> = T | Promise<T>;
136
+ export interface FunctionRunPayloadParser<Payload> {
137
+ parse(value: unknown): Payload;
138
+ }
139
+ export interface FunctionRunSafePayloadParser<Payload> {
140
+ safeParse(value: unknown): {
141
+ success: true;
142
+ data: Payload;
143
+ } | {
144
+ success: false;
145
+ error: unknown;
146
+ };
147
+ }
148
+ export type FunctionRunPayloadValidator<Payload> = FunctionRunPayloadParser<Payload> | FunctionRunSafePayloadParser<Payload> | ((value: unknown) => Payload);
149
+ export interface FunctionRunHandlerDefinition<Payload extends Record<string, unknown> = Record<string, unknown>> {
150
+ payload?: FunctionRunPayloadValidator<Payload>;
151
+ run(ctx: FunctionRunHandlerContext<Payload>, payload: Payload, envelope: FunctionRunEnvelope<Payload>): MaybePromise<void | Response | Record<string, unknown> | null | undefined>;
152
+ }
153
+ export type FunctionRunHandler<Payload extends Record<string, unknown> = Record<string, unknown>> = FunctionRunHandlerDefinition<Payload> | ((ctx: FunctionRunHandlerContext<Payload>, payload: Payload, envelope: FunctionRunEnvelope<Payload>) => MaybePromise<void | Response | Record<string, unknown> | null | undefined>);
154
+ export type FunctionRunHandlers = Record<string, FunctionRunHandler<Record<string, unknown>>>;
155
+ export declare function defineFunctionRuns(handlers: FunctionRunHandlers): (input: unknown) => Promise<Response>;
156
+ declare function createFunctionRun<Payload extends Record<string, unknown> = Record<string, unknown>>(functionName: string, options: FunctionRunCreateOptions<Payload>): Promise<FunctionRunHandle>;
157
+ export declare const functions: {
158
+ isFunctionRun: typeof isFunctionRun;
159
+ parseFunctionRun: typeof parseFunctionRun;
160
+ parseFunctionRunEnvelope: typeof parseFunctionRunEnvelope;
161
+ idempotency: {
162
+ fromParts: typeof fromParts;
163
+ };
164
+ runs: {
165
+ create: typeof createFunctionRun;
166
+ };
167
+ };
168
+ declare function fromParts(...parts: Array<string | number | boolean | null | undefined>): string;
169
+ export {};
170
+ //# sourceMappingURL=function-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-runs.d.ts","sourceRoot":"","sources":["../src/function-runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,442 @@
1
+ import { config } from "./config.js";
2
+ import { requireActiveContext, Run402OutsideRequestContextError, } from "./runtime-context.js";
3
+ export class Run402FunctionRunInputError extends Error {
4
+ code = "R402_FUNCTION_RUN_INVALID_INPUT";
5
+ field;
6
+ constructor(message, field) {
7
+ super(message);
8
+ this.name = "Run402FunctionRunInputError";
9
+ this.field = field;
10
+ }
11
+ }
12
+ export class Run402FunctionRunContextError extends Error {
13
+ code = "R402_FUNCTION_RUN_MISSING_CONTEXT";
14
+ constructor(message = "functions.runs.create requires an active Run402 function context.") {
15
+ super(message);
16
+ this.name = "Run402FunctionRunContextError";
17
+ }
18
+ }
19
+ export class Run402FunctionRunPlatformError extends Error {
20
+ code;
21
+ status;
22
+ body;
23
+ constructor(status, body, message) {
24
+ super(message);
25
+ this.name = "Run402FunctionRunPlatformError";
26
+ this.status = status;
27
+ this.body = body;
28
+ this.code = platformCode(body);
29
+ }
30
+ }
31
+ export class Run402FunctionRunFailure extends Error {
32
+ code;
33
+ retryable;
34
+ status;
35
+ details;
36
+ constructor(message, options) {
37
+ super(message);
38
+ this.name = "Run402FunctionRunFailure";
39
+ this.code = options.code;
40
+ this.retryable = options.retryable;
41
+ this.status = options.status;
42
+ this.details = options.details;
43
+ }
44
+ }
45
+ export function permanentFunctionRunError(message, code = "function_run_permanent_error", details) {
46
+ return new Run402FunctionRunFailure(message, {
47
+ code,
48
+ retryable: false,
49
+ status: 400,
50
+ details,
51
+ });
52
+ }
53
+ export function retryableFunctionRunError(message, code = "function_run_retryable_error", details) {
54
+ return new Run402FunctionRunFailure(message, {
55
+ code,
56
+ retryable: true,
57
+ status: 500,
58
+ details,
59
+ });
60
+ }
61
+ export function isFunctionRun(input) {
62
+ try {
63
+ parseFunctionRunEnvelope(input);
64
+ return true;
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ export function parseFunctionRunEnvelope(input) {
71
+ const value = record(input, "function run envelope");
72
+ if (value.trigger !== "function_run") {
73
+ throw new Run402FunctionRunInputError("function run envelope trigger must be \"function_run\".", "trigger");
74
+ }
75
+ const attempt = record(value.attempt, "attempt");
76
+ const source = record(value.source, "source");
77
+ const payload = value.payload === undefined ? {} : record(value.payload, "payload");
78
+ const envelope = {
79
+ trigger: "function_run",
80
+ run_id: stringField(value.run_id, "run_id"),
81
+ generation: positiveInteger(value.generation, "generation"),
82
+ event_type: stringField(value.event_type, "event_type"),
83
+ idempotency_key: stringField(value.idempotency_key, "idempotency_key"),
84
+ run_at: isoStringField(value.run_at, "run_at"),
85
+ attempt: {
86
+ attempt_id: stringField(attempt.attempt_id, "attempt.attempt_id"),
87
+ number: positiveInteger(attempt.number, "attempt.number"),
88
+ max: positiveInteger(attempt.max, "attempt.max"),
89
+ },
90
+ source: {
91
+ ...source,
92
+ type: stringField(source.type, "source.type"),
93
+ },
94
+ payload,
95
+ };
96
+ return envelope;
97
+ }
98
+ export async function parseFunctionRun(input) {
99
+ if (isRequestLike(input)) {
100
+ let body;
101
+ try {
102
+ body = await input.json();
103
+ }
104
+ catch (err) {
105
+ throw new Run402FunctionRunInputError(`function run request body must be JSON: ${err instanceof Error ? err.message : String(err)}`, "body");
106
+ }
107
+ return parseFunctionRunEnvelope(body);
108
+ }
109
+ return parseFunctionRunEnvelope(input);
110
+ }
111
+ export function defineFunctionRuns(handlers) {
112
+ return async (input) => {
113
+ let envelope;
114
+ try {
115
+ envelope = await parseFunctionRun(input);
116
+ }
117
+ catch (err) {
118
+ return errorResponse("function_run_invalid_envelope", err, 400, false);
119
+ }
120
+ const handler = handlers[envelope.event_type];
121
+ if (!handler) {
122
+ return jsonResponse({
123
+ error: "function_run_unknown_event",
124
+ message: `No handler is registered for function run event_type \"${envelope.event_type}\".`,
125
+ event_type: envelope.event_type,
126
+ retryable: false,
127
+ }, 400);
128
+ }
129
+ let payload;
130
+ try {
131
+ payload = parsePayload(handler, envelope.payload);
132
+ }
133
+ catch (err) {
134
+ return errorResponse("function_run_invalid_payload", err, 400, false);
135
+ }
136
+ try {
137
+ const ctx = handlerContext(envelope);
138
+ const result = typeof handler === "function"
139
+ ? await handler(ctx, payload, envelope)
140
+ : await handler.run(ctx, payload, envelope);
141
+ return normalizeHandlerResult(result);
142
+ }
143
+ catch (err) {
144
+ if (err instanceof Run402FunctionRunFailure) {
145
+ return jsonResponse({
146
+ error: err.code,
147
+ message: err.message,
148
+ retryable: err.retryable,
149
+ ...(err.details ? { details: err.details } : {}),
150
+ }, err.status);
151
+ }
152
+ throw err;
153
+ }
154
+ };
155
+ }
156
+ async function createFunctionRun(functionName, options) {
157
+ const ctx = requireFunctionRunContext();
158
+ const body = normalizeCreateBody(options);
159
+ const headers = {
160
+ Authorization: `Bearer ${config.SERVICE_KEY}`,
161
+ "Content-Type": "application/json",
162
+ "Idempotency-Key": body.idempotency_key,
163
+ };
164
+ const parentRunId = readHeader(ctx.request.headers, "x-run402-run-id");
165
+ const parentAttemptId = readHeader(ctx.request.headers, "x-run402-attempt-id");
166
+ if (parentRunId)
167
+ headers["X-Run402-Parent-Run-Id"] = parentRunId;
168
+ if (parentAttemptId)
169
+ headers["X-Run402-Parent-Attempt-Id"] = parentAttemptId;
170
+ const res = await fetch(`${config.API_BASE}/functions/v1/${encodeURIComponent(functionName)}/runs`, {
171
+ method: "POST",
172
+ headers,
173
+ body: JSON.stringify(body),
174
+ });
175
+ if (!res.ok) {
176
+ const errorBody = await readErrorBody(res);
177
+ throw new Run402FunctionRunPlatformError(res.status, errorBody, `Function run creation failed (${res.status}): ${platformMessage(errorBody)}`);
178
+ }
179
+ return res.json();
180
+ }
181
+ export const functions = {
182
+ isFunctionRun,
183
+ parseFunctionRun,
184
+ parseFunctionRunEnvelope,
185
+ idempotency: {
186
+ fromParts,
187
+ },
188
+ runs: {
189
+ create: createFunctionRun,
190
+ },
191
+ };
192
+ function handlerContext(envelope) {
193
+ return {
194
+ run: {
195
+ id: envelope.run_id,
196
+ generation: envelope.generation,
197
+ eventType: envelope.event_type,
198
+ event_type: envelope.event_type,
199
+ runAt: envelope.run_at,
200
+ run_at: envelope.run_at,
201
+ source: envelope.source,
202
+ envelope,
203
+ },
204
+ attempt: {
205
+ id: envelope.attempt.attempt_id,
206
+ attempt_id: envelope.attempt.attempt_id,
207
+ number: envelope.attempt.number,
208
+ max: envelope.attempt.max,
209
+ },
210
+ idempotency: {
211
+ key: envelope.idempotency_key,
212
+ fromParts,
213
+ },
214
+ functions,
215
+ };
216
+ }
217
+ function parsePayload(handler, payload) {
218
+ if (typeof handler === "function" || !handler.payload)
219
+ return payload;
220
+ const validator = handler.payload;
221
+ if (typeof validator === "function") {
222
+ return record(validator(payload), "payload");
223
+ }
224
+ if ("safeParse" in validator && typeof validator.safeParse === "function") {
225
+ const result = validator.safeParse(payload);
226
+ if (result.success)
227
+ return record(result.data, "payload");
228
+ throw new Error(schemaErrorMessage(result.error));
229
+ }
230
+ if (!("parse" in validator) || typeof validator.parse !== "function") {
231
+ throw new Error("payload validator must expose parse(value) or safeParse(value)");
232
+ }
233
+ return record(validator.parse(payload), "payload");
234
+ }
235
+ function normalizeHandlerResult(result) {
236
+ if (result instanceof Response)
237
+ return result;
238
+ if (result === undefined || result === null)
239
+ return new Response(null, { status: 204 });
240
+ return jsonResponse(result, 200);
241
+ }
242
+ function normalizeCreateBody(options) {
243
+ if (!options || typeof options !== "object") {
244
+ throw new Run402FunctionRunInputError("function run options are required");
245
+ }
246
+ if (typeof options.eventType !== "string" || options.eventType.trim() === "") {
247
+ throw new Run402FunctionRunInputError("eventType is required", "eventType");
248
+ }
249
+ if (typeof options.idempotencyKey !== "string" || options.idempotencyKey.trim() === "") {
250
+ throw new Run402FunctionRunInputError("idempotencyKey is required", "idempotencyKey");
251
+ }
252
+ const hasDelay = options.delay !== undefined || options.delaySeconds !== undefined;
253
+ if (hasDelay && options.runAt !== undefined) {
254
+ throw new Run402FunctionRunInputError("runAt and delay are mutually exclusive", "runAt");
255
+ }
256
+ if (options.delay !== undefined && options.delaySeconds !== undefined) {
257
+ throw new Run402FunctionRunInputError("delay and delaySeconds are mutually exclusive", "delay");
258
+ }
259
+ const body = {
260
+ event_type: options.eventType.trim(),
261
+ idempotency_key: options.idempotencyKey,
262
+ };
263
+ if (options.payload !== undefined)
264
+ body.payload = record(options.payload, "payload");
265
+ if (options.runAt !== undefined)
266
+ body.run_at = isoFromDateInput(options.runAt, "runAt");
267
+ if (options.delay !== undefined)
268
+ body.delay_seconds = durationSeconds(options.delay, "delay");
269
+ if (options.delaySeconds !== undefined)
270
+ body.delay_seconds = durationSeconds(options.delaySeconds, "delaySeconds");
271
+ if (options.expiresAt !== undefined)
272
+ body.expires_at = isoFromDateInput(options.expiresAt, "expiresAt");
273
+ if (options.expiresAfter !== undefined) {
274
+ const seconds = durationSeconds(options.expiresAfter, "expiresAfter");
275
+ body.expires_at = new Date(Date.now() + seconds * 1000).toISOString();
276
+ }
277
+ if (body.expires_at !== undefined) {
278
+ const runAtMs = body.run_at ? Date.parse(body.run_at) : Date.now() + (body.delay_seconds ?? 0) * 1000;
279
+ if (Date.parse(body.expires_at) <= runAtMs) {
280
+ throw new Run402FunctionRunInputError("expiresAt/expiresAfter must be after the run time", "expiresAt");
281
+ }
282
+ }
283
+ if (options.retry !== undefined)
284
+ body.retry = normalizeRetry(options.retry);
285
+ return body;
286
+ }
287
+ function normalizeRetry(retry) {
288
+ return Object.fromEntries(Object.entries({
289
+ ...retry,
290
+ ...(retry.maxAttempts !== undefined ? { max_attempts: retry.maxAttempts } : {}),
291
+ ...(retry.minDelaySeconds !== undefined ? { min_delay_seconds: retry.minDelaySeconds } : {}),
292
+ ...(retry.maxDelaySeconds !== undefined ? { max_delay_seconds: retry.maxDelaySeconds } : {}),
293
+ }).filter(([key]) => key !== "maxAttempts" && key !== "minDelaySeconds" && key !== "maxDelaySeconds"));
294
+ }
295
+ function requireFunctionRunContext() {
296
+ let ctx;
297
+ try {
298
+ ctx = requireActiveContext("functions.runs.create");
299
+ }
300
+ catch (err) {
301
+ if (err instanceof Run402OutsideRequestContextError) {
302
+ throw new Run402FunctionRunContextError();
303
+ }
304
+ throw err;
305
+ }
306
+ if (!ctx.projectId) {
307
+ throw new Run402FunctionRunContextError("functions.runs.create requires a project id in the active Run402 context.");
308
+ }
309
+ if (!config.SERVICE_KEY) {
310
+ throw new Run402FunctionRunContextError("functions.runs.create requires the Run402 runtime service capability.");
311
+ }
312
+ return ctx;
313
+ }
314
+ function fromParts(...parts) {
315
+ const cleaned = parts
316
+ .filter((part) => part !== undefined && part !== null && String(part).trim() !== "")
317
+ .map((part) => encodeURIComponent(String(part)));
318
+ if (cleaned.length === 0) {
319
+ throw new Run402FunctionRunInputError("at least one idempotency part is required", "idempotency");
320
+ }
321
+ return cleaned.join(":");
322
+ }
323
+ function record(value, field) {
324
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
325
+ throw new Run402FunctionRunInputError(`${field} must be a JSON object`, field);
326
+ }
327
+ return value;
328
+ }
329
+ function stringField(value, field) {
330
+ if (typeof value !== "string" || value.trim() === "") {
331
+ throw new Run402FunctionRunInputError(`${field} must be a non-empty string`, field);
332
+ }
333
+ return value;
334
+ }
335
+ function isoStringField(value, field) {
336
+ const raw = stringField(value, field);
337
+ if (!Number.isFinite(Date.parse(raw))) {
338
+ throw new Run402FunctionRunInputError(`${field} must be an ISO-8601 timestamp`, field);
339
+ }
340
+ return new Date(raw).toISOString();
341
+ }
342
+ function positiveInteger(value, field) {
343
+ if (!Number.isInteger(value) || Number(value) <= 0) {
344
+ throw new Run402FunctionRunInputError(`${field} must be a positive integer`, field);
345
+ }
346
+ return Number(value);
347
+ }
348
+ function isoFromDateInput(value, field) {
349
+ const date = value instanceof Date ? value : new Date(value);
350
+ if (!Number.isFinite(date.getTime())) {
351
+ throw new Run402FunctionRunInputError(`${field} must be an ISO-8601 timestamp`, field);
352
+ }
353
+ return date.toISOString();
354
+ }
355
+ function durationSeconds(value, field) {
356
+ if (typeof value === "number") {
357
+ if (!Number.isFinite(value) || value < 0) {
358
+ throw new Run402FunctionRunInputError(`${field} must be a non-negative duration`, field);
359
+ }
360
+ return Math.ceil(value);
361
+ }
362
+ const match = value.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|milliseconds?|s|sec|secs|seconds?|m|min|mins|minutes?|h|hr|hrs|hours?|d|days?)$/i);
363
+ if (!match) {
364
+ throw new Run402FunctionRunInputError(`${field} must be a duration such as "10m", "1h", or "3d"`, field);
365
+ }
366
+ const amount = Number(match[1]);
367
+ const unit = match[2].toLowerCase();
368
+ const multiplier = unit.startsWith("ms") ? 0.001 :
369
+ unit.startsWith("s") ? 1 :
370
+ unit.startsWith("m") ? 60 :
371
+ unit.startsWith("h") ? 3600 :
372
+ 86400;
373
+ return Math.ceil(amount * multiplier);
374
+ }
375
+ function jsonResponse(body, status) {
376
+ return new Response(JSON.stringify(body), {
377
+ status,
378
+ headers: { "Content-Type": "application/json; charset=utf-8" },
379
+ });
380
+ }
381
+ function errorResponse(error, err, status, retryable) {
382
+ return jsonResponse({
383
+ error,
384
+ message: err instanceof Error ? err.message : String(err),
385
+ retryable,
386
+ }, status);
387
+ }
388
+ function isRequestLike(input) {
389
+ return typeof input === "object" &&
390
+ input !== null &&
391
+ typeof input.json === "function" &&
392
+ typeof input.headers === "object";
393
+ }
394
+ function readHeader(headers, name) {
395
+ const maybeHeaders = headers;
396
+ if (typeof maybeHeaders.get === "function") {
397
+ return maybeHeaders.get(name) ?? maybeHeaders.get(name.toLowerCase()) ?? undefined;
398
+ }
399
+ const lookup = headers;
400
+ const direct = lookup[name] ?? lookup[name.toLowerCase()];
401
+ return Array.isArray(direct) ? direct[0] : direct;
402
+ }
403
+ async function readErrorBody(res) {
404
+ const text = await res.text();
405
+ if (!text)
406
+ return {};
407
+ try {
408
+ return JSON.parse(text);
409
+ }
410
+ catch {
411
+ return { message: text };
412
+ }
413
+ }
414
+ function platformCode(body) {
415
+ if (body && typeof body === "object") {
416
+ const recordBody = body;
417
+ const code = recordBody.code ?? recordBody.error;
418
+ if (typeof code === "string" && code.trim() !== "")
419
+ return code;
420
+ }
421
+ return "function_run_platform_error";
422
+ }
423
+ function platformMessage(body) {
424
+ if (body && typeof body === "object") {
425
+ const recordBody = body;
426
+ const message = recordBody.message ?? recordBody.error;
427
+ if (typeof message === "string" && message.trim() !== "")
428
+ return message;
429
+ }
430
+ return "Run402 rejected the function run request.";
431
+ }
432
+ function schemaErrorMessage(error) {
433
+ if (error instanceof Error)
434
+ return error.message;
435
+ if (error && typeof error === "object" && "message" in error) {
436
+ const message = error.message;
437
+ if (typeof message === "string")
438
+ return message;
439
+ }
440
+ return String(error);
441
+ }
442
+ //# sourceMappingURL=function-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-runs.js","sourceRoot":"","sources":["../src/function-runs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,8 @@ export type { Run402RequestContext } from "./request-context.js";
17
17
  export type { AssetPutOptions, AssetPutSource, AssetPutSourceInput, AssetRef, AssetVisibility, AssetVariant, AssetListRow, AssetsListFilter, AssetsListOptions, AssetsListResult, AssetsListSort, ImageInfo, } from "./assets.js";
18
18
  export { bytes, isRequest, json, routedHttp, text } from "./routed-http.js";
19
19
  export type { RoutedHttpHeaderList, RoutedHttpRequestV1, RoutedHttpResponseInit, RoutedHttpResponseV1, } from "./routed-http.js";
20
+ export { defineFunctionRuns, functions, isFunctionRun, parseFunctionRun, parseFunctionRunEnvelope, permanentFunctionRunError, retryableFunctionRunError, Run402FunctionRunContextError, Run402FunctionRunFailure, Run402FunctionRunInputError, Run402FunctionRunPlatformError, } from "./function-runs.js";
21
+ export type { FunctionRunAttemptEnvelope, FunctionRunCreateOptions, FunctionRunEnvelope, FunctionRunErrorInfo, FunctionRunHandle, FunctionRunHandler, FunctionRunHandlerContext, FunctionRunHandlerDefinition, FunctionRunHandlers, FunctionRunPayloadParser, FunctionRunPayloadValidator, FunctionRunRetryPolicy, FunctionRunSafePayloadParser, FunctionRunSource, FunctionRunStatus, } from "./function-runs.js";
20
22
  export { cache } from "./cache.js";
21
23
  export type { Cache, CacheInvalidateResult, InvalidatePrefixOptions, InvalidateAllOptions, } from "./cache.js";
22
24
  export { CacheInvalidationHostRequiredError, CacheInvalidationHostForbiddenError, } from "./cache.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQtC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,YAAY,EACV,KAAK,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,wCAAwC,EACxC,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMlG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,YAAY,EAEZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -28,6 +28,7 @@ export { verifyWebhook } from "./verify-webhook.js";
28
28
  // so Astro and plain-function code share one mental model.
29
29
  export { getRun402Context } from "./request-context.js";
30
30
  export { bytes, isRequest, json, routedHttp, text } from "./routed-http.js";
31
+ export { defineFunctionRuns, functions, isFunctionRun, parseFunctionRun, parseFunctionRunEnvelope, permanentFunctionRunError, retryableFunctionRunError, Run402FunctionRunContextError, Run402FunctionRunFailure, Run402FunctionRunInputError, Run402FunctionRunPlatformError, } from "./function-runs.js";
31
32
  // Capability `astro-ssr-runtime` (v1.52).
32
33
  // `cache.*` — sub-second admin-edit visibility via origin-side ISR
33
34
  // cache invalidation. Server-side (function-context) only.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGxD,qEAAqE;AACrE,4EAA4E;AAC5E,iEAAiE;AACjE,+DAA+D;AAC/D,yEAAyE;AACzE,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAWvC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,qEAAqE;AACrE,yEAAyE;AACzE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qEAAqE;AACrE,gEAAgE;AAChE,qEAAqE;AACrE,2EAA2E;AAC3E,2DAA2D;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiBxD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAO5E,0CAA0C;AAC1C,mEAAmE;AACnE,2DAA2D;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAOnC,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,YAAY,CAAC;AACpB,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AACxE,iDAAiD;AACjD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,6EAA6E;AAC7E,uEAAuE;AACvE,uEAAuE;AACvE,4EAA4E;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGxD,qEAAqE;AACrE,4EAA4E;AAC5E,iEAAiE;AACjE,+DAA+D;AAC/D,yEAAyE;AACzE,wEAAwE;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAWvC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAS7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,qEAAqE;AACrE,yEAAyE;AACzE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,qEAAqE;AACrE,gEAAgE;AAChE,qEAAqE;AACrE,2EAA2E;AAC3E,2DAA2D;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiBxD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAO5E,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAkB5B,0CAA0C;AAC1C,mEAAmE;AACnE,2DAA2D;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAOnC,OAAO,EACL,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,YAAY,CAAC;AACpB,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AACxE,iDAAiD;AACjD,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAE9B,6EAA6E;AAC7E,uEAAuE;AACvE,uEAAuE;AACvE,4EAA4E;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@run402/functions",
3
- "version": "3.5.4",
3
+ "version": "3.5.5",
4
4
  "description": "In-function helper library for Run402 serverless functions - db, adminDb, getUser, email, ai, assets, verifyWebhook. Auto-bundled into deployed functions; also installable for local TypeScript autocomplete.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",