UNPKG

self-assert

Version:

A small TypeScript library for designing models with built-in validity.

46 lines 2.74 kB
import { DraftAssistant } from "./DraftAssistant"; import { RulesBroken } from "../rule"; import type { LabelId, LabeledRule } from "../rule"; import type { ModelFromContainer, AssistantsIn } from "../types"; /** * @category Supporting types */ export type CreationClosure<Model, ComposedModels extends unknown[]> = (...models: ComposedModels) => Model; /** * Assists in the creation of complex models by coordinating multiple inner `DraftAssistant`. * * It uses a {@link CreationClosure} function to combine the models created by its * assistants into a single composed model. * * @template ComposedModels - An array of types representing the types of the models created by the inner assistants, * in the same order as the `assistants` array. * * @category Draft assistants */ export declare class SectionDraftAssistant<Model = any, ContainerModel = any, ComposedModels extends unknown[] = any[]> extends DraftAssistant<Model, ContainerModel> { protected assistants: AssistantsIn<ComposedModels, Model>; protected creationClosure: CreationClosure<Model, ComposedModels>; static with<Model = any, ContainerModel = any, ComposedModels extends unknown[] = any[]>(assistants: AssistantsIn<ComposedModels, Model>, creationClosure: CreationClosure<Model, ComposedModels>, modelFromContainer: ModelFromContainer<Model, ContainerModel>, assertionIds: LabelId[]): SectionDraftAssistant<Model, ContainerModel, ComposedModels>; static topLevelContainerWith<Model = any, ComposedModels extends unknown[] = any[]>(assistants: AssistantsIn<ComposedModels, Model>, creationClosure: CreationClosure<Model, ComposedModels>, assertionIds?: LabelId[]): SectionDraftAssistant<Model, unknown, ComposedModels>; constructor(assistants: AssistantsIn<ComposedModels, Model>, creationClosure: CreationClosure<Model, ComposedModels>, modelFromContainer: ModelFromContainer<Model, ContainerModel>, assertionIds: LabelId[]); createModel(): Model; setModel(newModel: Model): void; resetModel(): void; /** * @category Error handling */ handleError(possibleCreateModelError: unknown): void; /** * @category Error handling */ routeBrokenRulesOf(aRulesBrokenError: RulesBroken): void; /** * @category Error handling */ routeBrokenRule(brokenRule: LabeledRule): void; protected routeNotHandledByThisBrokenRule(brokenRule: LabeledRule): void; protected addBrokenRuleToAll(assistantsHandlingAssertion: DraftAssistant<unknown, Model>[], brokenRule: LabeledRule): void; protected assistantsHandling(assertion: LabeledRule): DraftAssistant<unknown, Model>[]; protected createComposedModels(): ComposedModels; } //# sourceMappingURL=SectionDraftAssistant.d.ts.map