createValidatedBuilder()
createValidatedBuilder<
State>(initial): ValidatedBuilderDefinition<State,object>
Creates a builder with validation on build().
Same as createBuilder, but .done(validate) takes a validator.
build() returns Result<State, string>.
Type Parametersβ
State: Stateβ
The product type being built
Parametersβ
initial: Stateβ
The initial state
Returns: ValidatedBuilderDefinition<State, object>β
A validated builder definition
Sinceβ
2.4.0
Exampleβ
const configBuilder = createValidatedBuilder({ host: "", port: 0 })
.step("host", (s, host: string) => ({ ...s, host }))
.step("port", (s, port: number) => ({ ...s, port }))
.done((s) => s.host ? true : "host is required");
configBuilder().port(8080).build(); // Err("host is required")
configBuilder().host("localhost").build(); // Ok({ host: "localhost", port: 0 })
ValidatedBuilderDefinition<State, Methods>β
Validated builder definition that accumulates steps.
Sinceβ
2.4.0
Type Parametersβ
State: Stateβ
The product state being built
Methods: Methods extends objectβ
Accumulated method signatures
Methodsβ
step()β
Adds a step to the builder.
Type Parametersβ
K: K extends stringβ
Arg: Argβ
name:
K
fn:(state, arg) => State
Returns:ValidatedBuilderDefinition<State, Methods & { [P in string]: (arg: Arg) => unknown }>
done()β
Finalizes with a validator. build() returns Result<State, string>.
validate:
(state) => string | trueβ Returnstrueif valid, or an error message string
Returns:> (): ValidatedFinalBuilder<State, Methods>
Returnsβ
ValidatedFinalBuilder<State, Methods>
ValidatedFinalBuilder<State, Methods>β
ValidatedFinalBuilder<
State,Methods> ={ [K in keyof Methods]: Methods[K] extends (arg: infer Arg) => unknown ? (arg: Arg) => ValidatedFinalBuilder<State, Methods> : never }&object
Builder with validated build() returning Result.
Type Declarationβ
build(): () => Result<State, string>β
Returns Ok(state) if valid, Err(message) otherwise.
Returns: Result<State, string>β
current(): () => Stateβ
Returns the current state without validation.
Returns: Stateβ
Type Parametersβ
State: Stateβ
The product state being built
Methods: Methods extends objectβ
The step method signatures
Sinceβ
2.4.0