self-assert
Version:
A small TypeScript library for designing models with built-in validity.
46 lines • 2.74 kB
TypeScript
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