UNPKG

inngest

Version:

Official SDK for Inngest.com. Inngest is the reliability layer for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.

234 lines • 7.66 kB
"use strict"; /** * Internal types and schemas used throughout the Inngest SDK. * * Note that types intended to be imported and utilized in userland code will be * exported from the main entrypoint of the SDK, `inngest`; importing types * directly from this file may result in breaking changes in non-major bumps as * only those exported from `inngest` are considered stable. * * @module */ Object.defineProperty(exports, "__esModule", { value: true }); exports.inBandSyncRequestBodySchema = exports.err = exports.ok = exports.functionConfigSchema = exports.logLevels = exports.sendEventResponseSchema = exports.incomingOpSchema = exports.StepOpCode = exports.jsonErrorSchema = void 0; const zod_1 = require("zod"); const baseJsonErrorSchema = zod_1.z.object({ name: zod_1.z.string().trim().optional(), error: zod_1.z.string().trim().optional(), message: zod_1.z.string().trim().optional(), stack: zod_1.z.string().trim().optional(), }); const maybeJsonErrorSchema = zod_1.z.lazy(() => zod_1.z.object({ name: zod_1.z.string().trim(), message: zod_1.z.string().trim(), stack: zod_1.z.string().trim().optional(), cause: zod_1.z.union([maybeJsonErrorSchema, zod_1.z.unknown()]).optional(), })); exports.jsonErrorSchema = baseJsonErrorSchema .extend({ cause: zod_1.z.union([maybeJsonErrorSchema, zod_1.z.unknown()]).optional(), }) .passthrough() .catch({}) .transform((val) => { return Object.assign(Object.assign({}, val), { name: val.name || "Error", message: val.message || val.error || "Unknown error", stack: val.stack }); }); /** * Unique codes for the different types of operation that can be sent to Inngest * from SDK step functions. */ var StepOpCode; (function (StepOpCode) { StepOpCode["WaitForSignal"] = "WaitForSignal"; StepOpCode["WaitForEvent"] = "WaitForEvent"; /** * Legacy equivalent to `"StepRun"`. Has mixed data wrapping (e.g. `data` or * `data.data` depending on SDK version), so this is phased out in favour of * `"StepRun"`, which never wraps. * * Note that it is still used for v0 executions for backwards compatibility. * * @deprecated Only used for v0 executions; use `"StepRun"` instead. */ StepOpCode["Step"] = "Step"; StepOpCode["StepRun"] = "StepRun"; StepOpCode["StepError"] = "StepError"; StepOpCode["StepPlanned"] = "StepPlanned"; StepOpCode["Sleep"] = "Sleep"; /** * Used to signify that the executor has requested that a step run, but we * could not find that step. * * This is likely indicative that a step was renamed or removed from the * function. */ StepOpCode["StepNotFound"] = "StepNotFound"; StepOpCode["InvokeFunction"] = "InvokeFunction"; StepOpCode["AiGateway"] = "AIGateway"; StepOpCode["Gateway"] = "Gateway"; })(StepOpCode || (exports.StepOpCode = StepOpCode = {})); exports.incomingOpSchema = zod_1.z.object({ id: zod_1.z.string().min(1), data: zod_1.z.any().optional(), error: zod_1.z.any().optional(), input: zod_1.z.any().optional(), }); exports.sendEventResponseSchema = zod_1.z.object({ /** * Event IDs */ ids: zod_1.z.array(zod_1.z.string()).default([]), /** * HTTP Status Code. Will be undefined if no request was sent. */ status: zod_1.z.number().default(0), /** * Error message. Will be undefined if no error occurred. */ error: zod_1.z.string().optional(), }); /** * A set of log levels that can be used to control the amount of logging output * from various parts of the Inngest library. * * @public */ exports.logLevels = [ "fatal", "error", "warn", "info", "debug", "silent", ]; /** * This schema is used internally to share the shape of a concurrency option * when validating config. We cannot add comments to Zod fields, so we just use * an extra type check to ensure it matches our exported expectations. */ const concurrencyOptionSchema = zod_1.z.strictObject({ limit: zod_1.z.number(), key: zod_1.z.string().optional(), scope: zod_1.z.enum(["fn", "env", "account"]).optional(), }); const _checkConcurrencySchemaAligns = true; /** * The schema used to represent an individual function being synced with * Inngest. * * Note that this should only be used to validate the shape of a config object * and not used for feature compatibility, such as feature X being exclusive * with feature Y; these should be handled on the Inngest side. */ exports.functionConfigSchema = zod_1.z.strictObject({ name: zod_1.z.string().optional(), id: zod_1.z.string(), triggers: zod_1.z.array(zod_1.z.union([ zod_1.z.strictObject({ event: zod_1.z.string(), expression: zod_1.z.string().optional(), }), zod_1.z.strictObject({ cron: zod_1.z.string(), }), ])), steps: zod_1.z.record(zod_1.z.strictObject({ id: zod_1.z.string(), name: zod_1.z.string(), runtime: zod_1.z.strictObject({ type: zod_1.z.union([zod_1.z.literal("http"), zod_1.z.literal("ws")]), url: zod_1.z.string(), }), retries: zod_1.z .strictObject({ attempts: zod_1.z.number().optional(), }) .optional(), })), idempotency: zod_1.z.string().optional(), batchEvents: zod_1.z .strictObject({ maxSize: zod_1.z.number(), timeout: zod_1.z.string(), key: zod_1.z.string().optional(), if: zod_1.z.string().optional(), }) .optional(), rateLimit: zod_1.z .strictObject({ key: zod_1.z.string().optional(), limit: zod_1.z.number(), period: zod_1.z.string().transform((x) => x), }) .optional(), throttle: zod_1.z .strictObject({ key: zod_1.z.string().optional(), limit: zod_1.z.number(), period: zod_1.z.string().transform((x) => x), burst: zod_1.z.number().optional(), }) .optional(), singleton: zod_1.z .strictObject({ key: zod_1.z.string().optional(), mode: zod_1.z.enum(["skip", "cancel"]), }) .optional(), cancel: zod_1.z .array(zod_1.z.strictObject({ event: zod_1.z.string(), if: zod_1.z.string().optional(), timeout: zod_1.z.string().optional(), })) .optional(), debounce: zod_1.z .strictObject({ key: zod_1.z.string().optional(), period: zod_1.z.string().transform((x) => x), timeout: zod_1.z .string() .transform((x) => x) .optional(), }) .optional(), timeouts: zod_1.z .strictObject({ start: zod_1.z .string() .transform((x) => x) .optional(), finish: zod_1.z .string() .transform((x) => x) .optional(), }) .optional(), priority: zod_1.z .strictObject({ run: zod_1.z.string().optional(), }) .optional(), concurrency: zod_1.z .union([ zod_1.z.number(), concurrencyOptionSchema.transform((x) => x), zod_1.z .array(concurrencyOptionSchema.transform((x) => x)) .min(1) .max(2), ]) .optional(), }); const ok = (data) => { return { ok: true, value: data }; }; exports.ok = ok; const err = (error) => { return { ok: false, error }; }; exports.err = err; exports.inBandSyncRequestBodySchema = zod_1.z.strictObject({ url: zod_1.z.string(), }); //# sourceMappingURL=types.js.map