createJobTypes
createJobTypes<
TJobTypeDefinitions,TExternalJobTypeDefinitions>(options):JobTypes<TJobTypeDefinitions,TExternalJobTypeDefinitions>
Defined in: packages/core/src/entities/job-types.ts:102
Create a job type registry with runtime validation. Wraps adapter errors in JobTypeValidationError.
Type Parameters
Section titled “Type Parameters”TJobTypeDefinitions
Section titled “TJobTypeDefinitions”TJobTypeDefinitions extends BaseJobTypeDefinitions
TExternalJobTypeDefinitions
Section titled “TExternalJobTypeDefinitions”TExternalJobTypeDefinitions extends BaseJobTypeDefinitions = Record<never, never>
Parameters
Section titled “Parameters”options
Section titled “options”Adapter-supplied validation callbacks. Functions should throw on validation failure (any error type).
getTypeNames
Section titled “getTypeNames”() => readonly string[]
Returns the known job type names. Used for runtime duplicate detection when createClient merges slices.
parseInput
Section titled “parseInput”(typeName, input) => unknown
Parse and validate input. Return transformed value or throw on failure.
parseOutput
Section titled “parseOutput”(typeName, output) => unknown
Parse and validate output. Return transformed value or throw on failure.
validateBlockers
Section titled “validateBlockers”(typeName, blockers) => void
Validate blocker references. Receives array of { typeName, input } objects. Throw on failure.
validateContinueWith
Section titled “validateContinueWith”(typeName, target) => void
Validate continuation target. Receives { typeName, input } for nominal/structural validation. Throw on failure.
validateEntry
Section titled “validateEntry”(typeName) => void
Validate that a job type can start a chain. Throw on failure.
Returns
Section titled “Returns”JobTypes<TJobTypeDefinitions, TExternalJobTypeDefinitions>
Example
Section titled “Example”const registry = createJobTypes<MyJobTypes>({ getTypeNames: () => Object.keys(schemas), validateEntry: (typeName) => { if (!entryTypes.has(typeName)) throw new Error('Not an entry point'); }, parseInput: (typeName, input) => schemas[typeName].input.parse(input), parseOutput: (typeName, output) => schemas[typeName].output.parse(output), validateContinueWith: (typeName, target) => schemas[typeName].continueWith.parse(target), validateBlockers: (typeName, blockers) => schemas[typeName].blockers.parse(blockers),});